From fcaef1409d283277e71e41548321b20f1753f3eb Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Mon, 17 Nov 2025 19:58:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=9D=A1=E7=9C=A0=E6=97=B6=E9=97=B4=E5=AD=98?= =?UTF-8?q?=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cxx/home/dto/health/HealthRecordDto.java | 14 ++++++++++++- .../com/cxx/home/entity/HealthRecord.java | 10 +++++++++ .../home/service/impl/HealthServiceImpl.java | 21 +++++++++++++------ 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/home-service/src/main/java/com/cxx/home/dto/health/HealthRecordDto.java b/home-service/src/main/java/com/cxx/home/dto/health/HealthRecordDto.java index ae27c3c..20860ae 100644 --- a/home-service/src/main/java/com/cxx/home/dto/health/HealthRecordDto.java +++ b/home-service/src/main/java/com/cxx/home/dto/health/HealthRecordDto.java @@ -9,6 +9,7 @@ import lombok.Getter; import lombok.Setter; import java.time.LocalDate; +import java.time.LocalDateTime; @Getter @Setter @@ -21,12 +22,23 @@ public class HealthRecordDto { @Schema(description = "运行项目") private String sportProject; - @Schema(description = "运行时长") + @Schema(description = "运动时长") private Integer sportDuration; @Schema(description = "体重") private Double weight; + @Schema(description = "睡眠开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime sleepStartTime; + + @Schema(description = "睡眠结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime sleepEndTime; + + @Schema(description = "睡眠时长") + private Double sleepDuration; + @Schema(description = "记录日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate date; diff --git a/home-service/src/main/java/com/cxx/home/entity/HealthRecord.java b/home-service/src/main/java/com/cxx/home/entity/HealthRecord.java index 309bac0..0026776 100644 --- a/home-service/src/main/java/com/cxx/home/entity/HealthRecord.java +++ b/home-service/src/main/java/com/cxx/home/entity/HealthRecord.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.time.LocalDate; +import java.time.LocalDateTime; @Data @EqualsAndHashCode(callSuper = true) @@ -21,6 +22,15 @@ public class HealthRecord extends AbstractEntity { @TableField("weight") private Double weight; + @TableField("sleep_start_time") + private LocalDateTime sleepStartTime; + + @TableField("sleep_end_time") + private LocalDateTime sleepEndTime; + + @TableField("sleep_duration") + private Double sleepDuration; + @TableField("date") private LocalDate date; } diff --git a/home-service/src/main/java/com/cxx/home/service/impl/HealthServiceImpl.java b/home-service/src/main/java/com/cxx/home/service/impl/HealthServiceImpl.java index cc79d0a..ee68edb 100644 --- a/home-service/src/main/java/com/cxx/home/service/impl/HealthServiceImpl.java +++ b/home-service/src/main/java/com/cxx/home/service/impl/HealthServiceImpl.java @@ -9,10 +9,11 @@ import com.cxx.home.mapper.HealthRecordMapper; import com.cxx.home.service.HealthService; import com.cxx.home.vo.HealthQueryVo; import jakarta.annotation.Resource; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.time.Duration; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; @Service @@ -38,20 +39,28 @@ public class HealthServiceImpl implements HealthService { @Override public Boolean update(Long id, HealthRecordDto dto) { - HealthRecord healthRecord = new HealthRecord(); - if (id == 0) { - BeanUtils.copyProperties(dto, healthRecord); - return healthRecordMapper.insert(healthRecord) == 1; + setSleepDuration(dto); + return healthRecordMapper.insert(healthConverter.toEntity(dto)) == 1; } else { if ((dto.getSportProject() == null || dto.getSportProject().isEmpty()) + && dto.getSleepStartTime() == null && dto.getSleepEndTime() == null && dto.getSportDuration() == 0 && dto.getWeight() == 0) { return healthRecordMapper.deleteById(id) == 1; } else { - BeanUtils.copyProperties(dto, healthRecord); + 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); + } + } }