| | |
| | | @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("系统繁忙,请稍后重试"); |
| | | } |
| | |
| | | * 订单推送逻辑 |
| | | */ |
| | | public void pushOrder(Long orderId){ |
| | | RLock lock1 = redissonClient.getLock("pushOrder:" + orderId); |
| | | try { |
| | | Order order = this.selectById(orderId); |
| | | /** |
| | |
| | | * 合适司:积分 > 评分 > 距离 |
| | | * 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); |
| | |
| | | ExtraPushOrder(order); |
| | | redisUtil.setStrValue("lobbyOrder", "true"); |
| | | } |
| | | redisUtil.unlock(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | redisUtil.unlock(); |
| | | }finally { |
| | | lock1.unlock(); |
| | | } |
| | | |
| | | } |