From ffc0cd1d1301bdd68c1c2570e91452796f030c0b Mon Sep 17 00:00:00 2001 From: richarjiang Date: Fri, 22 Aug 2025 08:55:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E5=BF=83=E6=83=85?= =?UTF-8?q?=E6=89=93=E5=8D=A1=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将用户身份信息从字符串类型改为AccessTokenPayload对象,增强代码可读性和安全性。 - 移除心情打卡DTO中的metadata字段,简化数据结构,提升性能。 - 更新心情打卡服务,去除不必要的metadata处理逻辑,优化数据存储。 --- src/mood-checkins/dto/mood-checkin.dto.ts | 8 ---- .../models/mood-checkin.model.ts | 6 --- src/mood-checkins/mood-checkins.controller.ts | 37 ++++++++++--------- src/mood-checkins/mood-checkins.service.ts | 6 +-- 4 files changed, 20 insertions(+), 37 deletions(-) diff --git a/src/mood-checkins/dto/mood-checkin.dto.ts b/src/mood-checkins/dto/mood-checkin.dto.ts index e91b11a..09b8c47 100644 --- a/src/mood-checkins/dto/mood-checkin.dto.ts +++ b/src/mood-checkins/dto/mood-checkin.dto.ts @@ -46,14 +46,6 @@ export class CreateMoodCheckinDto { @IsDateString() checkinDate?: string; - @ApiProperty({ - description: '扩展数据', - required: false, - example: { tags: ['工作', '运动'], trigger: '完成重要项目' } - }) - @IsOptional() - @IsObject() - metadata?: Record; } export class UpdateMoodCheckinDto extends PartialType(CreateMoodCheckinDto) { diff --git a/src/mood-checkins/models/mood-checkin.model.ts b/src/mood-checkins/models/mood-checkin.model.ts index 1afb475..c664605 100644 --- a/src/mood-checkins/models/mood-checkin.model.ts +++ b/src/mood-checkins/models/mood-checkin.model.ts @@ -70,12 +70,6 @@ export class MoodCheckin extends Model { }) declare checkinDate: string; - @Column({ - type: DataType.JSON, - allowNull: true, - comment: '扩展数据(标签、触发事件等)', - }) - declare metadata: Record | null; @Column({ type: DataType.DATE, diff --git a/src/mood-checkins/mood-checkins.controller.ts b/src/mood-checkins/mood-checkins.controller.ts index ea8ebb7..4c88c74 100644 --- a/src/mood-checkins/mood-checkins.controller.ts +++ b/src/mood-checkins/mood-checkins.controller.ts @@ -12,6 +12,7 @@ import { } from './dto/mood-checkin.dto'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; import { CurrentUser } from '../common/decorators/current-user.decorator'; +import { AccessTokenPayload } from 'src/users/services/apple-auth.service'; @ApiTags('心情打卡') @ApiBearerAuth() @@ -29,10 +30,10 @@ export class MoodCheckinsController { @ApiResponse({ status: 401, description: '未授权' }) async create( @Body() createMoodCheckinDto: CreateMoodCheckinDto, - @CurrentUser('id') userId: string, + @CurrentUser() user: AccessTokenPayload, ): Promise { - this.logger.log(`用户 ${userId} 创建心情打卡: ${JSON.stringify(createMoodCheckinDto)}`); - return this.moodCheckinsService.create(createMoodCheckinDto, userId); + this.logger.log(`用户 ${user.sub} 创建心情打卡: ${JSON.stringify(createMoodCheckinDto)}`); + return this.moodCheckinsService.create(createMoodCheckinDto, user.sub); } @Put() @@ -44,10 +45,10 @@ export class MoodCheckinsController { @ApiResponse({ status: 404, description: '记录不存在' }) async update( @Body() updateMoodCheckinDto: UpdateMoodCheckinDto, - @CurrentUser('id') userId: string, + @CurrentUser() user: AccessTokenPayload, ): Promise { - this.logger.log(`用户 ${userId} 更新心情打卡: ${JSON.stringify(updateMoodCheckinDto)}`); - return this.moodCheckinsService.update(updateMoodCheckinDto, userId); + this.logger.log(`用户 ${user.sub} 更新心情打卡: ${JSON.stringify(updateMoodCheckinDto)}`); + return this.moodCheckinsService.update(updateMoodCheckinDto, user.sub); } @Delete() @@ -58,10 +59,10 @@ export class MoodCheckinsController { @ApiResponse({ status: 404, description: '记录不存在' }) async remove( @Body() removeMoodCheckinDto: RemoveMoodCheckinDto, - @CurrentUser('id') userId: string, + @CurrentUser() user: AccessTokenPayload, ): Promise { - this.logger.log(`用户 ${userId} 删除心情打卡: ${removeMoodCheckinDto.id}`); - return this.moodCheckinsService.remove(removeMoodCheckinDto, userId); + this.logger.log(`用户 ${user.sub} 删除心情打卡: ${removeMoodCheckinDto.id}`); + return this.moodCheckinsService.remove(removeMoodCheckinDto, user.sub); } @Get('daily') @@ -71,10 +72,10 @@ export class MoodCheckinsController { @ApiResponse({ status: 401, description: '未授权' }) async getDaily( @Query() query: GetMoodCheckinsQueryDto, - @CurrentUser('id') userId: string, + @CurrentUser() user: AccessTokenPayload, ): Promise { - this.logger.log(`用户 ${userId} 获取每日心情打卡: ${query.date || '今天'}`); - return this.moodCheckinsService.getDaily(userId, query.date); + this.logger.log(`用户 ${user.sub} 获取每日心情打卡: ${query.date || '今天'}`); + return this.moodCheckinsService.getDaily(user.sub, query.date); } @Get('history') @@ -84,10 +85,10 @@ export class MoodCheckinsController { @ApiResponse({ status: 401, description: '未授权' }) async getHistory( @Query() query: GetMoodHistoryQueryDto, - @CurrentUser('id') userId: string, + @CurrentUser() user: AccessTokenPayload, ): Promise { - this.logger.log(`用户 ${userId} 获取心情打卡历史: ${query.startDate} - ${query.endDate}`); - return this.moodCheckinsService.getHistory(userId, query); + this.logger.log(`用户 ${user.sub} 获取心情打卡历史: ${query.startDate} - ${query.endDate}`); + return this.moodCheckinsService.getHistory(user.sub, query); } @Get('statistics') @@ -98,9 +99,9 @@ export class MoodCheckinsController { async getStatistics( @Query('startDate') startDate: string, @Query('endDate') endDate: string, - @CurrentUser('id') userId: string, + @CurrentUser() user: AccessTokenPayload, ): Promise> { - this.logger.log(`用户 ${userId} 获取心情统计: ${startDate} - ${endDate}`); - return this.moodCheckinsService.getStatistics(userId, startDate, endDate); + this.logger.log(`用户 ${user.sub} 获取心情统计: ${startDate} - ${endDate}`); + return this.moodCheckinsService.getStatistics(user.sub, startDate, endDate); } } \ No newline at end of file diff --git a/src/mood-checkins/mood-checkins.service.ts b/src/mood-checkins/mood-checkins.service.ts index dffa02c..5ee1234 100644 --- a/src/mood-checkins/mood-checkins.service.ts +++ b/src/mood-checkins/mood-checkins.service.ts @@ -53,7 +53,6 @@ export class MoodCheckinsService { intensity: dto.intensity, description: dto.description || null, checkinDate, - metadata: dto.metadata || null, }); await this.activityLogsService.record({ @@ -104,10 +103,7 @@ export class MoodCheckinsService { record.checkinDate = dto.checkinDate; changes.checkinDate = dto.checkinDate; } - if (dto.metadata !== undefined) { - record.metadata = dto.metadata as any; - changes.metadata = dto.metadata; - } + await record.save();