feat(users): 添加用户每日健康数据步数字段,支持步数记录和更新

This commit is contained in:
richarjiang
2025-12-03 09:00:26 +08:00
parent c3b59752ee
commit 2ff2c58b43
3 changed files with 18 additions and 0 deletions

View File

@@ -59,6 +59,12 @@ export class UpdateDailyHealthDto {
@IsNumber() @IsNumber()
@Min(0) @Min(0)
stressLevel?: number; stressLevel?: number;
@ApiPropertyOptional({ description: '步数' })
@IsOptional()
@IsNumber()
@Min(0)
steps?: number;
} }
/** /**
@@ -98,6 +104,9 @@ export class DailyHealthDataDto {
@ApiPropertyOptional({ description: '压力 (ms保留一位小数)' }) @ApiPropertyOptional({ description: '压力 (ms保留一位小数)' })
stressLevel: number | null; stressLevel: number | null;
@ApiPropertyOptional({ description: '步数' })
steps: number | null;
@ApiProperty({ description: '创建时间' }) @ApiProperty({ description: '创建时间' })
createdAt: Date; createdAt: Date;

View File

@@ -101,6 +101,13 @@ export class UserDailyHealth extends Model {
}) })
declare stressLevel: number | null; declare stressLevel: number | null;
@Column({
type: DataType.INTEGER,
allowNull: true,
comment: '步数',
})
declare steps: number | null;
@Column({ @Column({
type: DataType.DATE, type: DataType.DATE,
defaultValue: DataType.NOW, defaultValue: DataType.NOW,

View File

@@ -3027,6 +3027,7 @@ export class UsersService {
if (updateDto.sleepMinutes !== undefined) updateFields.sleepMinutes = updateDto.sleepMinutes; if (updateDto.sleepMinutes !== undefined) updateFields.sleepMinutes = updateDto.sleepMinutes;
if (updateDto.bloodOxygen !== undefined) updateFields.bloodOxygen = updateDto.bloodOxygen; if (updateDto.bloodOxygen !== undefined) updateFields.bloodOxygen = updateDto.bloodOxygen;
if (updateDto.stressLevel !== undefined) updateFields.stressLevel = Math.round(updateDto.stressLevel * 10) / 10; // 保留一位小数 if (updateDto.stressLevel !== undefined) updateFields.stressLevel = Math.round(updateDto.stressLevel * 10) / 10; // 保留一位小数
if (updateDto.steps !== undefined) updateFields.steps = updateDto.steps;
// 使用 upsert 实现创建或更新 // 使用 upsert 实现创建或更新
const [record, created] = await this.userDailyHealthModel.findOrCreate({ const [record, created] = await this.userDailyHealthModel.findOrCreate({
@@ -3060,6 +3061,7 @@ export class UsersService {
sleepMinutes: record.sleepMinutes, sleepMinutes: record.sleepMinutes,
bloodOxygen: record.bloodOxygen, bloodOxygen: record.bloodOxygen,
stressLevel: record.stressLevel, stressLevel: record.stressLevel,
steps: record.steps,
createdAt: record.createdAt, createdAt: record.createdAt,
updatedAt: record.updatedAt, updatedAt: record.updatedAt,
}, },