"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GeneratedNewsController = void 0; const openapi = require("@nestjs/swagger"); const common_1 = require("@nestjs/common"); const swagger_1 = require("@nestjs/swagger"); const api_1 = require("../../app/common/api"); const typeorm_1 = require("@nestjs/typeorm"); const typeorm_2 = require("typeorm"); const api_optional_decorator_1 = require("../../app/common/decorator/api_optional.decorator"); const class_validator_1 = require("class-validator"); const order_by_enum_1 = require("../../app/common/enum/order_by.enum"); const expression_enum_1 = require("../../app/common/enum/expression.enum"); const class_transformer_1 = require("class-transformer"); const news_model_1 = require("../../model/news.model"); const ExtraExp = { eq: (k, v) => { return (0, typeorm_2.Equal)(v); }, neq: (k, v) => { return (0, typeorm_2.Not)(v); }, gt: (k, v) => { return (0, typeorm_2.MoreThan)(v); }, egt: (k, v) => { return (0, typeorm_2.MoreThanOrEqual)(v); }, lt: (k, v) => { return (0, typeorm_2.LessThan)(v); }, elt: (k, v) => { return (0, typeorm_2.LessThanOrEqual)(v); }, between: (k, v) => { const p = Array.isArray(v) ? v : `${v}`.split(','); if (p.length < 2) { return undefined; } if (typeof p[1] == 'undefined') { throw new common_1.BadRequestException({ message: k + '字段,between查询参数错误需要用逗号分割', }); } return (0, typeorm_2.Between)(p[0], p[1]); }, 'not between': (k, v) => { const p = Array.isArray(v) ? v : `${v}`.split(','); if (p.length < 2) { return undefined; } if (typeof p[1] == 'undefined') { throw new common_1.BadRequestException({ message: k + '字段,between查询参数错误需要用逗号分割', }); } return (0, typeorm_2.Not)((0, typeorm_2.Between)(p[0], p[1])); }, in: (k, v) => { if (!Array.isArray(v)) { v = `${v}`.split(','); } return (0, typeorm_2.In)(v); }, 'not in': (k, v) => { if (!Array.isArray(v)) { v = `${v}`.split(','); } return (0, typeorm_2.Not)((0, typeorm_2.In)(v)); }, like: (k, v) => { return (0, typeorm_2.Like)(`%${v}%`); }, slike: (k, v) => { return (0, typeorm_2.Like)(`${v}%`); }, elike: (k, v) => { return (0, typeorm_2.Like)(`${v}%`); }, }; class GeneratedNewsFindOrderDto { id; createTime; updateTime; deleteTime; categoryId; coverImage; video; title; content; publishTime; readCount; type; isRecommended; isHeadline; isShow; } __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: 'ID', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "id", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '创建时间', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "createTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '更新时间', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "updateTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '删除时间', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "deleteTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '资讯分类 ID', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "categoryId", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '封面图', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "coverImage", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '视频链接', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "video", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '标题', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "title", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '图文资讯内容', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "content", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '发布时间', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "publishTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '阅读数量', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "readCount", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '类型:1=图文,2=视频', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "type", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '是否推荐:0=否,1=是', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "isRecommended", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '是否头条:0=否,1=是', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "isHeadline", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '是否展示:0=否,1=是', enum: order_by_enum_1.OrderBy }), (0, class_validator_1.IsEnum)(order_by_enum_1.OrderBy), __metadata("design:type", String) ], GeneratedNewsFindOrderDto.prototype, "isShow", void 0); class GeneratedNewsFindRelationDto { category; } __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '' }), (0, class_validator_1.IsBoolean)(), __metadata("design:type", Boolean) ], GeneratedNewsFindRelationDto.prototype, "category", void 0); class GeneratedNewsFindExpressionDto { id; createTime; updateTime; deleteTime; categoryId; coverImage; video; title; content; publishTime; readCount; type; isRecommended; isHeadline; isShow; } __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: 'ID', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "id", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '创建时间', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "createTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '更新时间', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "updateTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '删除时间', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "deleteTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '资讯分类 ID', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "categoryId", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '封面图', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "coverImage", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '视频链接', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "video", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '标题', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "title", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '图文资讯内容', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "content", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '发布时间', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "publishTime", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '阅读数量', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "readCount", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '类型:1=图文,2=视频', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "type", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '是否推荐:0=否,1=是', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "isRecommended", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '是否头条:0=否,1=是', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "isHeadline", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '是否展示:0=否,1=是', enum: expression_enum_1.Expression }), (0, class_validator_1.IsEnum)(expression_enum_1.Expression), __metadata("design:type", String) ], GeneratedNewsFindExpressionDto.prototype, "isShow", void 0); class GeneratedNewsFindExtraDto { expression; order; relations; } __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '查询表达式', example: { "id": "gt" }, type: GeneratedNewsFindExpressionDto }), (0, class_transformer_1.Type)(() => GeneratedNewsFindExpressionDto), (0, class_validator_1.ValidateNested)(), __metadata("design:type", GeneratedNewsFindExpressionDto) ], GeneratedNewsFindExtraDto.prototype, "expression", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '指定字段排序', example: { "id": "desc" }, type: [GeneratedNewsFindOrderDto], }), (0, class_validator_1.IsArray)(), (0, class_transformer_1.Type)(() => GeneratedNewsFindOrderDto), (0, class_validator_1.ValidateNested)({ each: true }), __metadata("design:type", Array) ], GeneratedNewsFindExtraDto.prototype, "order", void 0); __decorate([ (0, api_optional_decorator_1.ApiOptional)({ description: '查询关联数据', type: GeneratedNewsFindRelationDto, }), (0, class_transformer_1.Type)(() => GeneratedNewsFindRelationDto), (0, class_validator_1.ValidateNested)(), __metadata("design:type", GeneratedNewsFindRelationDto) ], GeneratedNewsFindExtraDto.prototype, "relations", void 0); class GeneratedNewsFindWhereDto { id; createTime; updateTime; deleteTime; categoryId; coverImage; video; title; content; publishTime; readCount; type; isRecommended; isHeadline; isShow; } __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: 'ID' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "id", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '创建时间' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "createTime", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '更新时间' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "updateTime", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '删除时间' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "deleteTime", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '资讯分类 ID' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "categoryId", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '封面图' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "coverImage", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '视频链接' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "video", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '标题' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "title", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '图文资讯内容' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "content", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '发布时间' }), (0, class_validator_1.Allow)(), __metadata("design:type", String) ], GeneratedNewsFindWhereDto.prototype, "publishTime", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '阅读数量' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "readCount", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '类型:1=图文,2=视频' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "type", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '是否推荐:0=否,1=是' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "isRecommended", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '是否头条:0=否,1=是' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "isHeadline", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '是否展示:0=否,1=是' }), (0, class_validator_1.Allow)(), __metadata("design:type", Number) ], GeneratedNewsFindWhereDto.prototype, "isShow", void 0); class GeneratedNewsFindDto { paginated; where; extra; } __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '分页', type: api_1.PaginatedDto }), (0, class_transformer_1.Type)(() => api_1.PaginatedDto), (0, class_validator_1.ValidateNested)(), __metadata("design:type", api_1.PaginatedDto) ], GeneratedNewsFindDto.prototype, "paginated", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '查询条件', type: GeneratedNewsFindWhereDto }), (0, class_transformer_1.Type)(() => GeneratedNewsFindWhereDto), (0, class_validator_1.ValidateNested)(), __metadata("design:type", GeneratedNewsFindWhereDto) ], GeneratedNewsFindDto.prototype, "where", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '额外', type: GeneratedNewsFindExtraDto }), (0, class_transformer_1.Type)(() => GeneratedNewsFindExtraDto), (0, class_validator_1.ValidateNested)(), __metadata("design:type", GeneratedNewsFindExtraDto) ], GeneratedNewsFindDto.prototype, "extra", void 0); class GeneratedNewsCreateDto extends (0, swagger_1.OmitType)(news_model_1.NewsModel, [ 'id', 'createTime', 'updateTime', 'deleteTime', 'category', ]) { } class GeneratedNewsUpdateDto extends (0, swagger_1.PartialType)(GeneratedNewsCreateDto) { } class GeneratedNewsDetailWhereDto extends (0, swagger_1.PartialType)((0, swagger_1.OmitType)(GeneratedNewsFindWhereDto, ['id'])) { } class GeneratedNewsDetailDto { where; extra; } __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '查询条件', type: GeneratedNewsDetailWhereDto }), (0, class_validator_1.Allow)(), __metadata("design:type", GeneratedNewsDetailWhereDto) ], GeneratedNewsDetailDto.prototype, "where", void 0); __decorate([ (0, swagger_1.ApiPropertyOptional)({ description: '额外', type: GeneratedNewsFindExtraDto }), (0, class_validator_1.Allow)(), __metadata("design:type", GeneratedNewsFindExtraDto) ], GeneratedNewsDetailDto.prototype, "extra", void 0); const identity = 'userId'; const identityExist = false; let GeneratedNewsController = class GeneratedNewsController { repos; constructor(repos) { this.repos = repos; } async list(dto) { const page = dto.paginated?.page || 1; const size = dto.paginated?.size || 15; const skip = (page - 1) * size; let where; if (dto.extra?.expression && dto.where) { where = Object.fromEntries(Object.entries(dto.where).map(([key, value]) => { const expression = dto.extra?.expression[key]; if (typeof value != 'undefined' && value != '' && value != null) { if (expression && ExtraExp[expression]) { value = ExtraExp[expression](key, value); } } if (expression == expression_enum_1.Expression.between && (!value || (Array.isArray(value) && value.length < 2))) { value = undefined; } return [key, value]; })); } else { where = (dto.where || {}); } where = Object.fromEntries(Object.entries(where).filter(([_, v]) => { if (typeof v == 'undefined') { return false; } if (typeof v == 'string' && !v) { return false; } return true; })); const o = dto.extra?.order && dto.extra?.order.length ? dto.extra?.order : [{ id: 'desc' }]; const order = Object.fromEntries(o.map((it) => Object.keys(it).map((key) => [key, it[key]]))[0]); const list = await this.repos.find({ where, order, skip: skip, take: size, relations: typeof dto.extra?.relations == 'object' ? Object.keys(dto.extra?.relations).filter((it) => dto.extra?.relations[it]) : [], }); const count = await this.repos.count({ where: where, }); return api_1.Api.pagination(list, count); } async detail(id, dto) { const where = { id, ...dto.where, }; const item = await this.repos.findOne({ where, relations: typeof dto.extra?.relations == 'object' ? Object.keys(dto.extra?.relations).filter((it) => dto.extra?.relations[it]) : [], }); return api_1.Api.success(item); } }; exports.GeneratedNewsController = GeneratedNewsController; __decorate([ (0, common_1.Post)('list'), (0, swagger_1.ApiOperation)({ summary: '资讯列表' }), api_1.Api.ApiPaginatedResponse({ model: news_model_1.NewsModel, codeDescription: '200成功', }), openapi.ApiResponse({ status: 201 }), __param(0, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [GeneratedNewsFindDto]), __metadata("design:returntype", Promise) ], GeneratedNewsController.prototype, "list", null); __decorate([ (0, common_1.Post)('detail/:id'), (0, swagger_1.ApiParam)({ name: 'id', description: '资讯ID' }), (0, swagger_1.ApiOperation)({ summary: '资讯详情' }), api_1.Api.ApiResponse({ model: news_model_1.NewsModel, codeDescription: '200成功', }), openapi.ApiResponse({ status: 201 }), __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Number, GeneratedNewsDetailDto]), __metadata("design:returntype", Promise) ], GeneratedNewsController.prototype, "detail", null); exports.GeneratedNewsController = GeneratedNewsController = __decorate([ (0, common_1.Controller)('generated/news'), (0, swagger_1.ApiTags)('G资讯'), __param(0, (0, typeorm_1.InjectRepository)(news_model_1.NewsModel)), __metadata("design:paramtypes", [typeorm_2.Repository]) ], GeneratedNewsController); //# sourceMappingURL=generated_news.controller.js.map