新增打卡模块,包括打卡控制器、服务、模型及数据传输对象,更新应用模块以引入新模块
This commit is contained in:
59
src/checkins/checkins.controller.ts
Normal file
59
src/checkins/checkins.controller.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { Body, Controller, HttpCode, HttpStatus, Post, Put, Delete, UseGuards, Get, Query } from '@nestjs/common';
|
||||
import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
|
||||
import { CheckinsService } from './checkins.service';
|
||||
import { CreateCheckinDto, UpdateCheckinDto, CompleteCheckinDto, RemoveCheckinDto, CheckinResponseDto, GetDailyCheckinsQueryDto } from './dto/checkin.dto';
|
||||
import { JwtAuthGuard } from '../common/guards/jwt-auth.guard';
|
||||
import { CurrentUser } from '../common/decorators/current-user.decorator';
|
||||
import { AccessTokenPayload } from '../users/services/apple-auth.service';
|
||||
|
||||
@ApiTags('checkins')
|
||||
@Controller('checkins')
|
||||
@UseGuards(JwtAuthGuard)
|
||||
export class CheckinsController {
|
||||
constructor(private readonly checkinsService: CheckinsService) { }
|
||||
|
||||
@Post('create')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '创建打卡' })
|
||||
@ApiBody({ type: CreateCheckinDto })
|
||||
@ApiResponse({ type: CheckinResponseDto })
|
||||
async create(@Body() dto: CreateCheckinDto, @CurrentUser() user: AccessTokenPayload): Promise<CheckinResponseDto> {
|
||||
return this.checkinsService.create({ ...dto, userId: user.sub });
|
||||
}
|
||||
|
||||
@Put('update')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '更新打卡' })
|
||||
@ApiBody({ type: UpdateCheckinDto })
|
||||
@ApiResponse({ type: CheckinResponseDto })
|
||||
async update(@Body() dto: UpdateCheckinDto, @CurrentUser() user: AccessTokenPayload): Promise<CheckinResponseDto> {
|
||||
return this.checkinsService.update(dto, user.sub);
|
||||
}
|
||||
|
||||
@Post('complete')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '完成打卡' })
|
||||
@ApiBody({ type: CompleteCheckinDto })
|
||||
@ApiResponse({ type: CheckinResponseDto })
|
||||
async complete(@Body() dto: CompleteCheckinDto, @CurrentUser() user: AccessTokenPayload): Promise<CheckinResponseDto> {
|
||||
return this.checkinsService.complete(dto, user.sub);
|
||||
}
|
||||
|
||||
@Delete('remove')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '删除打卡' })
|
||||
@ApiBody({ type: RemoveCheckinDto })
|
||||
@ApiResponse({ type: CheckinResponseDto })
|
||||
async remove(@Body() dto: RemoveCheckinDto, @CurrentUser() user: AccessTokenPayload): Promise<CheckinResponseDto> {
|
||||
return this.checkinsService.remove(dto, user.sub);
|
||||
}
|
||||
|
||||
@Get('daily')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '按天获取打卡列表' })
|
||||
async getDaily(@Query() query: GetDailyCheckinsQueryDto, @CurrentUser() user: AccessTokenPayload): Promise<CheckinResponseDto> {
|
||||
return this.checkinsService.getDaily(user.sub, query.date);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user