From f6d1e9d191aab3542138c77adad2689047507f02 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 18 四月 2026 18:47:56 +0800
Subject: [PATCH] 添加分布式锁

---
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 01f4372..42f1ae4 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -14,6 +14,8 @@
 import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
 import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -53,7 +55,7 @@
 	private RedisUtil redisUtil;
 
     @Autowired
-    private RedisTemplate redisTemplate;
+    private RedissonClient redissonClient;
 	
 	@Autowired
 	private IOrderPositionService orderPositionService;
@@ -155,11 +157,10 @@
 	 */
 	@Override
 	public ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception {
-        Boolean lock = redisTemplate.hasKey("grabOrder:" + orderId);
-        if (lock) {
+        RLock lock = redissonClient.getLock("grabOrder:" + orderId);
+        if (!lock.tryLock(10, 10, TimeUnit.SECONDS)) {
             return ResultUtil.error("抢单失败");
         }
-        redisTemplate.opsForValue().set("grabOrder:" + orderId, System.currentTimeMillis(), 10, TimeUnit.SECONDS);
 		try {
 			OrderTaxi orderTaxi = this.selectById(orderId);
 			//处理摆渡车的情况
@@ -313,7 +314,7 @@
 		} catch (Exception e) {
 			return ResultUtil.error("抢单失败");
 		} finally {
-            redisTemplate.delete("grabOrder:" + orderId);
+            lock.unlock();
 		}
 		return ResultUtil.success();
 	}

--
Gitblit v1.7.1