From ba6b508a44cb1f0730c6a27a5d73b8d2ae8f1d4b Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 19 八月 2025 18:43:47 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/QYTDriving --- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 47 +++++++++++++++++------------------------------ 1 files changed, 17 insertions(+), 30 deletions(-) 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 d8b358b..ff0fc60 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 @@ -17,6 +17,8 @@ import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest; import com.supersavedriving.user.modular.system.util.mongodb.model.Location; import com.supersavedriving.user.modular.system.warpper.*; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -37,6 +39,7 @@ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -74,8 +77,8 @@ @Autowired private RedisUtil redisUtil; -// @Autowired -// private RedissonClient redissonClient; + @Autowired + private RedissonClient redissonClient; @Autowired private MongoTemplate mongoTemplate; @@ -432,11 +435,11 @@ */ @Override public ResultUtil travelOrder(Integer uid, TravelOrder travelOrder) throws Exception { -// RLock lock1 = redissonClient.getLock("travelOrder:" + uid); -// boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS); -// if(!lock2){ -// return ResultUtil.error("系统繁忙,请稍后重试"); -// } + RLock lock1 = redissonClient.getLock("travelOrder:" + uid); + boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS); + if(!lock2){ + return ResultUtil.error("系统繁忙,请稍后重试"); + } try { List<Integer> state = Arrays.asList(101, 102, 103, 104, 105, 106, 107, 201, 401); Order order = this.selectOne(new EntityWrapper<Order>().eq("userId", uid).eq("status", 1).in("state", state)); @@ -537,10 +540,7 @@ pushUtil.pushOrderInfo(order.getDriverId(), 2, pushOrderInfoWarpper); }else{ //推单 - Order finalOrder = order; - new Thread(()->{ - pushOrder(finalOrder.getId()); - }).start(); + pushOrder(order.getId()); } } } @@ -549,7 +549,7 @@ }catch (Exception e){ e.printStackTrace(); }finally { -// lock1.unlock(); + lock1.unlock(); } return ResultUtil.error("系统异常"); } @@ -561,6 +561,7 @@ * 订单推送逻辑 */ public void pushOrder(Long orderId){ + RLock lock1 = redissonClient.getLock("pushOrder:" + orderId); try { Order order = this.selectById(orderId); /** @@ -570,28 +571,14 @@ * 合适司:积分 > 评分 > 距离 * 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); - redisUtil.unlock(); } SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); if(null == systemConfig){ - redisUtil.unlock(); return; } JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); @@ -779,10 +766,10 @@ ExtraPushOrder(order); redisUtil.setStrValue("lobbyOrder", "true"); } - redisUtil.unlock(); }catch (Exception e){ e.printStackTrace(); - redisUtil.unlock(); + }finally { + lock1.unlock(); } } -- Gitblit v1.7.1