Pu Zhibing
2 天以前 4f9707811eef19b7c9f59d587d05208b40a23b54
增加redis锁
2个文件已修改
521 ■■■■ 已修改文件
DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java 262 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 259 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -84,6 +84,8 @@
    @Value("${callbackPath}")
    private String callbackPath;
    @Autowired
    private RedisUtil redisUtil;
    /**
@@ -94,142 +96,162 @@
     */
    @Override
    public ResultUtil saveData(Reassign reassign, Integer uid, Integer type) throws Exception {
        type = null == type ? 2 : type;//现目前微信只支持小程序支付
        String content = reassign.getRemark();
        if(ToolUtil.isNotEmpty(content)){
            List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
            for(SensitiveWords s : sensitiveWords){
                content = content.replaceAll(s.getContent(), "***");
        boolean lock = redisUtil.lock(reassign.getOrderId() + "_reassign", 10);
        if(!lock){
            int num1 = 1;
            while (num1 <= 10){
                Thread.sleep(3000);//等待3秒
                lock = redisUtil.lock(reassign.getOrderId() + "_reassign", 10);
                if(lock){
                    break;
                }else{
                    num1++;
                }
            }
        }
        reassign.setRemark(content);
        ResultUtil resultUtil = ResultUtil.success();
        Driver driver = driverService.selectById(uid);
        // TODO: 2020/11/12 司机端不控制重复提交(如果重复提交且未支付,直接将之前的数据删除)
        try {
            type = null == type ? 2 : type;//现目前微信只支持小程序支付
            String content = reassign.getRemark();
            if(ToolUtil.isNotEmpty(content)){
                List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
                for(SensitiveWords s : sensitiveWords){
                    content = content.replaceAll(s.getContent(), "***");
                }
            }
            reassign.setRemark(content);
            Driver driver = driverService.selectById(uid);
            // TODO: 2020/11/12 司机端不控制重复提交(如果重复提交且未支付,直接将之前的数据删除)
//        Reassign query = reassignMapper.query(uid, null, null, null, 1);
//        if(null != query){
//            return ResultUtil.error("有未完成支付的改派申请");
//        }
        Reassign query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 1);
        if(null != query){
            Reassign query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 1);
            if(null != query){
//            return ResultUtil.error("不能重复提交申请");
            reassignMapper.deleteById(query.getId());
        }
        query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 2);
        if(null != query){
            return ResultUtil.error("您提交的申请正在处理中");
        }
        //获取支付金额
        Double aDouble = orderService.queryReassignMoney(reassign.getOrderId(), reassign.getOrderType());
        reassign.setMoney(aDouble);
        reassign.setOriginalDriverId(uid);
        reassign.setOriginalCarId(driver.getCarId());
        reassign.setInsertTime(new Date());
        this.insert(reassign);
        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid);
        //开始支付
        if(null != reassign.getPayType()){
            if(reassign.getPayType() == 1){//微信支付
                reassign.setState(1);
                ResultUtil resultUtil1 = payMoneyUtil.weixinpay("改派订单",reassign.getId()+"",reassign.getId() + "_" + reassign.getOrderType(),aDouble+"","/base/wxReassign","APP", "");
                //Map<String, String> map = icbcPayUtil.placeAnOrder(reassign.getId() + "_" + reassign.getOrderType(), 9, 5, uid.toString(), "改派订单", aDouble, callbackPath + "/base/wxReassign", "", type, driver.getAppletsOpenId());
                if(resultUtil1.getCode()==200){
                    paymentRecordService.saveData(1, null, null, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, null, 1);//添加预支付数据
                    resultUtil = resultUtil1;
                }else{
                    resultUtil = ResultUtil.error("获取支付信息失败", "");
                }
                reassignMapper.deleteById(query.getId());
            }
            if(reassign.getPayType() == 2){//支付宝
                reassign.setState(1);
                ResultUtil resultUtil1 = payMoneyUtil.alipay("改派订单","改派订单",reassign.getId() + "_" + reassign.getOrderType(),aDouble+"","/base/aliReassign", "");
                //Map<String, String> map = icbcPayUtil.placeAnOrder(reassign.getId() + "_" + reassign.getOrderType(), 10, 5, uid.toString(), "改派订单", aDouble, callbackPath + "/base/aliReassign", "", 2, "");
                if(resultUtil1.getCode()==200){
                    paymentRecordService.saveData(1, null, null, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, null, 1);//添加预支付数据
                    resultUtil = resultUtil1;
                }else{
                    resultUtil = ResultUtil.error("获取支付信息失败", "");
                }
            query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 2);
            if(null != query){
                return ResultUtil.error("您提交的申请正在处理中");
            }
            if(reassign.getPayType() == 3){//余额
                reassign.setState(2);
                reassign.setPayTime(new Date());
                reassignMapper.updateById(reassign);
                Double balance = driver.getBalance();
                Double laveBusinessMoney = driver.getLaveBusinessMoney();
                Double laveActivityMoney = driver.getLaveActivityMoney();
                if(null == balance || balance < aDouble){
                    throw new SystemException("账户余额不足");
            //获取支付金额
            Double aDouble = orderService.queryReassignMoney(reassign.getOrderId(), reassign.getOrderType());
            reassign.setMoney(aDouble);
            reassign.setOriginalDriverId(uid);
            reassign.setOriginalCarId(driver.getCarId());
            reassign.setInsertTime(new Date());
            this.insert(reassign);
            systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid);
            //开始支付
            if(null != reassign.getPayType()){
                if(reassign.getPayType() == 1){//微信支付
                    reassign.setState(1);
                    ResultUtil resultUtil1 = payMoneyUtil.weixinpay("改派订单",reassign.getId()+"",reassign.getId() + "_" + reassign.getOrderType(),aDouble+"","/base/wxReassign","APP", "");
                    //Map<String, String> map = icbcPayUtil.placeAnOrder(reassign.getId() + "_" + reassign.getOrderType(), 9, 5, uid.toString(), "改派订单", aDouble, callbackPath + "/base/wxReassign", "", type, driver.getAppletsOpenId());
                    if(resultUtil1.getCode()==200){
                        paymentRecordService.saveData(1, null, null, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, null, 1);//添加预支付数据
                        resultUtil = resultUtil1;
                    }else{
                        resultUtil = ResultUtil.error("获取支付信息失败", "");
                    }
                }
                if(null != laveBusinessMoney && laveBusinessMoney.compareTo(aDouble) >= 0){
                    driver.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                }else if(null != laveActivityMoney && laveActivityMoney.compareTo(aDouble) >= 0){
                    driver.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                if(reassign.getPayType() == 2){//支付宝
                    reassign.setState(1);
                    ResultUtil resultUtil1 = payMoneyUtil.alipay("改派订单","改派订单",reassign.getId() + "_" + reassign.getOrderType(),aDouble+"","/base/aliReassign", "");
                    //Map<String, String> map = icbcPayUtil.placeAnOrder(reassign.getId() + "_" + reassign.getOrderType(), 10, 5, uid.toString(), "改派订单", aDouble, callbackPath + "/base/aliReassign", "", 2, "");
                    if(resultUtil1.getCode()==200){
                        paymentRecordService.saveData(1, null, null, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, null, 1);//添加预支付数据
                        resultUtil = resultUtil1;
                    }else{
                        resultUtil = ResultUtil.error("获取支付信息失败", "");
                    }
                }
                driver.setBalance(new BigDecimal(balance).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driverService.updateById(driver);
                //添加交易明细
                transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, reassign.getOrderType(), reassign.getOrderId());
                //修改改派通知状态
                switch (reassign.getOrderType()){
                    case 1:
                        OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId());
                        orderPrivateCar.setOldState(orderPrivateCar.getState());
                        orderPrivateCar.setState(11);
                        orderPrivateCar.setReassignNotice(2);
                        orderPrivateCarService.updateById(orderPrivateCar);
                        //添加已收入明细
                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
                        break;
                    case 2:
                        OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
                        orderTaxi.setOldState(orderTaxi.getState());
                        orderTaxi.setState(11);
                        orderTaxi.setReassignNotice(2);
                        orderTaxiService.updateById(orderTaxi);
                        //添加已收入明细
                        incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
                        break;
                    case 4:
                        OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
                        orderLogistics.setOldState(orderLogistics.getState());
                        orderLogistics.setState(11);
                        orderLogistics.setReassignNotice(2);
                        orderLogisticsService.updateById(orderLogistics);
                        //添加已收入明细
                        incomeService.saveData(1, orderLogistics.getCompanyId(), 4, orderLogistics.getId(), orderLogistics.getType(), reassign.getMoney());
                        break;
                    case 5:
                        OrderLogistics orderLogistics1 = orderLogisticsService.selectById(reassign.getOrderId());
                        orderLogistics1.setOldState(orderLogistics1.getState());
                        orderLogistics1.setState(11);
                        orderLogistics1.setReassignNotice(2);
                        orderLogisticsService.updateById(orderLogistics1);
                        //添加已收入明细
                        incomeService.saveData(1, orderLogistics1.getCompanyId(), 4, orderLogistics1.getId(), orderLogistics1.getType(), reassign.getMoney());
                        break;
                }
                systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
                //开始推送调度单
                Map<String, String> map = new HashMap<>();
                map.put("orderId", reassign.getOrderId().toString());
                map.put("orderType", reassign.getOrderType().toString());
                List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
                if(reassign.getPayType() == 3){//余额
                    reassign.setState(2);
                    reassign.setPayTime(new Date());
                    reassignMapper.updateById(reassign);
                    Double balance = driver.getBalance();
                    Double laveBusinessMoney = driver.getLaveBusinessMoney();
                    Double laveActivityMoney = driver.getLaveActivityMoney();
                    if(null == balance || balance < aDouble){
                        throw new SystemException("账户余额不足");
                    }
                    if(null != laveBusinessMoney && laveBusinessMoney.compareTo(aDouble) >= 0){
                        driver.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    }else if(null != laveActivityMoney && laveActivityMoney.compareTo(aDouble) >= 0){
                        driver.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    }
                    driver.setBalance(new BigDecimal(balance).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driverService.updateById(driver);
                    //添加交易明细
                    transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, reassign.getOrderType(), reassign.getOrderId());
                    //修改改派通知状态
                    switch (reassign.getOrderType()){
                        case 1:
                            OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId());
                            orderPrivateCar.setOldState(orderPrivateCar.getState());
                            orderPrivateCar.setState(11);
                            orderPrivateCar.setReassignNotice(2);
                            orderPrivateCarService.updateById(orderPrivateCar);
                            //添加已收入明细
                            incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
                            break;
                        case 2:
                            OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
                            orderTaxi.setOldState(orderTaxi.getState());
                            orderTaxi.setState(11);
                            orderTaxi.setReassignNotice(2);
                            orderTaxiService.updateById(orderTaxi);
                            //添加已收入明细
                            incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
                            break;
                        case 4:
                            OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
                            orderLogistics.setOldState(orderLogistics.getState());
                            orderLogistics.setState(11);
                            orderLogistics.setReassignNotice(2);
                            orderLogisticsService.updateById(orderLogistics);
                            //添加已收入明细
                            incomeService.saveData(1, orderLogistics.getCompanyId(), 4, orderLogistics.getId(), orderLogistics.getType(), reassign.getMoney());
                            break;
                        case 5:
                            OrderLogistics orderLogistics1 = orderLogisticsService.selectById(reassign.getOrderId());
                            orderLogistics1.setOldState(orderLogistics1.getState());
                            orderLogistics1.setState(11);
                            orderLogistics1.setReassignNotice(2);
                            orderLogisticsService.updateById(orderLogistics1);
                            //添加已收入明细
                            incomeService.saveData(1, orderLogistics1.getCompanyId(), 4, orderLogistics1.getId(), orderLogistics1.getType(), reassign.getMoney());
                            break;
                    }
                    systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
                    //开始推送调度单
                    Map<String, String> map = new HashMap<>();
                    map.put("orderId", reassign.getOrderId().toString());
                    map.put("orderType", reassign.getOrderType().toString());
                    List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
//                for(Dispatch dispatch : dispatches){
//                    jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
//                }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            redisUtil.unlock(reassign.getOrderId() + "_reassign");
        }
        return resultUtil;
    }
UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -672,136 +672,150 @@
     */
    @Override
    public ResultUtil cancleOrderPrivateCar(Integer id, Integer payType, Integer cancleId, Integer type) throws Exception {
        OrderPrivateCar orderPrivateCar = this.selectById(id);
        Integer uid = orderPrivateCar.getUserId();
        UserInfo userInfo = userInfoService.selectById(uid);
        ResultUtil resultUtil = ResultUtil.success("");
        if(null == orderPrivateCar){
            return ResultUtil.error("取消订单失败,订单信息有误", "");
        }
        if(orderPrivateCar.getState() != 12){
            return ResultUtil.error("取消订单失败,不合法的操作", "");
        }
        OrderCancel orderCancel = null;
        if(null == cancleId || cancleId==0){
            orderCancel = orderCancelService.query(id, 1, null, null, 1);
        }else{
            orderCancel = orderCancelService.selectById(cancleId);
        }
        CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, orderPrivateCar.getCompanyId());
        if(null != query){
            String code = id + "_1_" + UUIDUtil.getRandomCode(3);
            if(payType == 1){//微信支付
                if(ToolUtil.isEmpty(userInfo.getAppletsOpenId())){
                    return ResultUtil.error("未授权微信,无法完成支付");
        boolean lock = redisUtil.lock(id + "_cancleOrder", 10);
        if(!lock){
            int num1 = 1;
            while (num1 <= 10){
                Thread.sleep(3000);//等待3秒
                lock = redisUtil.lock(id + "_cancleOrder", 10);
                if(lock){
                    break;
                }else{
                    num1++;
                }
                orderCancel.setPayType(1);
                orderCancelService.updateById(orderCancel);
                resultUtil =  payMoneyUtil.weixinpay("订单取消",id +"",code,query.getMoney()+"","/base/wxCancelOrderTaxi","JSAPI",userInfo.getAppletsOpenId());
                if(resultUtil.getCode()==200){
                    paymentRecordService.saveData(1, null, null, id, 1, 1, query.getMoney(), null, 1, code);//添加预支付数据
                    new Thread(()->{
                        int num = 1;
                        int min = 5000;
                        int w = 0;
                        while (num <= 10) {
                            try {
                                w += min * num;
                                OrderPrivateCar orderPrivateCar1 = orderPrivateCarMapper.selectById(id);
                                if (orderPrivateCar1.getState() == 10) {
                                    break;
                                }
                                ResultUtil<Map<String, Object>> resultUtil1 = payMoneyUtil.queryWXOrder("", code, "JSAPI");
                                if (resultUtil1.getCode() == 200) {
                                    /**
                                     * SUCCESS--支付成功
                                     * REFUND--转入退款
                                     * NOTPAY--未支付
                                     * CLOSED--已关闭
                                     * REVOKED--已撤销(刷卡支付)
                                     * USERPAYING--用户支付中
                                     * PAYERROR--支付失败(其他原因,如银行返回失败)
                                     * ACCEPT--已接收,等待扣款
                                     */
                                    String s = resultUtil1.getData().get("trade_state").toString();
                                    if ("REFUND".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) {
            }
        }
        ResultUtil resultUtil = ResultUtil.success("");
        try {
            OrderPrivateCar orderPrivateCar = this.selectById(id);
            Integer uid = orderPrivateCar.getUserId();
            UserInfo userInfo = userInfoService.selectById(uid);
            if(null == orderPrivateCar){
                return ResultUtil.error("取消订单失败,订单信息有误", "");
            }
            if(orderPrivateCar.getState() != 12){
                return ResultUtil.error("取消订单失败,不合法的操作", "");
            }
            OrderCancel orderCancel = null;
            if(null == cancleId || cancleId==0){
                orderCancel = orderCancelService.query(id, 1, null, null, 1);
            }else{
                orderCancel = orderCancelService.selectById(cancleId);
            }
            CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, orderPrivateCar.getCompanyId());
            if(null != query){
                String code = id + "_1_" + UUIDUtil.getRandomCode(3);
                if(payType == 1){//微信支付
                    if(ToolUtil.isEmpty(userInfo.getAppletsOpenId())){
                        return ResultUtil.error("未授权微信,无法完成支付");
                    }
                    orderCancel.setPayType(1);
                    orderCancelService.updateById(orderCancel);
                    resultUtil =  payMoneyUtil.weixinpay("订单取消",id +"",code,query.getMoney()+"","/base/wxCancelOrderTaxi","JSAPI",userInfo.getAppletsOpenId());
                    if(resultUtil.getCode()==200){
                        paymentRecordService.saveData(1, null, null, id, 1, 1, query.getMoney(), null, 1, code);//添加预支付数据
                        new Thread(()->{
                            int num = 1;
                            int min = 5000;
                            int w = 0;
                            while (num <= 10) {
                                try {
                                    w += min * num;
                                    OrderPrivateCar orderPrivateCar1 = orderPrivateCarMapper.selectById(id);
                                    if (orderPrivateCar1.getState() == 10) {
                                        break;
                                    }
                                    if ("SUCCESS".equals(s) || "ACCEPT".equals(s)) {
                                        String transaction_id = resultUtil1.getData().get("transaction_id").toString();
                                        payCancelOrderPrivateCar(id, transaction_id, 1);
                                        break;
                                    }
                                    if ("NOTPAY".equals(s) || "USERPAYING".equals(s)) {
                                    ResultUtil<Map<String, Object>> resultUtil1 = payMoneyUtil.queryWXOrder("", code, "JSAPI");
                                    if (resultUtil1.getCode() == 200) {
                                        /**
                                         * SUCCESS--支付成功
                                         * REFUND--转入退款
                                         * NOTPAY--未支付
                                         * CLOSED--已关闭
                                         * REVOKED--已撤销(刷卡支付)
                                         * USERPAYING--用户支付中
                                         * PAYERROR--支付失败(其他原因,如银行返回失败)
                                         * ACCEPT--已接收,等待扣款
                                         */
                                        String s = resultUtil1.getData().get("trade_state").toString();
                                        if ("REFUND".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) {
                                            break;
                                        }
                                        if ("SUCCESS".equals(s) || "ACCEPT".equals(s)) {
                                            String transaction_id = resultUtil1.getData().get("transaction_id").toString();
                                            payCancelOrderPrivateCar(id, transaction_id, 1);
                                            break;
                                        }
                                        if ("NOTPAY".equals(s) || "USERPAYING".equals(s)) {
                                            Thread.sleep(w);
                                            num++;
                                        }
                                    } else {
                                        Thread.sleep(w);
                                        num++;
                                    }
                                } else {
                                    Thread.sleep(w);
                                    num++;
                                }catch (Exception e){
                                    e.printStackTrace();
                                }
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }else{
                    resultUtil = ResultUtil.error("支付失败", "");
                        }).start();
                    }else{
                        resultUtil = ResultUtil.error("支付失败", "");
                    }
                }
            }
            if(payType == 2){//支付宝支付
                orderCancel.setPayType(2);
                orderCancelService.updateById(orderCancel);
                resultUtil =  payMoneyUtil.alipay("订单取消","订单取消", "",code,query.getMoney()+"","/base/aliCancelOrderTaxi");
                if(resultUtil.getCode()==200){
                    paymentRecordService.saveData(1, null, null, id, 1, 2, query.getMoney(), null, 1, code);//添加预支付数据
                    resultUtil = resultUtil;
                }else{
                    resultUtil = ResultUtil.error("支付失败", "");
                if(payType == 2){//支付宝支付
                    orderCancel.setPayType(2);
                    orderCancelService.updateById(orderCancel);
                    resultUtil =  payMoneyUtil.alipay("订单取消","订单取消", "",code,query.getMoney()+"","/base/aliCancelOrderTaxi");
                    if(resultUtil.getCode()==200){
                        paymentRecordService.saveData(1, null, null, id, 1, 2, query.getMoney(), null, 1, code);//添加预支付数据
                        resultUtil = resultUtil;
                    }else{
                        resultUtil = ResultUtil.error("支付失败", "");
                    }
                }
            }
            if(payType == 3){//余额支付
                if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
                    return ResultUtil.error("余额不足,无法完成支付", "");
                }
                userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(query.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                //添加交易明细
                transactionDetailsService.saveData(uid, "取消订单", query.getMoney(), 2, 1, 1, 1, id);
                userInfoService.updateById(userInfo);
                //解除小号绑定
                if(payType == 3){//余额支付
                    if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
                        return ResultUtil.error("余额不足,无法完成支付", "");
                    }
                    userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(query.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    //添加交易明细
                    transactionDetailsService.saveData(uid, "取消订单", query.getMoney(), 2, 1, 1, 1, id);
                    userInfoService.updateById(userInfo);
                    //解除小号绑定
//                if(orderPrivateCar.getBindId() != null){
//                    chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId(),orderPrivateCar.getTelX());
//                }
                orderPrivateCar.setState(10);
                orderPrivateCar.setTelX("");
                orderPrivateCar.setBindId("");
                this.updateById(orderPrivateCar);
                orderCancel.setState(2);
                orderCancel.setPayType(3);
                orderCancelService.updateById(orderCancel);
                //添加已收入明细
                incomeService.saveData(1, orderPrivateCar.getCompanyId(), 3, orderPrivateCar.getId(), 1, query.getMoney());
                //添加已收入明细
                Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                Double taxi = company.getSpeMoney();
                BigDecimal c =new BigDecimal(query.getMoney());//司机收入
                incomeService.saveData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue());
                Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driverService.updateById(driver);
                this.deleteTask(id);//删除定时任务
                    orderPrivateCar.setState(10);
                    orderPrivateCar.setTelX("");
                    orderPrivateCar.setBindId("");
                    this.updateById(orderPrivateCar);
                    orderCancel.setState(2);
                    orderCancel.setPayType(3);
                    orderCancelService.updateById(orderCancel);
                    //添加已收入明细
                    incomeService.saveData(1, orderPrivateCar.getCompanyId(), 3, orderPrivateCar.getId(), 1, query.getMoney());
                    //添加已收入明细
                    Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                    Double taxi = company.getSpeMoney();
                    BigDecimal c =new BigDecimal(query.getMoney());//司机收入
                    incomeService.saveData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue());
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driverService.updateById(driver);
                    this.deleteTask(id);//删除定时任务
//                new Thread(new Runnable() {
//                    @Override
@@ -809,10 +823,15 @@
//                        pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
//                    }
//                }).start();
                //添加消息
                systemNoticeService.addSystemNotice(1, "您已使用余额成功支付取消订单费用,谢谢使用!", orderPrivateCar.getUserId(), 1);
                    //添加消息
                    systemNoticeService.addSystemNotice(1, "您已使用余额成功支付取消订单费用,谢谢使用!", orderPrivateCar.getUserId(), 1);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            redisUtil.unlock(id + "_cancleOrder");
        }
        return resultUtil;
    }