| | |
| | | */ |
| | | @Override |
| | | public ResultUtil travelOrder(Integer uid, TravelOrder travelOrder) throws Exception { |
| | | boolean lock = redisUtil.lock(uid + "_travelOrder"); |
| | | if(!lock){ |
| | | 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)); |
| | | if(null != order){ |
| | |
| | | } |
| | | redisUtil.setStrValue("newOrder", "true"); |
| | | return ResultUtil.success(order.getId()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }finally { |
| | | redisUtil.unlock(uid + "_travelOrder"); |
| | | } |
| | | return ResultUtil.error("系统异常"); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | public boolean lock(String key){ |
| | | try { |
| | | boolean b = lock(key,5); |
| | | if(!b){ |
| | | int num1 = 1; |
| | | while (num1 <= 10){ |
| | | try { |
| | | Thread.sleep(3000);//等待3秒 |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | b = lock(5); |
| | | if(b){ |
| | | return true; |
| | | }else{ |
| | | num1++; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | return b; |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | unlock(); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取redis锁 |
| | | * @param time |
| | | * @return |
| | | */ |
| | | public boolean lock(String key, int time){ |
| | | String uuid = UUID.randomUUID().toString(); |
| | | return lock(key, uuid, time); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取redis锁 |
| | | * @param time |