| | |
| | | public ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception { |
| | | //专车和出租是批量下单,所以这里需要将两种类型的抢单操作通过一个锁来一起控制 |
| | | if(1 == orderType || 2 == orderType){ |
| | | // RLock lock = redissonClient.getLock("grabOrder:" + orderId); |
| | | // if(!lock.tryLock()){ |
| | | // return ResultUtil.error("抢单失败,请稍后重试"); |
| | | // } |
| | | Boolean lock = redisTemplate.opsForValue().setIfAbsent("grabOrder:" + orderId, "1"); |
| | | if(!lock){ |
| | | return ResultUtil.error("抢单失败,请稍后重试"); |
| | | } |
| | | try { |
| | | if(1 == orderType){ |
| | | return orderPrivateCarService.grabOrder(orderId, uid); |
| | |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }finally { |
| | | // lock.unlock(); |
| | | redisTemplate.delete("grabOrder:" + orderId); |
| | | } |
| | | } |
| | | switch (orderType){ |