Pu Zhibing
18 小时以前 0d87176a57e39c62d37490d95fb5c5f60a49a808
合并代码
2个文件已修改
52 ■■■■■ 已修改文件
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -433,6 +433,11 @@
     */
    @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){
@@ -538,6 +543,12 @@
        }
        redisUtil.setStrValue("newOrder", "true");
        return ResultUtil.success(order.getId());
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            redisUtil.unlock(uid + "_travelOrder");
        }
        return ResultUtil.error("系统异常");
    }
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java
@@ -125,6 +125,47 @@
    }
    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