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