From 8244adbb31a684de274a7b11a2e5293eb6dea46d Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 25 九月 2024 14:24:53 +0800 Subject: [PATCH] 工单号生成修改 --- ycl-server/src/main/java/com/ycl/utils/redis/RedisCache.java | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/utils/redis/RedisCache.java b/ycl-server/src/main/java/com/ycl/utils/redis/RedisCache.java index b30193b..5a6f3d2 100644 --- a/ycl-server/src/main/java/com/ycl/utils/redis/RedisCache.java +++ b/ycl-server/src/main/java/com/ycl/utils/redis/RedisCache.java @@ -262,4 +262,36 @@ { return redisTemplate.keys(pattern); } + + /** + * 灏濊瘯鑾峰彇閿� + * + * @param lockKey 閿佺殑閿� + * @param requestId 璇锋眰鏍囪瘑锛岀敤浜庡尯鍒嗕笉鍚岀殑閿佹寔鏈夎�� + * @param expireTime 閿佺殑杩囨湡鏃堕棿锛屽崟浣嶄负姣 + * @return 濡傛灉鎴愬姛鑾峰彇閿侊紝杩斿洖 true锛涘惁鍒欒繑鍥� false + */ + public boolean acquireLock(String lockKey, String requestId, long expireTime) { + // 浣跨敤 setIfAbsent 鏂规硶灏濊瘯璁剧疆閿�煎锛屽鏋滈敭涓嶅瓨鍦ㄥ垯璁剧疆鎴愬姛骞惰繑鍥� true锛屽惁鍒欒繑鍥� false + Boolean result = redisTemplate.opsForValue().setIfAbsent(lockKey, requestId, expireTime, TimeUnit.MILLISECONDS); + return result != null && result; + } + + /** + * 閲婃斁閿� + * + * @param lockKey 閿佺殑閿� + * @param requestId 璇锋眰鏍囪瘑锛岀敤浜庣‘淇濆彧鏈夐攣鐨勬寔鏈夎�呮墠鑳介噴鏀鹃攣 + * @return 濡傛灉鎴愬姛閲婃斁閿侊紝杩斿洖 true锛涘惁鍒欒繑鍥� false + */ + public boolean releaseLock(String lockKey, String requestId) { + // 鑾峰彇褰撳墠閿佺殑鍊� + String currentValue = (String) redisTemplate.opsForValue().get(lockKey); + // 妫�鏌ュ綋鍓嶉攣鐨勫�兼槸鍚︾瓑浜庤姹傛爣璇嗭紝纭繚鍙湁閿佺殑鎸佹湁鑰呮墠鑳介噴鏀鹃攣 + if (currentValue != null && currentValue.equals(requestId)) { + // 鍒犻櫎閿侀敭 + return Boolean.TRUE.equals(redisTemplate.delete(lockKey)); + } + return false; + } } -- Gitblit v1.8.0