소스 검색

赛事拓展

lrf 4 달 전
부모
커밋
45074383c4

+ 79 - 0
src/controller/match/matchExt.controller.ts

@@ -0,0 +1,79 @@
+import { MatchService } from '../../service/platform/match.service';
+import { CVO_match, FVO_match, QVO_match, UVAO_match } from '../../interface/platform/match.interface';
+import { ApiResponse, ApiTags, ApiQuery } from '@midwayjs/swagger';
+import { Validate } from '@midwayjs/validate';
+import { Controller, Inject, Get, Param, Post, Body, Del, Query } from '@midwayjs/core';
+import { get, omit, pick } from 'lodash';
+import { ServiceError, ErrorCode } from '../../error/service.error';
+import { BaseController } from '../../frame/BaseController';
+import { ServiceUtilService } from '../../service/serviceUtil.service';
+import { MatchExtService } from '../../service/match/matchExt.service';
+const namePrefix = '创新大赛拓展';
+@ApiTags(['创新大赛拓展'])
+@Controller('/matchExt', { tagName: namePrefix })
+export class MatchExtController implements BaseController {
+  @Inject()
+  service: MatchService;
+  @Inject()
+  serviceUtil: ServiceUtilService;
+  @Inject()
+  matchExtService: MatchExtService;
+  @Get('/')
+  @ApiTags('列表查询')
+  @ApiQuery({ name: 'query' })
+  @ApiResponse({ type: QVO_match })
+  async index(@Query() query: object) {
+    const qobj = omit(query, ['skip', 'limit']);
+    const others: any = pick(query, ['skip', 'limit']);
+    others.order = { order_num: 'ASC' };
+    const result = await this.service.query(qobj, others);
+    return result;
+  }
+
+  @Get('/:id')
+  @ApiTags('单查询')
+  @ApiResponse({ type: FVO_match })
+  async fetch(@Param('id') id: number) {
+    const data = await this.service.fetch({ id });
+    const result = new FVO_match(data);
+    return result;
+  }
+
+  @Post('/', { routerName: `创建${namePrefix}` })
+  @ApiTags('创建数据')
+  @Validate()
+  @ApiResponse({ type: CVO_match })
+  async create(@Body() data: object) {
+    return false;
+  }
+
+  @Post('/:id', { routerName: `修改${namePrefix}` })
+  @ApiTags('修改数据')
+  @Validate()
+  @ApiResponse({ type: UVAO_match })
+  async update(@Param('id') id: number, @Body() data: object) {
+    if (!id) throw new ServiceError(ErrorCode.ID_NOT_FOUND);
+    const result = await this.service.update({ id }, data);
+    await this.service.updateProject({ id }, data);
+    return result;
+  }
+
+  @Del('/:id', { routerName: `删除${namePrefix}` })
+  @ApiTags('删除数据')
+  @Validate()
+  async delete(@Param('id') id: number) {
+    if (!id) throw new ServiceError(ErrorCode.ID_NOT_FOUND);
+    const result = await this.service.delete({ id });
+    await this.service.deleteFlow(id);
+    return result;
+  }
+
+  @Get('/detail/:id')
+  @ApiResponse({ type: FVO_match })
+  async detail(@Param('id') id: string) {
+    let data = await this.service.fetch({ id });
+    data = await this.serviceUtil.fillOnwer(data);
+    data = await this.serviceUtil.fillCollection(data, 'match');
+    return data;
+  }
+}

+ 26 - 3
src/controller/platform/match.controller.ts

@@ -3,10 +3,11 @@ import { CVO_match, FVO_match, QVO_match, UVAO_match } from '../../interface/pla
 import { ApiResponse, ApiTags, ApiQuery } from '@midwayjs/swagger';
 import { Validate } from '@midwayjs/validate';
 import { Controller, Inject, Get, Param, Post, Body, Del, Query } from '@midwayjs/core';
-import { omit, pick } from 'lodash';
+import { get, omit, pick } from 'lodash';
 import { ServiceError, ErrorCode } from '../../error/service.error';
 import { BaseController } from '../../frame/BaseController';
 import { ServiceUtilService } from '../../service/serviceUtil.service';
+import { MatchExtService } from '../../service/match/matchExt.service';
 const namePrefix = '创新大赛';
 @ApiTags(['创新大赛'])
 @Controller('/match', { tagName: namePrefix })
@@ -15,6 +16,8 @@ export class MatchController implements BaseController {
   service: MatchService;
   @Inject()
   serviceUtil: ServiceUtilService;
+  @Inject()
+  matchExtService: MatchExtService;
   @Get('/')
   @ApiTags('列表查询')
   @ApiQuery({ name: 'query' })
@@ -41,7 +44,20 @@ export class MatchController implements BaseController {
   @Validate()
   @ApiResponse({ type: CVO_match })
   async create(@Body() data: object) {
-    const dbData = await this.service.create(data);
+    const extColumns = ['ext_info', 'ext_finals']
+    const matchData = omit(data, extColumns)
+    let extData = pick(data, extColumns)
+    const dbData = await this.service.create(matchData);
+    // 如果类型是4,需要特殊处理下,补充赛事拓展表
+    if (get(matchData, 'type') === '4') {
+      // 查查有没有拓展数据,有就不创建了
+      const match_id = dbData.id
+      const ed = await this.matchExtService.fetch({ match_id })
+      if (!ed) {
+        extData = { match_id, ...extData }
+        await this.matchExtService.create(extData)
+      }
+    }
     const result = new CVO_match(dbData);
     return result;
   }
@@ -52,8 +68,15 @@ export class MatchController implements BaseController {
   @ApiResponse({ type: UVAO_match })
   async update(@Param('id') id: number, @Body() data: object) {
     if (!id) throw new ServiceError(ErrorCode.ID_NOT_FOUND);
-    const result = await this.service.update({ id }, data);
+    const extColumns = ['ext_info', 'ext_finals']
+    const matchData = omit(data, extColumns)
+    let extData = pick(data, extColumns)
+    const result = await this.service.update({ id }, matchData);
     await this.service.updateProject({ id }, data);
+    // 如果类型是4,需要特殊处理下,补充赛事拓展表,不需要修改状态和赛事id
+    if (get(matchData, 'type') === '4') {
+      await this.matchExtService.update({ match_id: id }, extData)
+    }
     return result;
   }
 

+ 14 - 0
src/entity/match/matchExt.entity.ts

@@ -0,0 +1,14 @@
+import { Entity, Column } from 'typeorm';
+import { BaseModel } from '../../frame/BaseModel';
+//赛事
+@Entity('matchExt', { comment: '赛事拓展表' })
+export class MatchExt extends BaseModel {
+  @Column({ type: 'integer', comment: '赛事id' })
+  match_id: number;
+  @Column({ type: 'character varying', nullable: true, comment: '流程状态', default: '0' })
+  status: string;
+  @Column({ type: 'jsonb', nullable: true, comment: '报名信息设置' })
+  info: Array<any>;
+  @Column({ type: 'jsonb', nullable: true, comment: '决赛分数维度设置' })
+  finals: Array<any>;
+}

+ 10 - 0
src/service/match/matchExt.service.ts

@@ -0,0 +1,10 @@
+import { Provide } from '@midwayjs/core';
+import { InjectEntityModel } from '@midwayjs/typeorm';
+import { Repository } from 'typeorm';
+import { BaseServiceV2 } from '../../frame/BaseServiceV2';
+import { MatchExt } from '../../entity/match/matchExt.entity';
+@Provide()
+export class MatchExtService extends BaseServiceV2 {
+  @InjectEntityModel(MatchExt)
+  model: Repository<MatchExt>;
+}