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