Преглед изворни кода

fix: 关门日志持续时长显示null秒

DoorRecordServiceImpl.updateDoorClosed 中 record 在 UPDATE 前查询,
getDuration() 拿到的是 SQL TIMESTAMPDIFF 计算前的旧值(null)。
改为用 record.getOpenTime() 和 closeTime 在 Java 侧计算 duration 后再输出日志。

Co-Authored-By: Claude <noreply@anthropic.com>
skyline пре 2 недеља
родитељ
комит
c9acd08b1d

+ 6 - 1
haha-service/src/main/java/com/haha/service/impl/DoorRecordServiceImpl.java

@@ -91,7 +91,12 @@ public class DoorRecordServiceImpl extends ServiceImpl<DoorRecordMapper, DoorRec
             int result = baseMapper.updateDoorStatus(activityId, DeviceDoorStatus.CLOSED.getCode(), closeTime);
 
             if (result > 0) {
-                log.info("更新门状态为已关门 - activityId: {}, 持续时长:{}秒", activityId, record.getDuration());
+                // duration 由 SQL TIMESTAMPDIFF 计算写入 DB,此处用 Java 计算日志输出值
+                // (record 是 UPDATE 前查询的,getDuration() 为 null,需自行计算)
+                long durationSeconds = record.getOpenTime() != null
+                        ? java.time.temporal.ChronoUnit.SECONDS.between(record.getOpenTime(), closeTime)
+                        : 0;
+                log.info("更新门状态为已关门 - activityId: {}, 持续时长:{}秒", activityId, durationSeconds);
 
                 // 同时更新 Redis
                 updateRedisDoorStatus(activityId, DeviceDoorStatus.CLOSED.getCode(), closeTime);