feat(users): 添加身体围度测量功能
新增用户身体围度的完整功能模块,包括数据库迁移、模型定义、API接口和历史记录追踪。 支持胸围、腰围、上臀围、臂围、大腿围、小腿围六项身体围度指标的管理。 - 添加数据库迁移脚本,扩展用户档案表字段 - 创建围度历史记录表用于数据追踪 - 实现围度数据的更新和历史查询API - 添加数据验证和错误处理机制
This commit is contained in:
@@ -34,6 +34,7 @@ import { AppStoreServerNotificationDto, ProcessNotificationResponseDto } from '.
|
||||
import { RestorePurchaseDto, RestorePurchaseResponseDto } from './dto/restore-purchase.dto';
|
||||
import { GetUserActivityHistoryResponseDto } from './dto/user-activity.dto';
|
||||
import { UpdateWeightRecordDto, WeightRecordResponseDto, DeleteWeightRecordResponseDto } from './dto/weight-record.dto';
|
||||
import { UpdateBodyMeasurementDto, UpdateBodyMeasurementResponseDto, GetBodyMeasurementHistoryResponseDto } from './dto/body-measurement.dto';
|
||||
|
||||
import { Public } from '../common/decorators/public.decorator';
|
||||
import { CurrentUser } from '../common/decorators/current-user.decorator';
|
||||
@@ -341,4 +342,40 @@ export class UsersController {
|
||||
return this.usersService.getUserActivityHistory(user.sub);
|
||||
}
|
||||
|
||||
// ==================== 围度相关接口 ====================
|
||||
|
||||
/**
|
||||
* 更新用户围度信息
|
||||
*/
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Put('body-measurements')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '更新用户围度信息' })
|
||||
@ApiBody({ type: UpdateBodyMeasurementDto })
|
||||
@ApiResponse({ status: 200, description: '成功更新围度信息', type: UpdateBodyMeasurementResponseDto })
|
||||
async updateBodyMeasurements(
|
||||
@Body() updateBodyMeasurementDto: UpdateBodyMeasurementDto,
|
||||
@CurrentUser() user: AccessTokenPayload,
|
||||
): Promise<UpdateBodyMeasurementResponseDto> {
|
||||
this.logger.log(`更新用户围度信息 - 用户ID: ${user.sub}, 数据: ${JSON.stringify(updateBodyMeasurementDto)}`);
|
||||
return this.usersService.updateBodyMeasurements(user.sub, updateBodyMeasurementDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户围度历史记录
|
||||
*/
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('body-measurements/history')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '获取用户围度历史记录' })
|
||||
@ApiQuery({ name: 'measurementType', required: false, description: '围度类型筛选' })
|
||||
@ApiResponse({ status: 200, description: '成功获取围度历史记录', type: GetBodyMeasurementHistoryResponseDto })
|
||||
async getBodyMeasurementHistory(
|
||||
@CurrentUser() user: AccessTokenPayload,
|
||||
@Query('measurementType') measurementType?: string,
|
||||
): Promise<GetBodyMeasurementHistoryResponseDto> {
|
||||
this.logger.log(`获取用户围度历史记录 - 用户ID: ${user.sub}, 围度类型: ${measurementType || '全部'}`);
|
||||
return this.usersService.getBodyMeasurementHistory(user.sub, measurementType as any);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user