From e778f1ec4f911e0b6332432edca4650461ce5870 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 19 八月 2025 17:00:41 +0800
Subject: [PATCH] 修改redis锁

---
 user/guns-admin/pom.xml                                                                                   |   14 +------
 user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java                        |   28 ++++++++++++++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java |   23 +++--------
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java                |   12 +----
 4 files changed, 39 insertions(+), 38 deletions(-)

diff --git a/user/guns-admin/pom.xml b/user/guns-admin/pom.xml
index 27c4661..7ed4d5b 100644
--- a/user/guns-admin/pom.xml
+++ b/user/guns-admin/pom.xml
@@ -67,10 +67,9 @@
 		</dependency>
 		<dependency>
 			<groupId>org.redisson</groupId>
-			<artifactId>redisson-spring-boot-starter</artifactId>
-			<version>3.16.8</version>
+			<artifactId>redisson</artifactId>
+			<version>3.14.0</version>
 		</dependency>
-		
 		<dependency>
 			<groupId>com.fasterxml.jackson.core</groupId>
 			<artifactId>jackson-core</artifactId>
@@ -143,15 +142,6 @@
 		<dependency>
 			<groupId>io.jsonwebtoken</groupId>
 			<artifactId>jjwt</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>redis.clients</groupId>
-			<artifactId>jedis</artifactId>
-			<version>2.9.0</version>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-redis</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>cn.jpush.api</groupId>
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java b/user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java
new file mode 100644
index 0000000..b419b62
--- /dev/null
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java
@@ -0,0 +1,28 @@
+package com.supersavedriving.user.config;
+
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RedissonConfig {
+
+    @Value("${spring.redis.host}")
+    private String host;
+    @Value("${spring.redis.password}")
+    private String password;
+    @Value("${spring.redis.port}")
+    private Integer port;
+
+
+    @Bean
+    public RedissonClient redissonClient() {
+        Config config = new Config();
+        config.useSingleServer().setAddress("redis://" + host + ":" + port);
+        config.useSingleServer().setPassword(password);
+        return Redisson.create(config);
+    }
+}
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
index b7090e1..5e418be 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -440,7 +440,7 @@
     @Override
     public ResultUtil travelOrder(Integer uid, TravelOrder travelOrder) throws Exception {
         RLock lock1 = redissonClient.getLock("travelOrder:" + uid);
-        boolean lock2 = lock1.tryLock(5, TimeUnit.SECONDS);
+        boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS);
         if(!lock2){
             return ResultUtil.error("系统繁忙,请稍后重试");
         }
@@ -568,6 +568,7 @@
      * 订单推送逻辑
      */
     public void pushOrder(Long orderId){
+        RLock lock1 = redissonClient.getLock("pushOrder:" + orderId);
         try {
             Order order = this.selectById(orderId);
             /**
@@ -577,20 +578,8 @@
              *        合适司:积分 > 评分 > 距离
              *      3.司机没有接单直接将订单置入大厅
              */
-            boolean lock = redisUtil.lock(5);
-            if(!lock){
-                int num1 = 1;
-                while (num1 <= 10){
-                    Thread.sleep(3000);//等待3秒
-                    lock = redisUtil.lock(5);
-                    if(lock){
-                        break;
-                    }else{
-                        num1++;
-                    }
-                }
-            }
-            if(!lock){
+            boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS);
+            if(!lock2){
                 order.setHallOrder(1);
                 this.updateById(order);
                 ExtraPushOrder(order);
@@ -786,10 +775,10 @@
                 ExtraPushOrder(order);
                 redisUtil.setStrValue("lobbyOrder", "true");
             }
-            redisUtil.unlock();
         }catch (Exception e){
             e.printStackTrace();
-            redisUtil.unlock();
+        }finally {
+            lock1.unlock();
         }
 
     }
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java
index 0e30250..3575b14 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java
@@ -1,17 +1,10 @@
 package com.supersavedriving.user.modular.system.util;
 
-import com.supersavedriving.user.core.util.ToolUtil;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.Pipeline;
 
 import javax.annotation.Resource;
-import java.io.IOException;
-import java.util.*;
+import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
 
@@ -103,7 +96,7 @@
                 int num1 = 1;
                 while (num1 <= 10){
                     try {
-                        Thread.sleep(3000);//等待3秒
+                        Thread.sleep(1000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
@@ -119,6 +112,7 @@
             return b;
         }catch (Exception e){
             e.printStackTrace();
+        }finally {
             unlock();
         }
         return false;

--
Gitblit v1.7.1