zs 1 年間 前
コミット
dd3e5fa4f0

+ 22 - 13
src/controller/core/course.controller.ts

@@ -1,7 +1,7 @@
 import { Body, Controller, Del, Get, Inject, Param, Post, Query } from '@midwayjs/decorator';
 import { BaseController } from 'free-midway-component';
 import { CourseService } from '../../service/core/course.service';
-import { CDTO_course, CVO_course, FVO_course,QDTO_course, QVO_course, UDTO_course, UVAO_course } from '../../interface/core/course.interface';
+import { CDTO_course, CVO_course, FVO_course, QDTO_course, QVO_course, UDTO_course, UVAO_course } from '../../interface/core/course.interface';
 import { ApiResponse, ApiTags, ApiQuery } from '@midwayjs/swagger';
 import { Validate } from '@midwayjs/validate';
 @ApiTags(['课程'])
@@ -10,15 +10,18 @@ export class CourseController extends BaseController {
   @Inject()
   service: CourseService;
 
-
-@Post('/') @Validate() @ApiResponse({ type: CVO_course })
+  @Post('/')
+  @Validate()
+  @ApiResponse({ type: CVO_course })
   async create(@Body() data: CDTO_course) {
     const dbData = await this.service.create(data);
     const result = new CVO_course(dbData);
     return result;
   }
-@Get('/')@ApiQuery({name:'query'})@ApiResponse({ type: QVO_course })
-  async query(@Query() filter:QDTO_course, @Query('skip') skip: number,@Query('limit') limit: number){
+  @Get('/')
+  @ApiQuery({ name: 'query' })
+  @ApiResponse({ type: QVO_course })
+  async query(@Query() filter: QDTO_course, @Query('skip') skip: number, @Query('limit') limit: number) {
     const list = await this.service.query(filter, { skip, limit });
     const data = [];
     for (const i of list) {
@@ -29,23 +32,32 @@ export class CourseController extends BaseController {
     return { data, total };
   }
 
+  @Get('/list')
+  async list() {
+    const list = await this.service.list(this.ctx.filter);
+    const data = list.data;
+    const total = list.total;
+    return { data, total };
+  }
 
-@Get('/:id')@ApiResponse({ type: FVO_course })
+  @Get('/:id')
+  @ApiResponse({ type: FVO_course })
   async fetch(@Param('id') id: string) {
     const data = await this.service.fetch(id);
     const result = new FVO_course(data);
     return result;
   }
 
-
-@Post('/:id')@Validate()@ApiResponse({ type: UVAO_course })
+  @Post('/:id')
+  @Validate()
+  @ApiResponse({ type: UVAO_course })
   async update(@Param('id') id: string, @Body() body: UDTO_course) {
     const result = await this.service.updateOne(id, body);
     return result;
   }
 
-
-@Del('/:id')@Validate()
+  @Del('/:id')
+  @Validate()
   async delete(@Param('id') id: string) {
     await this.service.delete(id);
     return 'ok';
@@ -54,14 +66,11 @@ export class CourseController extends BaseController {
     throw new Error('Method not implemented.');
   }
 
-
   async updateMany(...args: any[]) {
     throw new Error('Method not implemented.');
   }
 
-
   async deleteMany(...args: any[]) {
     throw new Error('Method not implemented.');
   }
 }
-

+ 19 - 0
src/service/core/course.service.ts

@@ -3,9 +3,28 @@ import { InjectEntityModel } from '@midwayjs/typegoose';
 import { ReturnModelType } from '@typegoose/typegoose';
 import { BaseService } from 'free-midway-component';
 import { Course } from '../../entity/core/course.entity';
+import { get } from 'lodash';
+import { Teacher } from '../../entity/core/teacher.entity';
 type modelType = ReturnModelType<typeof Course>;
 @Provide()
 export class CourseService extends BaseService<modelType> {
   @InjectEntityModel(Course)
   model: modelType;
+
+  @InjectEntityModel(Teacher)
+  tModel: ReturnModelType<typeof Teacher>;
+
+  // 列表
+  async list(query) {
+    const { skip = 0, limit = 0, ...info } = query;
+    const data = await this.model.find(info, { meta: 0, __v: 0 }).skip(skip).limit(limit).lean();
+    for (const val of data) {
+      if (get(val, 'teacher')) {
+        const userData = await this.tModel.findById(val.teacher).lean();
+        if (userData) Object.assign(val, { teacher_name: userData.nick_name, teacher_phone: userData.phone });
+      }
+    }
+    const total = await this.model.count(info);
+    return { data, total };
+  }
 }

+ 1 - 0
src/service/core/opinion.service.ts

@@ -10,6 +10,7 @@ type modelType = ReturnModelType<typeof Opinion>;
 export class OpinionService extends BaseService<modelType> {
   @InjectEntityModel(Opinion)
   model: modelType;
+
   @InjectEntityModel(Teacher)
   tModel: ReturnModelType<typeof Teacher>;