From 84620b593b9034bb28ba23c730392991cdf37a8b Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 03 七月 2023 18:05:38 +0800 Subject: [PATCH] 修改bug --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java | 142 ++++++++++++++++++++++++++--------------------- 1 files changed, 79 insertions(+), 63 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 618cbaf..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 @@ -17,6 +17,8 @@ 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.*; @@ -74,7 +76,7 @@ CashWithdrawal cashWithdrawal = new CashWithdrawal(); cashWithdrawal.setType(2); cashWithdrawal.setUserDriverId(driverId); - cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); cashWithdrawal.setBusinessType(type == 2 ? 11 : 12); cashWithdrawal.setBankId(bankId); cashWithdrawal.setAmount(money); @@ -84,19 +86,19 @@ //增加记录 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.setBalance(driver.getBalance() - money); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); + 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(driver.getCommission() + driver.getCouponBalance()); - driver.setCommission(driver.getCommission() - money); - accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); + 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()); } accountChangeDetail.setExplain(type == 1 ? "账户余额提现" : "佣金余额提现"); driverService.updateById(driver); @@ -129,30 +131,36 @@ } } }else{//佣金提现,直接提现到银行卡 - Withdraw withdraw = new Withdraw(); - withdraw.setUserId(driver.getMerchantNumber()); - withdraw.setAmount(String.valueOf(Double.valueOf(money * 100).intValue())); - 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); - this.updateById(cashWithdrawal); + 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()); + } } - if(2 == status){ - System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); - } - }else{ - System.err.println("结算接口异常【提现】:" + execute.getMsg()); - } + }, 60000); } return ResultUtil.success(); } @@ -205,7 +213,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(driver.getMerchantNumber()); - 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); @@ -231,7 +239,7 @@ public void run() { confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal); } - }, 15000); + }, 60000); } }else{ System.err.println("司机提现分账处理异常 :" + execute.getMsg()); @@ -260,7 +268,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(driver.getMerchantNumber()); - pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(surplusDividedAmount * 100).intValue())); + pamentOrderUser.setSplitAmount(new BigDecimal(surplusDividedAmount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); pamentOrderUser.setSplitType("1"); splitList.add(pamentOrderUser); complete.setSplitList(splitList); @@ -286,7 +294,7 @@ public void run() { confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal); } - }, 15000); + }, 60000); } }else{ System.err.println("司机提现分账处理异常 :" + execute.getMsg()); @@ -320,7 +328,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(driver.getMerchantNumber()); - 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); @@ -346,7 +354,7 @@ public void run() { confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal); } - }, 15000); + }, 60000); } }else{ System.err.println("司机提现分账处理异常 :" + execute.getMsg()); @@ -369,11 +377,11 @@ Receive receive = new Receive(); receive.setOriginalMerOrderId(rechargeRecord.getOrderNumber()); 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(driver.getMerchantNumber()); - 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(); @@ -382,30 +390,35 @@ JSONObject jsonObject = JSON.parseObject(execute1.getResult()); String merOrderId = jsonObject.getString("merOrderId"); if(ToolUtil.isNotEmpty(merOrderId)){ - Withdraw withdraw = new Withdraw(); - withdraw.setUserId(driver.getMerchantNumber()); - withdraw.setAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); - 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); - this.updateById(cashWithdrawal); + 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()); + } } - if(2 == status){ - System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); - } - }else{ - System.err.println("结算接口异常【提现】:" + execute.getMsg()); - } + }, 60000); } }else{ System.err.println("分账确认收货异常【提现】:" + execute1.getMsg()); @@ -434,6 +447,9 @@ 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); @@ -449,7 +465,7 @@ public void run() { confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal); } - }, 15000); + }, 60000); } }else{ System.err.println("司机提现分账异常:" + interfaceResponse.getMsg()); -- Gitblit v1.7.1