feat(users): 新增围度分析报表接口
- 添加 dayjs 依赖用于日期处理 - 新增 GetBodyMeasurementAnalysisDto 和 GetBodyMeasurementAnalysisResponseDto - 支持按周、月、年三种时间范围统计围度变化趋势 - 实现最近数据点匹配算法,返回各围度类型最接近时间点的测量值
This commit is contained in:
@@ -34,7 +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 { UpdateBodyMeasurementDto, UpdateBodyMeasurementResponseDto, GetBodyMeasurementHistoryResponseDto, GetBodyMeasurementAnalysisDto, GetBodyMeasurementAnalysisResponseDto } from './dto/body-measurement.dto';
|
||||
|
||||
import { Public } from '../common/decorators/public.decorator';
|
||||
import { CurrentUser } from '../common/decorators/current-user.decorator';
|
||||
@@ -378,4 +378,26 @@ export class UsersController {
|
||||
return this.usersService.getBodyMeasurementHistory(user.sub, measurementType as any);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户围度分析报表
|
||||
*/
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('body-measurements/analysis')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: '获取用户围度分析报表' })
|
||||
@ApiQuery({
|
||||
name: 'period',
|
||||
required: true,
|
||||
description: '时间范围 (week: 按周, month: 按月, year: 按年)',
|
||||
enum: ['week', 'month', 'year']
|
||||
})
|
||||
@ApiResponse({ status: 200, description: '成功获取围度分析报表', type: GetBodyMeasurementAnalysisResponseDto })
|
||||
async getBodyMeasurementAnalysis(
|
||||
@CurrentUser() user: AccessTokenPayload,
|
||||
@Query('period') period: 'week' | 'month' | 'year',
|
||||
): Promise<GetBodyMeasurementAnalysisResponseDto> {
|
||||
this.logger.log(`获取用户围度分析报表 - 用户ID: ${user.sub}, 时间范围: ${period}`);
|
||||
return this.usersService.getBodyMeasurementAnalysis(user.sub, period);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user