返回 AiToEarn
adminTask.controller.ts
根目录 / project / aitoearn-electron / server / src / modules / task / adminTask.controller.ts
1 /*
2 * @Author: nevin
3 * @Date: 2025-02-20 16:23:34
4 * @LastEditTime: 2025-04-27 16:10:15
5 * @LastEditors: nevin
6 * @Description: 管理端任务管理
7 */
8 import {
9 Body,
10 Controller,
11 Delete,
12 Get,
13 Param,
14 Post,
15 Put,
16 Query,
17 } from '@nestjs/common';
18 import { ApiOperation, ApiTags } from '@nestjs/swagger';
19 import { Manager } from '../../auth/manager.guard';
20 import { ApiResult } from '../../common/decorators/api-result.decorator';
21 import { Task, TaskStatus } from '../../db/schema/task.schema';
22 import { CreateTaskDto } from './dto/create-task.dto';
23 import { QueryTaskDto } from './dto/query-task.dto';
24 import { QueryVerificationDto } from './dto/query-verification.dto';
25 import {
26 ActionTaskFileDto,
27 UpdateTaskDto,
28 UpTaskStatusDto,
29 } from './dto/task.dto';
30 import { UserTaskService } from './user-task.service';
31 import { AdminTaskService } from './adminTask.service';
32 import { PagerDto } from 'src/common/dto/pager.dto';
33 import { ActionTaskMaterialDto } from './dto/adminTask.dto';
34 import { AppHttpException } from 'src/filters/http-exception.filter';
35 import { ErrHttpBack } from 'src/filters/http-exception.back-code';
36
37 @ApiTags('admin/tasks - 任务管理')
38 @Controller('admin/tasks')
39 @Manager()
40 export class AdminTaskController {
41 constructor(
42 private readonly userTaskService: UserTaskService,
43 private readonly adminTaskService: AdminTaskService,
44 ) {}
45
46 @ApiOperation({ summary: '创建任务' })
47 @ApiResult({ type: Task })
48 @Post('create')
49 async createTask(@Body() body: CreateTaskDto) {
50 return this.adminTaskService.create(body);
51 }
52
53 @ApiOperation({ summary: '更新任务' })
54 @ApiResult({ type: Task })
55 @Put('update/:id')
56 async updateTask(@Param('id') id: string, @Body() body: UpdateTaskDto) {
57 return this.adminTaskService.update(id, body);
58 }
59
60 @ApiOperation({ summary: '添加任务附件' })
61 @Post('file/:id')
62 async addTaskFile(@Param('id') id: string, @Body() body: ActionTaskFileDto) {
63 return this.adminTaskService.addTaskFile(id, body);
64 }
65
66 @ApiOperation({ summary: '删除任务附件' })
67 @Delete('file/:id')
68 async delTaskFile(@Param('id') id: string, @Body() body: ActionTaskFileDto) {
69 return this.adminTaskService.deleteTaskFile(id, body);
70 }
71
72 @ApiOperation({ summary: '删除任务' })
73 @Delete('delete/:id')
74 @ApiResult({ type: Boolean })
75 async deleteTask(@Param('id') id: string) {
76 return this.adminTaskService.delTask(id);
77 }
78
79 // 更新任务状态
80 @Put('status/:id/:status')
81 @ApiResult({ type: Boolean })
82 async upTaskStatus(@Param() param: UpTaskStatusDto) {
83 const tastInfo = await this.adminTaskService.findOne(param.id);
84 return this.adminTaskService.updateStatus(tastInfo, param.status);
85 }
86
87 @ApiOperation({ summary: '获取任务列表' })
88 @ApiResult({ type: [Task], isPage: true })
89 @Get('list')
90 async getTasks(@Query() query: QueryTaskDto) {
91 return this.adminTaskService.findAll(query);
92 }
93
94 @ApiOperation({ summary: '获取任务详情' })
95 @ApiResult({ type: Task })
96 @Get('info/:id')
97 async getTask(@Param('id') id: string) {
98 return this.adminTaskService.findOne(id);
99 }
100
101 @ApiOperation({ summary: '获取待验证任务列表' })
102 @ApiResult({ type: [Task], isPage: true })
103 @Get('verification/pending')
104 async getTasksForVerification(@Query() query: QueryVerificationDto) {
105 return this.userTaskService.getTasksForVerification(query);
106 }
107
108 // 获取任务素材列表
109 @Get('material/list/:taskId')
110 async getMaterialList(
111 @Param('taskId') taskId: string,
112 @Query() query: PagerDto,
113 ) {
114 return this.adminTaskService.findTaskMaterialList(taskId, query);
115 }
116
117 // 添加任务素材列表
118 @Post('material')
119 async addTaskMaterial(@Body() body: ActionTaskMaterialDto) {
120 return this.adminTaskService.createTaskMaterial(body);
121 }
122
123 // 更新任务素材
124 @Put('material/:id')
125 async upTaskMaterial(
126 @Param('id') id: string,
127 @Body() body: ActionTaskMaterialDto,
128 ) {
129 const info = await this.adminTaskService.getTaskMaterialById(id);
130 if (!info) throw new AppHttpException(ErrHttpBack.fail);
131
132 return this.adminTaskService.upTaskMaterial(id, body);
133 }
134
135 // 删除任务素材
136 @Delete('material/:id')
137 async deleteTaskMaterial(@Param('id') id: string) {
138 return this.adminTaskService.deleteTaskMaterial(id);
139 }
140 }
141
141 lines TYPESCRIPT