liujie
2023-08-10 aa241a47c90ed776062adf0b8daccf288a21836f
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
@@ -1,22 +1,26 @@
package com.supersavedriving.driver.modular.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.supersavedriving.driver.core.util.ToolUtil;
import com.supersavedriving.driver.modular.system.dao.CashWithdrawalMapper;
import com.supersavedriving.driver.modular.system.model.AccountChangeDetail;
import com.supersavedriving.driver.modular.system.model.CashWithdrawal;
import com.supersavedriving.driver.modular.system.model.Driver;
import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService;
import com.supersavedriving.driver.modular.system.service.ICashWithdrawalService;
import com.supersavedriving.driver.modular.system.service.IDriverService;
import com.supersavedriving.driver.modular.system.model.*;
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.PayMoneyUtil;
import com.supersavedriving.driver.modular.system.util.ResultUtil;
import com.supersavedriving.driver.modular.system.util.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;
/**
 * @author zhibing.pu
@@ -34,6 +38,15 @@
    @Autowired
    private IAccountChangeDetailService accountChangeDetailService;
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IDivisionRecordService divisionRecordService;
    @Value("${callbackPath}")
    private String callbackPath;
@@ -42,26 +55,30 @@
    /**
     * 司机提现操作
     * @param driverId
     * @param type
     * @param bankId
     * @param money
     * @return
     * @throws Exception
     */
    @Override
    public ResultUtil withdrawCash(Integer driverId, Integer type, Double money) throws Exception {
    public ResultUtil withdrawCash(Integer driverId, Integer type, Integer bankId, Double money) throws Exception {
        Driver driver = driverService.selectById(driverId);
        if(type == 1 && (null == driver.getBalance() || driver.getBalance() < money)){
            return ResultUtil.error("账户余额不足");
        if(type == 1 && (null == driver.getBalance() || driver.getBalance().compareTo(money) < 0)){
            return ResultUtil.error("余额不足");
        }
        if(type == 2 && (null == driver.getCommission() || driver.getCommission() < money)){
            return ResultUtil.error("佣金余额不足");
        if(type == 2 && (null == driver.getCommission() || driver.getCommission().compareTo(money) < 0)){
            return ResultUtil.error("收入余额不足");
        }
        if(ToolUtil.isEmpty(driver.getMerchantNumber())){
            return ResultUtil.error("请先注册商户号");
        }
        CashWithdrawal cashWithdrawal = new CashWithdrawal();
        cashWithdrawal.setType(2);
        cashWithdrawal.setUserDriverId(driverId);
        cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        cashWithdrawal.setBusinessType(type == 1 ? 12 : 11);
        cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        cashWithdrawal.setBusinessType(type == 2 ? 11 : 12);
        cashWithdrawal.setBankId(bankId);
        cashWithdrawal.setAmount(money);
        cashWithdrawal.setState(1);
        cashWithdrawal.setCreateTime(new Date());
@@ -69,37 +86,419 @@
        //增加记录
        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(type == 1 ? 4 : 6);
        if(type == 1){
            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            driver.setBalance(driver.getBalance() - money);
            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setExplain("账户余额提现");
            accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(money)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        }else{
            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setCommission(new BigDecimal(driver.getCommission()).subtract(new BigDecimal(money)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        }
        if(type == 2){
            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            driver.setCommission(driver.getCommission() - money);
            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setExplain("佣金余额提现");
        }
        accountChangeDetail.setExplain(type == 1 ? "账户余额提现" : "佣金余额提现");
        driverService.updateById(driver);
        accountChangeDetailService.saveData(accountChangeDetail);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String outDetailNo = sdf.format(new Date()) + cashWithdrawal.getId();
        String s = payMoneyUtil.weixinTransferMoney(outDetailNo, money, driver.getOpenid(), driver.getName(), "【超省新代驾】提现付款!");
        if(ToolUtil.isEmpty(s)){
            return ResultUtil.error("提现异常,请联系管理员");
        if(type == 1){//余额提现,调用分账接口 -->确认收货--->提现
            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2)
                    .eq("userId", driver.getId()).eq("payType", 1).eq("payStatus", 2).gt("surplusDividedAmount", 0));
            for (RechargeRecord rechargeRecord : rechargeRecords) {
                Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                if(surplusDividedAmount.compareTo(money) >= 0){//够分账
                    ResultUtil fenzhang = fenzhang(driver, rechargeRecord, cashWithdrawal, 3, money);
                    if(fenzhang.getCode() == 10000){
                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money);
                        rechargeRecordService.updateById(rechargeRecord);
                        break;
                    }else{
                        return fenzhang;
                    }
                }else{
                    ResultUtil fenzhang = fenzhang(driver, rechargeRecord, cashWithdrawal, 3, surplusDividedAmount);
                    if(fenzhang.getCode() == 10000){
                        rechargeRecord.setSurplusDividedAmount(0D);
                        rechargeRecordService.updateById(rechargeRecord);
                        money -= surplusDividedAmount;
                    }else{
                        return fenzhang;
                    }
                }
            }
        }else{//佣金提现,直接提现到银行卡
            Double finalMoney = money;
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    Withdraw withdraw = new Withdraw();
                    withdraw.setUserId(driver.getMerchantNumber());
                    withdraw.setAmount(new BigDecimal(finalMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                    withdraw.setOrderName("账户余额提现");
                    withdraw.setRemark("账户余额提现");
                    withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
                    withdraw.setParameter1(cashWithdrawal.getId().toString());
                    TrhRequest<Withdraw> request1 = new TrhRequest();
                    InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
                    if("0000".equals(execute.getCode())){
                        JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                        String merOrderId1 = jsonObject1.getString("merOrderId");
                        Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
                        if(1 == status){
                            cashWithdrawal.setOrderNumber(merOrderId1);
                            cashWithdrawal.setState(2);
                            CashWithdrawalServiceImpl.this.updateById(cashWithdrawal);
                        }
                        if(2 == status){
                            System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
                        }
                    }else{
                        System.err.println("结算接口异常【提现】:" + execute.getMsg());
                    }
                }
            }, 60000);
        }
        cashWithdrawal.setState(2);
        cashWithdrawal.setOrderNumber(s);
        this.updateById(cashWithdrawal);
        return ResultUtil.success();
    }
    /**
     * 司机提现,现将支付的订单进行分账
     * @param driver
     * @param amount
     * @param cashWithdrawal
     * @return
     */
    public ResultUtil fenzhang(Driver driver, Double amount, CashWithdrawal cashWithdrawal, Integer payType){
        List<RechargeRecord> rechargeRecords = new ArrayList<>();
        if(payType == 1){//司机充值
            rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2)
                    .eq("userId", driver.getId()).eq("payType", 1).eq("payStatus", 2).gt("surplusDividedAmount", 0));
        }
        if(payType == 2){//平台充值(补贴金额)
            rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>()
                   .eq("payType", 2).eq("payStatus", 2).gt("surplusDividedAmount", 0));
        }
        for (RechargeRecord rechargeRecord : rechargeRecords) {
            Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
            if(surplusDividedAmount.compareTo(amount) >= 0){//够分账
                DivisionRecord divisionRecord = new DivisionRecord();
                divisionRecord.setUserType(1);
                divisionRecord.setUserId(driver.getId());
                divisionRecord.setOrderId(rechargeRecord.getId().longValue());
                divisionRecord.setSourceType(payType == 1 ? 3 : 2);
                divisionRecord.setAmount(amount);
                divisionRecord.setMerchantNumber(driver.getMerchantNumber());
                divisionRecord.setState(1);
                divisionRecord.setCreateTime(new Date());
                divisionRecordService.insert(divisionRecord);
                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - amount);
                rechargeRecordService.updateById(rechargeRecord);
                Complete complete = new Complete();
                complete.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
                complete.setNotifyUrl(callbackPath + "/base/driver/withdrawCashFZCallback");
                complete.setParameter1(divisionRecord.getId().toString());
                complete.setParameter2(rechargeRecord.getId() + "_" + cashWithdrawal.getId());
                //分账方列表
                List<PamentOrderUser> splitList = new ArrayList<>();
                PamentOrderUser pamentOrderUser = new PamentOrderUser();
                pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
                pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                pamentOrderUser.setSplitType("1");
                splitList.add(pamentOrderUser);
                complete.setSplitList(splitList);
                TrhRequest<Complete> request = new TrhRequest();
                InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject = JSON.parseObject(execute.getResult());
                    Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
                    String merOrderId = jsonObject.getString("merOrderId");
                    if(2 == status){
                        System.err.println("司机提现分账失败:" + execute.getMsg());
                        break;
                    }
                    if(1 == status){
                        divisionRecord.setMerOrderId(merOrderId);
                        divisionRecord.setPayTime(new Date());
                        divisionRecord.setState(2);
                        divisionRecordService.updateById(divisionRecord);
                        //间隔10秒开始调用确认收货后开始提现
                        new Timer().schedule(new TimerTask() {//确认收货和提现
                            @Override
                            public void run() {
                                confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                            }
                        }, 60000);
                    }
                }else{
                    System.err.println("司机提现分账处理异常 :" + execute.getMsg());
                    return ResultUtil.error("司机提现分账处理异常 :" + execute.getMsg());
                }
            }else{//不够分账
                DivisionRecord divisionRecord = new DivisionRecord();
                divisionRecord.setUserType(1);
                divisionRecord.setUserId(driver.getId());
                divisionRecord.setOrderId(rechargeRecord.getId().longValue());
                divisionRecord.setSourceType(payType == 1 ? 3 : 2);
                divisionRecord.setAmount(surplusDividedAmount);
                divisionRecord.setMerchantNumber(driver.getMerchantNumber());
                divisionRecord.setState(1);
                divisionRecord.setCreateTime(new Date());
                divisionRecordService.insert(divisionRecord);
                rechargeRecord.setSurplusDividedAmount(0D);
                rechargeRecordService.updateById(rechargeRecord);
                Complete complete = new Complete();
                complete.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
                complete.setNotifyUrl(callbackPath + "/base/driver/withdrawCashFZCallback");
                complete.setParameter1(divisionRecord.getId().toString());
                //分账方列表
                List<PamentOrderUser> splitList = new ArrayList<>();
                PamentOrderUser pamentOrderUser = new PamentOrderUser();
                pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
                pamentOrderUser.setSplitAmount(new BigDecimal(surplusDividedAmount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                pamentOrderUser.setSplitType("1");
                splitList.add(pamentOrderUser);
                complete.setSplitList(splitList);
                TrhRequest<Complete> request = new TrhRequest();
                InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject = JSON.parseObject(execute.getResult());
                    Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
                    String merOrderId = jsonObject.getString("merOrderId");
                    if(2 == status){
                        System.err.println("司机提现分账失败:" + execute.getMsg());
                        break;
                    }
                    if(1 == status){
                        divisionRecord.setMerOrderId(merOrderId);
                        divisionRecord.setPayTime(new Date());
                        divisionRecord.setState(2);
                        divisionRecordService.updateById(divisionRecord);
                        //间隔10秒开始调用确认收货后开始提现
                        new Timer().schedule(new TimerTask() {//确认收货和提现
                            @Override
                            public void run() {
                                confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                            }
                        }, 60000);
                    }
                }else{
                    System.err.println("司机提现分账处理异常 :" + execute.getMsg());
                    return ResultUtil.error("司机提现分账处理异常 :" + execute.getMsg());
                }
                amount -= surplusDividedAmount;
            }
        }
        return ResultUtil.success();
    }
    public ResultUtil fenzhang(Driver driver, RechargeRecord rechargeRecord, CashWithdrawal cashWithdrawal, Integer sourceType, Double amount){
        DivisionRecord divisionRecord = new DivisionRecord();
        divisionRecord.setUserType(1);
        divisionRecord.setUserId(driver.getId());
        divisionRecord.setOrderId(rechargeRecord.getId().longValue());
        divisionRecord.setSourceType(sourceType);
        divisionRecord.setAmount(amount);
        divisionRecord.setMerchantNumber(driver.getMerchantNumber());
        divisionRecord.setState(1);
        divisionRecord.setCreateTime(new Date());
        divisionRecordService.insert(divisionRecord);
        Complete complete = new Complete();
        complete.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
        complete.setNotifyUrl(callbackPath + "/base/driver/withdrawCashFZCallback");
        complete.setParameter1(divisionRecord.getId().toString());
        //分账方列表
        List<PamentOrderUser> splitList = new ArrayList<>();
        PamentOrderUser pamentOrderUser = new PamentOrderUser();
        pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        pamentOrderUser.setSplitType("1");
        splitList.add(pamentOrderUser);
        complete.setSplitList(splitList);
        TrhRequest<Complete> request = new TrhRequest();
        InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
        if("0000".equals(execute.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
            String merOrderId = jsonObject.getString("merOrderId");
            if(2 == status){
                System.err.println("司机提现分账失败:" + execute.getMsg());
                return ResultUtil.error("司机提现分账失败 :" + execute.getMsg());
            }
            if(1 == status){
                divisionRecord.setMerOrderId(merOrderId);
                divisionRecord.setPayTime(new Date());
                divisionRecord.setState(2);
                divisionRecordService.updateById(divisionRecord);
                //间隔10秒开始调用确认收货后开始提现
                new Timer().schedule(new TimerTask() {//确认收货和提现
                    @Override
                    public void run() {
                        confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                    }
                }, 60000);
            }
        }else{
            System.err.println("司机提现分账处理异常 :" + execute.getMsg());
            return ResultUtil.error("司机提现分账处理异常 :" + execute.getMsg());
        }
        return ResultUtil.success();
    }
    /**
     * 分账后的确认收货和提现操作
     * @param driver
     * @param rechargeRecord
     * @param divisionRecord
     * @param cashWithdrawal
     */
    public void confirmReceipt(Driver driver, RechargeRecord rechargeRecord, DivisionRecord divisionRecord, CashWithdrawal cashWithdrawal){
        Receive receive = new Receive();
        receive.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
        receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
        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(driver.getMerchantNumber());
        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();
        InterfaceResponse execute1 = request.execute(receive, Receive.SERVICE_CODE);//确认收货
        if("0000".equals(execute1.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute1.getResult());
            String merOrderId = jsonObject.getString("merOrderId");
            if(ToolUtil.isNotEmpty(merOrderId)){
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        Withdraw withdraw = new Withdraw();
                        withdraw.setUserId(driver.getMerchantNumber());
                        withdraw.setAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                        withdraw.setOrderName("账户余额提现");
                        withdraw.setRemark("账户余额提现");
                        withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
                        withdraw.setParameter1(cashWithdrawal.getId().toString());
                        TrhRequest<Withdraw> request1 = new TrhRequest();
                        InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
                        if("0000".equals(execute.getCode())){
                            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                            String merOrderId1 = jsonObject1.getString("merOrderId");
                            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
                            if(1 == status){
                                cashWithdrawal.setOrderNumber(merOrderId1);
                                cashWithdrawal.setState(2);
                                CashWithdrawalServiceImpl.this.updateById(cashWithdrawal);
                            }
                            if(2 == status){
                                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
                            }
                        }else{
                            System.err.println("结算接口异常【提现】:" + execute.getMsg());
                        }
                    }
                }, 60000);
            }
        }else{
            System.err.println("分账确认收货异常【提现】:" + execute1.getMsg());
        }
    }
    /**
     * 提现分账的异步回调
     * @param interfaceResponse
     */
    @Override
    public void withdrawCashFZCallback(InterfaceResponse interfaceResponse) {
        if("0000".equals(interfaceResponse.getCode())){
            JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
            Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
            String merOrderId = jsonObject.getString("merOrderId");
            if(2 == status){
                System.err.println("司机提现分账失败:" + interfaceResponse.getMsg());
                return;
            }
            if(1 == status){
                String parameter1 = jsonObject.getString("parameter1");
                String parameter2 = jsonObject.getString("parameter2");
                DivisionRecord divisionRecord = divisionRecordService.selectById(parameter1);
                if(divisionRecord.getState() == 2){
                    return;
                }
                divisionRecord.setMerOrderId(merOrderId);
                divisionRecord.setPayTime(new Date());
                divisionRecord.setState(2);
                divisionRecordService.updateById(divisionRecord);
                Driver driver = driverService.selectById(divisionRecord.getUserId());
                String[] s = parameter2.split("_");
                RechargeRecord rechargeRecord = rechargeRecordService.selectById(s[0]);
                CashWithdrawal cashWithdrawal = this.selectById(s[1]);
                //间隔10秒开始调用确认收货后开始提现
                new Timer().schedule(new TimerTask() {//确认收货和提现
                    @Override
                    public void run() {
                        confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                    }
                }, 60000);
            }
        }else{
            System.err.println("司机提现分账异常:" + interfaceResponse.getMsg());
        }
    }
    /**
     * 提现确认收货后的结算回调
     * @param interfaceResponse
     */
    @Override
    public void withdrawCashCallback(InterfaceResponse interfaceResponse) {
        if("0000".equals(interfaceResponse.getCode())){
            JSONObject jsonObject1 = JSON.parseObject(interfaceResponse.getResult());
            String merOrderId1 = jsonObject1.getString("merOrderId");
            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
            if(1 == status){
                String parameter1 = jsonObject1.getString("parameter1");
                CashWithdrawal cashWithdrawal = this.selectById(parameter1);
                cashWithdrawal.setOrderNumber(merOrderId1);
                cashWithdrawal.setState(2);
                this.updateById(cashWithdrawal);
            }
            if(2 == status){
                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
            }
        }else{
            System.err.println("结算接口异常【提现】:" + interfaceResponse.getMsg());
        }
    }
}