From 9d5309c820d525b46e65490475957b641707db51 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期三, 16 八月 2023 15:57:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java | 467 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 433 insertions(+), 34 deletions(-)
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
index 2c5b893..40fcfa2 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
+++ b/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());
+ }
+ }
+
+
+
+
}
--
Gitblit v1.7.1