From 7bd3cb7134a71a8da89e602dcd73e177eece0eba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 10 Jun 2026 08:25:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(file):=20=E4=BF=AE=E5=A4=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=94=81=E5=AE=9A=E9=80=BB=E8=BE=91=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E7=AB=9E=E6=80=81=E6=9D=A1=E4=BB=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了 Redis 键不存在时的条件检查分支 - 实现了 setIfAbsent 原子操作避免并发锁定冲突 - 移除了冗余的锁定失败兜底错误提示 - 优化了分布式锁的实现机制 --- .../com/nflg/qms/admin/service/QmsFileControllerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsFileControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsFileControllerService.java index 74477be4..550b3c2a 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsFileControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsFileControllerService.java @@ -653,9 +653,9 @@ public class QmsFileControllerService { User lockedUser = userService.getById(lockedUserId); VUtil.trueThrowBusinessError(true).throwMessage("文件已被用户【" + lockedUser.getUserName() + "】锁定"); } + }else { + redisTemplate.opsForValue().setIfAbsent(key, currentUserId, 15, TimeUnit.SECONDS); } - // key 在两次 Redis 操作间隙恰好过期,仍属于锁定失败,需兜底报错 - VUtil.trueThrowBusinessError(true).throwMessage("文件已被锁定"); } else { file.setCurrentLockUserName(UserUtil.getUserName()); fileService.updateById(file);