diff --git a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/integration/lock/service/impl/TrainIotLockAuthBridgeServiceImpl.java b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/integration/lock/service/impl/TrainIotLockAuthBridgeServiceImpl.java index ab8aa80aa..a63572f56 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/integration/lock/service/impl/TrainIotLockAuthBridgeServiceImpl.java +++ b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/integration/lock/service/impl/TrainIotLockAuthBridgeServiceImpl.java @@ -363,8 +363,11 @@ public class TrainIotLockAuthBridgeServiceImpl implements ITrainLockAuthBridgeSe if (!securityGate.sameOrigin(activeAuth)) { activeAuth.setExecutionState(com.ruoyi.iot.lock.security.ExecutionStates.QUARANTINED); activeAuth.setIntentAction(com.ruoyi.iot.lock.security.ExecutionStates.REVOKE); + activeAuth.setSyncStatus(LockConstants.SYNC_FAIL); } else if (!com.ruoyi.iot.lock.security.ExecutionStates.REVOKE.equals(activeAuth.getIntentAction())) { securityGate.advanceIntent(activeAuth, com.ruoyi.iot.lock.security.ExecutionStates.REVOKE); + activeAuth.setSyncStatus(com.ruoyi.iot.lock.security.ExecutionStates.MANUAL_REVIEW.equals(activeAuth.getExecutionState()) + ? LockConstants.SYNC_FAIL : LockConstants.SYNC_PENDING); } activeAuth.setStatus("1"); activeAuth.setRemark("由住宿安排 " + accommodationId + " 退宿触发撤权"); diff --git a/RuoYi-Vue/ruoyi-train/src/test/java/com/ruoyi/train/integration/lock/TrainIotLockAuthBridgeMockTest.java b/RuoYi-Vue/ruoyi-train/src/test/java/com/ruoyi/train/integration/lock/TrainIotLockAuthBridgeMockTest.java index 6b3662f4e..d94ca78ad 100644 --- a/RuoYi-Vue/ruoyi-train/src/test/java/com/ruoyi/train/integration/lock/TrainIotLockAuthBridgeMockTest.java +++ b/RuoYi-Vue/ruoyi-train/src/test/java/com/ruoyi/train/integration/lock/TrainIotLockAuthBridgeMockTest.java @@ -1248,6 +1248,12 @@ public class TrainIotLockAuthBridgeMockTest if ("updateAuth".equals(name)) { LockAuth a = (LockAuth) args[0]; + if (com.ruoyi.iot.lock.security.ExecutionStates.REVOKE.equals(a.getIntentAction()) + && com.ruoyi.iot.lock.security.ExecutionStates.READY.equals(a.getExecutionState()) + && a.getPreviousIntentVersion() != null && a.getIntentVersion() > a.getPreviousIntentVersion()) { + assertEquals("A new revoke intent must not inherit the previous grant confirmation", + LockConstants.SYNC_PENDING, a.getSyncStatus()); + } if (a != null && a.getAuthId() != null) { authStore.put(a.getAuthId(), a);