feat:更新计算睡眠时长

This commit is contained in:
2026-03-15 23:12:26 +08:00
parent 1b56f33a02
commit 1a4b1a8639
6 changed files with 89 additions and 16 deletions

View File

@@ -10,6 +10,7 @@ import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@Getter
@Setter
@@ -29,12 +30,12 @@ public class HealthRecordDto {
private Double weight;
@Schema(description = "睡眠开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime sleepStartTime;
@JsonFormat(pattern = "HH:mm", timezone = "GMT+8")
private LocalTime sleepStartTime;
@Schema(description = "睡眠结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime sleepEndTime;
@JsonFormat(pattern = "HH:mm", timezone = "GMT+8")
private LocalTime sleepEndTime;
@Schema(description = "睡眠时长")
private Double sleepDuration;

View File

@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@Data
@EqualsAndHashCode(callSuper = true)
@@ -23,10 +24,10 @@ public class HealthRecord extends AbstractEntity {
private Double weight;
@TableField("sleep_start_time")
private LocalDateTime sleepStartTime;
private LocalTime sleepStartTime;
@TableField("sleep_end_time")
private LocalDateTime sleepEndTime;
private LocalTime sleepEndTime;
@TableField("sleep_duration")
private Double sleepDuration;

View File

@@ -40,7 +40,6 @@ public class HealthServiceImpl implements HealthService {
@Override
public Boolean update(Long id, HealthRecordDto dto) {
if (id == 0) {
setSleepDuration(dto);
return healthRecordMapper.insert(healthConverter.toEntity(dto)) == 1;
} else {
if ((dto.getSportProject() == null || dto.getSportProject().isEmpty())
@@ -48,19 +47,10 @@ public class HealthServiceImpl implements HealthService {
&& dto.getSportDuration() == 0 && dto.getWeight() == 0) {
return healthRecordMapper.deleteById(id) == 1;
} else {
setSleepDuration(dto);
HealthRecord healthRecord = healthConverter.toEntity(dto);
healthRecord.setId(id);
return healthRecordMapper.updateById(healthRecord) == 1;
}
}
}
private void setSleepDuration(HealthRecordDto dto) {
LocalDateTime startTime = dto.getSleepStartTime();
LocalDateTime endTime = dto.getSleepEndTime();
if (startTime != null && endTime != null) {
dto.setSleepDuration(Duration.between(startTime, endTime).toMinutes() / 60.0);
}
}
}