liujie
2023-08-10 aa241a47c90ed776062adf0b8daccf288a21836f
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.supersavedriving.user.modular.system.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -112,6 +113,12 @@
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IOrderService orderService;
    @Autowired
    private ICompanyFundFlowService companyFundFlowService;
    @Value("${wx.appletsAppid}")
    private String appletsAppid;
@@ -207,7 +214,9 @@
     */
    public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){
        order = getOrderInitialPrice(order);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
        Integer driverId = order.getDriverId();
        Driver driver = driverService.selectById(driverId);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5).eq("companyId",driver.getBranchOfficeId()));
        if(null == systemConfig){
            if(type == 1){//预估金额
                order.setEstimatedPrice(0D);
@@ -308,6 +317,9 @@
        Double num7 = extraCost.getDouble("num7");//恶劣天气超出公里
        Double num8 = extraCost.getDouble("num8");//恶劣天气超出公里单价 X/公里
        Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额
        Double num10 = extraCost.getDouble("num10");//节假日收费
//        Double num11 = extraCost.getDouble("num11");//恶劣天气最高收取金额
//        Double num12 = extraCost.getDouble("num12");//恶劣天气最高收取金额
        //等待费用
        if(waitTime.compareTo(num1 * 60) >= 0){
@@ -321,13 +333,13 @@
        }
        //恶劣天气
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8));
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8).eq("companyId",driver.getBranchOfficeId()));
        if(null != systemConfig){
            JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent());
            Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价
            if(1 == num11){
                boolean badWeather = WeatherUtil.isBadWeather(city);
                if(badWeather){
//                boolean badWeather = WeatherUtil.isBadWeather(city);
//                if(badWeather){
                    order.setBadWeatherDistance(num5);//恶劣天气公里
                    order.setBadWeatherPrice(num6);//恶劣天气费
                    if(distance.compareTo(num7) > 0){
@@ -347,14 +359,27 @@
                            order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费
                        }
                    }
                }
//                }
            }
        }
        //节假日
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 9).eq("companyId",driver.getBranchOfficeId()));
        if(null != systemConfig){
            JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent());
            Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价
            if(1 == num11){
                BigDecimal bigDecimal = new BigDecimal(num10);
                order.setHolidayPrice(bigDecimal.doubleValue());
            }
        }
        //计算总金额
        BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() +
                order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice()+order.getHolidayPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
        if(type == 1){//预估价
            order.setEstimatedPrice(bigDecimal.doubleValue());
@@ -393,6 +418,7 @@
        order.setCouponId(null);//优惠券
        order.setDiscountAmount(0D);//折扣优惠金额
        order.setDiscount(0D);//折扣
        order.setHolidayPrice(0D);
        return order;
    }
@@ -482,7 +508,7 @@
        for (Integer i = 0; i < travelOrder.getDriverNum(); i++) {
            order.setId(null);
            order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3));
            order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5));
            boolean insert = this.insert(order);
            if(insert){
                //推送状态
@@ -571,7 +597,8 @@
                        continue;
                    }
                    Driver driver1 = driverService.selectById(youTuiDriver.getDriverId());
                    if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){
                    int count = orderService.selectCount(new EntityWrapper<Order>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
                    if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1 || count > 0){
                        continue;
                    }
                    DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
@@ -625,6 +652,10 @@
                            }
                            DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
                            if(null == driverWork){
                                continue;
                            }
                            int count = orderService.selectCount(new EntityWrapper<Order>().eq("driverId", driver1.getId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
                            if(count > 0){
                                continue;
                            }
@@ -824,6 +855,12 @@
    @Override
    public ResultUtil editOrderEndAddress(Integer uid, EditOrderEndAddress editOrderEndAddress) throws Exception {
        Order order = this.selectById(editOrderEndAddress.getOrderId());
        String endAddress = editOrderEndAddress.getEndAddress();
        endAddress = endAddress.replaceAll("& #40;", "(");
        endAddress = endAddress.replaceAll("& #41;", ")");
        editOrderEndAddress.setEndAddress(endAddress);
        order.setEndAddress(editOrderEndAddress.getEndAddress());
        order.setEndLat(editOrderEndAddress.getEndLat().toString());
        order.setEndLng(editOrderEndAddress.getEndLng().toString());
@@ -896,6 +933,7 @@
        orderPriceWarpper.setDiscountedPrice(order.getDiscountedPrice());
        orderPriceWarpper.setBadWeatherPrice(order.getBadWeatherPrice());
        orderPriceWarpper.setPayMoney(order.getPayMoney());
        orderPriceWarpper.setOrderMoney(order.getOrderMoney());
        if(order.getState() < 107){
            orderPriceWarpper.setPayMoney(order.getOrderMoney());
        }
@@ -936,9 +974,9 @@
            orderPriceWarpper.setCouponId(coupon.getId());
        }
        if(payType == 1 && null == couponId && appUser.getHavDiscount() == 1 && balance.compareTo(orderMoney) >= 0){//使用余额抵扣
            orderPriceWarpper.setDiscount(9D);
            orderPriceWarpper.setDiscountAmount(new BigDecimal(orderMoney * 0.1).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            orderMoney = new BigDecimal(orderMoney * 0.9).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
            orderPriceWarpper.setDiscount(9.5D);
            orderPriceWarpper.setDiscountAmount(new BigDecimal(orderMoney * 0.05).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            orderMoney = new BigDecimal(orderMoney * 0.95).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
        }
        if(null != couponId){
            UserToCoupon userToCoupon = userToCouponService.selectById(couponId);
@@ -990,7 +1028,7 @@
            return ResultUtil.error("不允许支付");
        }
        if(orderPayment.getPayType() == 2){
            Double payMoney = order.getOrderMoney() * (appUser.getHavDiscount() == 1 ? 0.9 : 1);
            Double payMoney = order.getOrderMoney() * (appUser.getHavDiscount() == 1 ? 0.95 : 1);
            if(appUser.getAccountBalance() < payMoney){
                return ResultUtil.error("账户余额不足");
            }
@@ -1027,7 +1065,7 @@
        PaymentOrder paymentOrder = new PaymentOrder();
        paymentOrder.setBizOrderId(out_trade_no);
        paymentOrder.setAmount(String.valueOf(Double.valueOf(payMoney * 100).intValue()));
        paymentOrder.setAmount(new BigDecimal(payMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        paymentOrder.setOrderName("代驾服务费");
        paymentOrder.setPayType("WX_MINI");
        paymentOrder.setTransferType("0");
@@ -1139,7 +1177,7 @@
        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail.setUserType(1);
        accountChangeDetail.setUserId(appUser.getId());
        accountChangeDetail.setCreateTime(new Date());
@@ -1148,7 +1186,7 @@
        accountChangeDetail.setChangeType(2);
        accountChangeDetail.setOrderId(order.getId());
        accountChangeDetail.setExplain("代驾服务费");
        appUser.setAccountBalance(appUser.getAccountBalance() - payMoney);
        appUser.setAccountBalance(new BigDecimal(appUser.getAccountBalance()).subtract(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        accountChangeDetail.setNewData(appUser.getAccountBalance());
        appUserService.updateById(appUser);
        accountChangeDetailService.insert(accountChangeDetail);
@@ -1172,7 +1210,7 @@
        order.setPayType(1);
        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail.setUserType(1);
        accountChangeDetail.setUserId(appUser.getId());
        accountChangeDetail.setCreateTime(new Date());
@@ -1181,25 +1219,33 @@
        accountChangeDetail.setChangeType(2);
        accountChangeDetail.setOrderId(order.getId());
        accountChangeDetail.setExplain("代驾服务费");
        appUser.setAccountBalance(appUser.getAccountBalance() > payMoney ? appUser.getAccountBalance() - payMoney : 0);
        Double wx_p = 0D;
        if(payMoney.compareTo(appUser.getAccountBalance()) > 0){//支付金额大于账户余额
            wx_p = new BigDecimal(payMoney).subtract(new BigDecimal(appUser.getAccountBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
            order.setBalancePayment(appUser.getAccountBalance());
            order.setWeChatPayment(wx_p);
            appUser.setAccountBalance(0D);
        }else{
            order.setBalancePayment(payMoney);
            order.setWeChatPayment(0D);
            appUser.setAccountBalance(new BigDecimal(appUser.getAccountBalance()).subtract(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        }
        accountChangeDetail.setNewData(appUser.getAccountBalance());
        appUserService.updateById(appUser);
        accountChangeDetailService.insert(accountChangeDetail);
        order.setBalancePayment(payMoney > appUser.getAccountBalance() ? appUser.getAccountBalance() : payMoney);
        payMoney = payMoney > appUser.getAccountBalance() ? payMoney - appUser.getAccountBalance() : 0D;
        order.setWeChatPayment(payMoney);
        order.setResidueBalancePayment(order.getBalancePayment());
        order.setResidueWeChatPayment(order.getWeChatPayment());
        if(0 < payMoney){//还需要调起微信支付
        if(0 < wx_p){//还需要调起微信支付
            order.setPayType(4);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            String out_trade_no = sdf.format(new Date()) + order.getId();
            PaymentOrder paymentOrder = new PaymentOrder();
            paymentOrder.setBizOrderId(out_trade_no);
            paymentOrder.setAmount(String.valueOf(Double.valueOf(payMoney * 100).intValue()));
            paymentOrder.setAmount(new BigDecimal(wx_p).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
            paymentOrder.setOrderName("代驾服务费");
            paymentOrder.setPayType("WX_MINI");
            paymentOrder.setTransferType("0");
@@ -1266,7 +1312,7 @@
                                    if("2".equals(status1) || 10 == num){//失败
                                        Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData();
                                        AppUser appUser1 = appUserService.selectById(order1.getUserId());
                                        appUser1.setAccountBalance(appUser1.getAccountBalance() + m);
                                        appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(m)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                        appUserService.updateById(appUser1);
                                        accountChangeDetailService.deleteById(accountChangeDetail.getId());
                                        break;
@@ -1374,7 +1420,7 @@
                //增加积分变动记录
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(order.getDriverId());
                accountChangeDetail.setCreateTime(new Date());
@@ -1395,7 +1441,7 @@
                //增加积分变动记录
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(order.getDriverId());
                accountChangeDetail.setCreateTime(new Date());
@@ -1432,17 +1478,17 @@
        revenueService.insert(revenue);
        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail.setUserType(2);
        accountChangeDetail.setUserId(driver.getId());
        accountChangeDetail.setType(1);
        accountChangeDetail.setChangeType(1);
        accountChangeDetail.setOrderId(order.getId());
        accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
        driver.setCommission(driver.getCommission() + order.getPayMoney());
        accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getPayMoney())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        accountChangeDetail.setExplain("订单收入");
        accountChangeDetail.setCreateTime(new Date());
        accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
        accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driverService.updateById(driver);
        accountChangeDetailService.saveData(accountChangeDetail);
        //订单收入
@@ -1450,21 +1496,22 @@
        if(null != order.getCouponId()){
            accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver.getId());
            accountChangeDetail.setType(1);
            accountChangeDetail.setChangeType(7);
            accountChangeDetail.setOrderId(order.getId());
            accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getDiscountedPrice())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setExplain("优惠券收入");
            accountChangeDetail.setCreateTime(new Date());
            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driverService.updateById(driver);
            accountChangeDetailService.saveData(accountChangeDetail);
            //补贴中分账
            Double balance = revenueService.queryCompanyBalance();//平台账户余额
            Double discountedPrice = order.getDiscountedPrice();
            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
            for (RechargeRecord rechargeRecord : rechargeRecords) {
@@ -1483,13 +1530,20 @@
                        Double remainAmount = zhaunzhang.getData();
                        rechargeRecord.setSurplusDividedAmount(remainAmount);
                        rechargeRecordService.updateById(rechargeRecord);
                        discountedPrice -= surplusDividedAmount;
                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                    }else{
                        break;
                    }
                }
            }
            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
            companyFundFlow.setBalance(new BigDecimal(balance));
            companyFundFlow.setObjectType(1);
            companyFundFlow.setType(5);
            companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
            companyFundFlow.setCreateTime(new Date());
            companyFundFlowService.insert(companyFundFlow);
        }
    }
@@ -1512,7 +1566,7 @@
            JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent());
            Integer num4 = jsonObject2.getInteger("num4");
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver1.getId());
            accountChangeDetail.setType(2);
@@ -1537,17 +1591,17 @@
            Double num3 = jsonObject.getDouble("num3");
            if(order.getOrderMoney().compareTo(num2) >= 0){//订单金额大于num2开始分佣
                AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail1.setUserType(2);
                accountChangeDetail1.setUserId(driver.getId());
                accountChangeDetail1.setType(1);
                accountChangeDetail1.setChangeType(9);
                accountChangeDetail1.setOrderId(order.getId());
                accountChangeDetail1.setOldData(driver.getBalance() + driver.getBackgroundBalance());
                accountChangeDetail1.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                accountChangeDetail1.setExplain("订单信息费");
                accountChangeDetail1.setCreateTime(new Date());
                driver.setBalance(driver.getBalance() - num3);
                accountChangeDetail1.setNewData(driver.getBalance() + driver.getBackgroundBalance());
                driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                accountChangeDetail1.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                driverService.updateById(driver);
                accountChangeDetailService.saveData(accountChangeDetail1);
@@ -1562,7 +1616,7 @@
                        if(num1 > 0){
                            Driver driver1 = driverService.selectById(appUser.getInviterId());
                            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                            accountChangeDetail.setUserType(2);
                            accountChangeDetail.setUserId(driver1.getId());
                            accountChangeDetail.setType(1);
@@ -1570,8 +1624,8 @@
                            accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                            accountChangeDetail.setExplain("邀请用户奖励");
                            accountChangeDetail.setCreateTime(new Date());
                            driver1.setCommission(driver1.getCommission() + num1);
                            accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                            driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            driverService.updateById(driver1);
                            accountChangeDetailService.saveData(accountChangeDetail);
@@ -1592,7 +1646,7 @@
                                if(surplusDividedAmount.compareTo(num1_1) >= 0){
                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3);
                                    if(10000 == fengzhang.getCode()){
                                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num1_1);
                                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                        rechargeRecordService.updateById(rechargeRecord);
                                    }
                                    break;
@@ -1601,14 +1655,15 @@
                                    if(10000 == fengzhang.getCode()){
                                        rechargeRecord.setSurplusDividedAmount(0D);
                                        rechargeRecordService.updateById(rechargeRecord);
                                        num1_1 -= surplusDividedAmount;
                                        num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    }else{
                                        break;
                                    }
                                }
                            }
                        }
                        num3 = (num3 >= num1 ? num3 - num1 : 0);
                        double v = new BigDecimal(num3).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                        num3 = (num3 >= num1 ? v : 0);
                    }
                    //开始处理层级抽佣
@@ -1633,16 +1688,16 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver1.setCommission(driver1.getCommission() + num5);
                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
@@ -1654,7 +1709,7 @@
                                        if(surplusDividedAmount.compareTo(num5_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3);
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num5_1);
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
@@ -1663,14 +1718,14 @@
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(0D);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num5_1 -= surplusDividedAmount;
                                                num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    num3 = (num3 >= num5 ? num3 - num5 : 0);
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num5 ? v : 0);
                                }
                                num6 = (num3 >= num6 ? num6 : num3);
                                if(num6 > 0 && null != driver2){
@@ -1684,16 +1739,16 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver2.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver2.setCommission(driver2.getCommission() + num6);
                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver2);
                                    accountChangeDetailService.saveData(accountChangeDetail);
@@ -1705,7 +1760,7 @@
                                        if(surplusDividedAmount.compareTo(num6_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3);
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num6_1);
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
@@ -1714,13 +1769,14 @@
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(0D);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num6_1 -= surplusDividedAmount;
                                                num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    num3 = (num3 >= num6 ? num3 - num6 : 0);
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num6 ? v : 0);
                                }
                                num7 = (num3 >= num7 ? num7 : num3);
                                if(num7 > 0 && null != driver3){
@@ -1734,16 +1790,16 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver3.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver3.setCommission(driver3.getCommission() + num7);
                                    accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission());
                                    driver3.setCommission(new BigDecimal(driver3.getCommission()).add(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver3);
                                    accountChangeDetailService.saveData(accountChangeDetail);
@@ -1755,7 +1811,7 @@
                                        if(surplusDividedAmount.compareTo(num7_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3);
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num7_1);
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
@@ -1764,14 +1820,14 @@
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(0D);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num7_1 -= surplusDividedAmount;
                                                num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    num3 = (num3 >= num7 ? num3 - num7 : 0);
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num7 ? v : 0);
                                }
                            }else{
                                Double num3_ = jsonObject1.getDouble("num3");
@@ -1788,16 +1844,16 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver1.setCommission(driver1.getCommission() + num3_);
                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
@@ -1809,7 +1865,7 @@
                                        if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
@@ -1818,14 +1874,14 @@
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(0D);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num3_1 -= surplusDividedAmount;
                                                num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    num3 = (num3 >= num3_ ? num3 - num3_ : 0);
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num3_ ? v : 0);
                                }
                                num4 = (num3 >= num4 ? num4 : num3);
                                if(num4 > 0 && null != driver2){
@@ -1839,16 +1895,16 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver2.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver2.setCommission(driver2.getCommission() + num4);
                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver2);
                                    accountChangeDetailService.saveData(accountChangeDetail);
@@ -1860,7 +1916,7 @@
                                        if(surplusDividedAmount.compareTo(num4_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num4_1);
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
@@ -1869,14 +1925,14 @@
                                            if(10000 == fengzhang.getCode()){
                                                rechargeRecord.setSurplusDividedAmount(0D);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num4_1 -= surplusDividedAmount;
                                                num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    num3 = (num3 >= num4 ? num3 - num4 : 0);
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num4 ? v : 0);
                                }
                            }
                        }else{
@@ -1893,16 +1949,16 @@
                                revenueService.insert(revenue);
                                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                accountChangeDetail.setUserType(2);
                                accountChangeDetail.setUserId(driver1.getId());
                                accountChangeDetail.setType(1);
                                accountChangeDetail.setChangeType(5);
                                accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                accountChangeDetail.setExplain("订单分佣收入");
                                accountChangeDetail.setCreateTime(new Date());
                                driver1.setCommission(driver1.getCommission() + num2_);
                                accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                driverService.updateById(driver1);
                                accountChangeDetailService.saveData(accountChangeDetail);
@@ -1914,7 +1970,7 @@
                                    if(surplusDividedAmount.compareTo(num2_1) >= 0){
                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3);
                                        if(10000 == fengzhang.getCode()){
                                            rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num2_1);
                                            rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                            rechargeRecordService.updateById(rechargeRecord);
                                        }
                                        break;
@@ -1923,19 +1979,20 @@
                                        if(10000 == fengzhang.getCode()){
                                            rechargeRecord.setSurplusDividedAmount(0D);
                                            rechargeRecordService.updateById(rechargeRecord);
                                            num2_1 -= surplusDividedAmount;
                                            num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                        }else{
                                            break;
                                        }
                                    }
                                }
                                num3 = (num3 >= num2_ ? num3 - num2_ : 0);
                                double v = new BigDecimal(num3).subtract(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                num3 = (num3 >= num2_ ? v : 0);
                            }
                        }
                    }
                    //处理代理商抽佣
                    if(num3 > 0 && null != driver){
                        Double balance = revenueService.queryAgentBalance(driver.getAgentId());
                        Revenue revenue = new Revenue();
                        revenue.setType(1);
                        revenue.setUserType(3);
@@ -1954,7 +2011,7 @@
                            if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                if(10000 == fengzhang.getCode()){
                                    rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    rechargeRecordService.updateById(rechargeRecord);
                                }
                                break;
@@ -1963,12 +2020,21 @@
                                if(10000 == fengzhang.getCode()){
                                    rechargeRecord.setSurplusDividedAmount(0D);
                                    rechargeRecordService.updateById(rechargeRecord);
                                    num3_1 -= surplusDividedAmount;
                                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                }else{
                                    break;
                                }
                            }
                        }
                        CompanyFundFlow companyFundFlow = new CompanyFundFlow();
                        companyFundFlow.setType(3);
                        companyFundFlow.setObjectType(2);
                        companyFundFlow.setObjectId(driver.getAgentId());
                        companyFundFlow.setBalance(new BigDecimal(balance));
                        companyFundFlow.setMoney(new BigDecimal(num3));
                        companyFundFlow.setCreateTime(new Date());
                        companyFundFlowService.insert(companyFundFlow);
                    }
                }
            }
@@ -1993,22 +2059,22 @@
        revenue.setUserType(2);
        revenue.setUserId(driver.getId());
        revenue.setOrderId(order.getId());
        revenue.setAmount(order.getPayMoney() + order.getDiscountedPrice() + order.getDiscountAmount());
        revenue.setAmount(order.getPayMoney() + order.getDiscountedPrice());//todo 折扣司机承担
        revenue.setCreateTime(new Date());
        revenueService.insert(revenue);
        AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail1.setUserType(2);
        accountChangeDetail1.setUserId(driver.getId());
        accountChangeDetail1.setType(1);
        accountChangeDetail1.setChangeType(1);
        accountChangeDetail1.setOrderId(order.getId());
        accountChangeDetail1.setOldData(driver.getCouponBalance() + driver.getCommission());
        driver.setCommission(driver.getCommission() + order.getPayMoney());
        accountChangeDetail1.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getPayMoney())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        accountChangeDetail1.setExplain("订单收入");
        accountChangeDetail1.setCreateTime(new Date());
        accountChangeDetail1.setNewData(driver.getCouponBalance() + driver.getCommission());
        accountChangeDetail1.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driverService.updateById(driver);
        accountChangeDetailService.saveData(accountChangeDetail1);
@@ -2020,7 +2086,7 @@
            if(surplusDividedAmount.compareTo(num3_1) >= 0){
                ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                if(10000 == fengzhang.getCode()){
                    rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    rechargeRecordService.updateById(rechargeRecord);
                }
                break;
@@ -2029,7 +2095,7 @@
                if(10000 == fengzhang.getCode()){
                    rechargeRecord.setSurplusDividedAmount(0D);
                    rechargeRecordService.updateById(rechargeRecord);
                    num3_1 -= surplusDividedAmount;
                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                }else{
                    break;
                }
@@ -2039,21 +2105,22 @@
        if(null != order.getCouponId()){
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver.getId());
            accountChangeDetail.setType(1);
            accountChangeDetail.setChangeType(7);
            accountChangeDetail.setOrderId(order.getId());
            accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getDiscountedPrice())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setExplain("优惠券收入");
            accountChangeDetail.setCreateTime(new Date());
            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driverService.updateById(driver);
            accountChangeDetailService.saveData(accountChangeDetail);
            //补贴中分账
            Double balance = revenueService.queryCompanyBalance();
            Double discountedPrice = order.getDiscountedPrice();
            List<RechargeRecord> rechargeRecords1 = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
            for (RechargeRecord rechargeRecord : rechargeRecords1) {
@@ -2072,18 +2139,25 @@
                        Double remainAmount = zhaunzhang.getData();
                        rechargeRecord.setSurplusDividedAmount(remainAmount);
                        rechargeRecordService.updateById(rechargeRecord);
                        discountedPrice -= surplusDividedAmount;
                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                    }else{
                        break;
                    }
                }
            }
            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
            companyFundFlow.setBalance(new BigDecimal(balance));
            companyFundFlow.setObjectType(1);
            companyFundFlow.setType(5);
            companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
            companyFundFlow.setCreateTime(new Date());
            companyFundFlowService.insert(companyFundFlow);
        }
        // TODO: 2023/6/25 折扣优惠由司机承担
//        if(null != order.getDiscountAmount() && 0 < order.getDiscountAmount()){
//            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
//            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
//            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
//            accountChangeDetail.setUserType(2);
//            accountChangeDetail.setUserId(driver.getId());
//            accountChangeDetail.setType(1);
@@ -2143,17 +2217,17 @@
        revenueService.insert(revenue);
        AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail1.setUserType(2);
        accountChangeDetail1.setUserId(driver.getId());
        accountChangeDetail1.setType(1);
        accountChangeDetail1.setChangeType(1);
        accountChangeDetail1.setOrderId(order.getId());
        accountChangeDetail1.setOldData(driver.getCouponBalance() + driver.getCommission());
        driver.setCommission(driver.getCommission() + order.getPayMoney());
        accountChangeDetail1.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getPayMoney())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        accountChangeDetail1.setExplain("订单收入");
        accountChangeDetail1.setCreateTime(new Date());
        accountChangeDetail1.setNewData(driver.getCouponBalance() + driver.getCommission());
        accountChangeDetail1.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driverService.updateById(driver);
        accountChangeDetailService.saveData(accountChangeDetail1);
@@ -2166,14 +2240,14 @@
            if(10000 != fengzhang.getCode()){
                return;
            }
            order.setResidueWeChatPayment(order.getResidueWeChatPayment() - num3_1);
            order.setResidueWeChatPayment(new BigDecimal(order.getResidueWeChatPayment()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        }else{
            ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), null, order.getOrderNo(), residueWeChatPayment, 1);
            if(10000 != fengzhang.getCode()){
                return;
            }
            order.setResidueWeChatPayment(0D);
            num3_1 -= residueWeChatPayment;
            num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(residueWeChatPayment)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
            //账户余额继续分账
            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", appUser.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
@@ -2182,9 +2256,9 @@
                if(surplusDividedAmount.compareTo(num3_1) >= 0){
                    ResultUtil fengzhang1 = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                    if(10000 == fengzhang1.getCode()){
                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                        rechargeRecordService.updateById(rechargeRecord);
                        order.setResidueBalancePayment(residueBalancePayment - num3_1);
                        order.setResidueBalancePayment(new BigDecimal(residueBalancePayment).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    }
                    break;
                }else{
@@ -2192,8 +2266,8 @@
                    if(10000 == fengzhang1.getCode()){
                        rechargeRecord.setSurplusDividedAmount(0D);
                        rechargeRecordService.updateById(rechargeRecord);
                        num3_1 -= surplusDividedAmount;
                        order.setResidueBalancePayment(residueBalancePayment - surplusDividedAmount);
                        num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                        order.setResidueBalancePayment(new BigDecimal(residueBalancePayment).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    }else{
                        break;
                    }
@@ -2204,20 +2278,21 @@
        if(null != order.getCouponId()){
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver.getId());
            accountChangeDetail.setType(1);
            accountChangeDetail.setChangeType(7);
            accountChangeDetail.setOrderId(order.getId());
            accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getDiscountedPrice())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setExplain("优惠券收入");
            accountChangeDetail.setCreateTime(new Date());
            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driverService.updateById(driver);
            accountChangeDetailService.saveData(accountChangeDetail);
            //补贴中分账
            Double balance = revenueService.queryCompanyBalance();
            Double discountedPrice = order.getDiscountedPrice();
            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
            for (RechargeRecord rechargeRecord : rechargeRecords) {
@@ -2236,12 +2311,20 @@
                        Double remainAmount = zhaunzhang.getData();
                        rechargeRecord.setSurplusDividedAmount(remainAmount);
                        rechargeRecordService.updateById(rechargeRecord);
                        discountedPrice -= surplusDividedAmount;
                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                    }else{
                        break;
                    }
                }
            }
            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
            companyFundFlow.setBalance(new BigDecimal(balance));
            companyFundFlow.setObjectType(1);
            companyFundFlow.setType(5);
            companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
            companyFundFlow.setCreateTime(new Date());
            companyFundFlowService.insert(companyFundFlow);
        }
    }
@@ -2273,7 +2356,7 @@
        List<PamentOrderUser> splitList = new ArrayList<>();
        PamentOrderUser pamentOrderUser = new PamentOrderUser();
        pamentOrderUser.setSplitUserId(merchantNumber);
        pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        pamentOrderUser.setSplitType("1");
        splitList.add(pamentOrderUser);
        complete.setSplitList(splitList);
@@ -2292,14 +2375,14 @@
                divisionRecord.setPayTime(new Date());
                divisionRecord.setState(2);
                divisionRecordService.updateById(divisionRecord);
                //间隔10秒开始调用确认收货后开始提现
                //间隔1分钟开始调用确认收货后开始提现
                new Timer().schedule(new TimerTask() {//确认收货和提现
                    @Override
                    public void run() {
                        confirmReceipt(merchantNumber, merOrderId, divisionRecord);
                    }
                }, 15000);
                }, 60000);
                return ResultUtil.success();
            }
        }else{
@@ -2321,11 +2404,11 @@
        Receive receive = new Receive();
        receive.setOriginalMerOrderId(orderNumber);
        receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
        receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        List<ReceiveUser> splitList = new ArrayList<>();
        ReceiveUser receiveUser = new ReceiveUser();
        receiveUser.setSplitUserId(merchantNumber);
        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
        receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        splitList.add(receiveUser);
        receive.setSplitList(splitList);
        TrhRequest<Receive> request = new TrhRequest();
@@ -2353,7 +2436,7 @@
        Transfer transfer = new Transfer();
        transfer.setDepositMerOrderId(merOrderId);
        transfer.setToUserId(toUserId);
        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
        transfer.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        transfer.setOrderName("补贴");
        transfer.setNotifyUrl(notifyUrl);
        transfer.setParameter1(id.toString());