瀏覽代碼

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
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      haha-service/src/main/java/com/haha/service/impl/DoorRecordServiceImpl.java

+ 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);