diff --git a/src/main/java/com/gameplatform/server/service/link/LinkStatusService.java b/src/main/java/com/gameplatform/server/service/link/LinkStatusService.java index aca876c..291c6bd 100644 --- a/src/main/java/com/gameplatform/server/service/link/LinkStatusService.java +++ b/src/main/java/com/gameplatform/server/service/link/LinkStatusService.java @@ -692,6 +692,12 @@ private UserLinkStatusResponse doGetUserLinkStatus(Long linkId, String codeNo) { String selectedDeviceId; if(linkTask.getFirstRegionSelectAt() == null){ + if(!linkTask.getStatus().equals("USING")){ + LocalDateTime now = LocalDateTime.now(); + linkTask.setStatus("USING"); + linkTask.setUpdatedAt(now); + linkTaskMapper.updateById(linkTask); + } log.info("首次选区: 开始检查和分配空闲设备"); DeviceStatusResponse deviceStatus = scriptClient.checkAvailableDeviceStatus().block(); @@ -716,6 +722,12 @@ private UserLinkStatusResponse doGetUserLinkStatus(Long linkId, String codeNo) { log.info("首次选区设备分配成功: 选中设备={}, 任务ID={}", selectedDeviceId, linkTask.getId()); }else{ + if(!linkTask.getStatus().equals("USING")){ + LocalDateTime now = LocalDateTime.now(); + linkTask.setStatus("USING"); + linkTask.setUpdatedAt(now); + linkTaskMapper.updateById(linkTask); + } log.info("重复选区: 检查首次选区时有效性并复用设备"); // 检查首次选区是否已过期 LocalDateTime firstSelectTime = linkTask.getFirstRegionSelectAt(); @@ -831,6 +843,8 @@ private UserLinkStatusResponse doGetUserLinkStatus(Long linkId, String codeNo) { } if (linkTask.getFirstRegionSelectAt() == null) { linkTask.setFirstRegionSelectAt(now); + linkTask.setStatus("USING"); + linkTask.setUpdatedAt(LocalDateTime.now()); try { linkTaskMapper.update(linkTask); } catch (Exception ignore) {} } // Audit and history for USING transition