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/api/DriverController.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 179 +++++++----- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java | 20 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java | 142 +++++---- driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java | 53 +++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java | 36 +- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java | 5 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java | 18 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java | 32 +- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java | 23 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java | 23 + user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java | 18 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java | 8 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java | 4 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java | 2 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 244 +++++++++-------- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java | 4 17 files changed, 474 insertions(+), 339 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java index a022ae5..6ab5c2d 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java @@ -9,9 +9,7 @@ import com.supersavedriving.driver.modular.system.model.JoiningRequirements; import com.supersavedriving.driver.modular.system.service.*; import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse; -import com.supersavedriving.driver.modular.system.util.MallBook.model.Register; import com.supersavedriving.driver.modular.system.util.MallBook.util.RSASignature; -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.huawei.OBSUtil; import com.supersavedriving.driver.modular.system.util.huawei.SMSUtil; diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java index ee7f73e..18c2ef5 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java @@ -35,6 +35,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @@ -589,18 +591,31 @@ } String merOrderId = jsonObject.getString("merOrderId"); String divisionRecordId = jsonObject.getString("parameter1"); + DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId); + if(divisionRecord.getState() == 2){ + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + return; + } + divisionRecord.setMerOrderId(merOrderId); + divisionRecord.setPayTime(new Date()); + divisionRecord.setState(2); + divisionRecordService.updateById(divisionRecord); + //确认收货 new Timer().schedule(new TimerTask() { @Override public void run() { - DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId); Receive receive = new Receive();//确认收货 receive.setOriginalMerOrderId(merOrderId); - 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(divisionRecord.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> request1 = new TrhRequest(); @@ -617,7 +632,7 @@ logger.warn("确认收货处理中"); } } - }, 15000); + }, 60000); response.setStatus(200); PrintWriter out = response.getWriter(); out.print("OK"); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java index 5b2ada5..0974101 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java @@ -86,10 +86,10 @@ * 优惠券数量 */ @TableField("coupon_count") - private Integer couponCount; + private Long couponCount; /** * 剩余数量 */ @TableField("remaining_quantity") - private Integer remainingQuantity; + private Long remainingQuantity; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java index 2fb82ef..41c7c86 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java @@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Date; import java.util.List; @@ -138,14 +140,14 @@ driver.setBackgroundBalance(0D); }else if(backgroundBalance >= d){ 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(8); - accountChangeDetail.setOldData(all); + accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); driver.setBackgroundBalance(driver.getBackgroundBalance() - d); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); + accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); @@ -154,14 +156,14 @@ if(d > 0){ if(balance > 0 && balance >= d){ 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(8); - accountChangeDetail.setOldData(all); - driver.setBalance(driver.getBalance() - d); - 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(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); @@ -172,7 +174,7 @@ if(surplusDividedAmount.compareTo(d) >= 0){ ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", null, rechargeRecord.getId(), rechargeRecord.getOrderNumber(), d, 1); if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - d); + rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); rechargeRecordService.updateById(rechargeRecord); } break; @@ -181,7 +183,7 @@ if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); - d -= surplusDividedAmount; + d = new BigDecimal(d).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); }else{ break; } 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()); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java index bb8f25a..cabe128 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java @@ -41,6 +41,8 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.InetAddress; import java.text.SimpleDateFormat; import java.util.*; @@ -149,7 +151,7 @@ //新账号 if(null == driver){ driver = new Driver(); - driver.setCode(UUIDUtil.getNumberRandom(16)); + driver.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); try { driver = setDriverParamete(driver, driverRegisterWarpper); }catch (Exception e){ @@ -166,7 +168,7 @@ Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7"); if(num7 > 0){ 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); @@ -584,7 +586,7 @@ if(h > 0 && h > time){ Driver driver = this.selectById(driverId); AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driverId); accountChangeDetail.setType(2); @@ -613,8 +615,8 @@ DriverInfoWarpper driverInfo = new DriverInfoWarpper(); BeanUtils.copyProperties(driver, driverInfo); driverInfo.setWithdrawBalance(driver.getBalance()); - driverInfo.setBalance(driver.getBalance() + driver.getBackgroundBalance());//司机充值+平台充值 - driverInfo.setCommission(driver.getCommission() + driver.getCouponBalance());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入 + driverInfo.setBalance(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机充值+平台充值 + driverInfo.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(driver.getCouponBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入 YouTuiDriver youTuiDriver = youTuiDriverService.selectOne(new EntityWrapper<YouTuiDriver>().eq("driverId", uid) .eq("state", 2).last(" and failureTime > now() order by failureTime limit 0, 1")); if(null != youTuiDriver){ @@ -693,7 +695,7 @@ List<AccountChangeDetail> list = new ArrayList<>(); for (Driver driver : drivers) { 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.setCreateTime(new Date()); @@ -717,7 +719,7 @@ Driver driver = this.selectById(uid); //调起微信 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3); + String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); RechargeRecord rechargeRecord = new RechargeRecord(); rechargeRecord.setType(2); rechargeRecord.setUserId(uid); @@ -731,7 +733,7 @@ PaymentOrder paymentOrder = new PaymentOrder(); paymentOrder.setBizOrderId(out_trade_no); - paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); + paymentOrder.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); paymentOrder.setOrderName("账户充值"); paymentOrder.setPayType("WX_MINI"); paymentOrder.setTransferType("0"); @@ -792,14 +794,14 @@ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver1.getId()); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setChangeType(3); accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance()); - driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount()); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance()); + accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); DriverServiceImpl.this.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -865,14 +867,14 @@ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(rechargeRecord1.getUserId()); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setChangeType(3); accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance()); - driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount()); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance()); + accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); this.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -971,7 +973,7 @@ public ResultUtil microenterprise(Integer uid, String name, String number, String phone, String notifyUrl) throws Exception { Driver driver = this.selectById(uid); Register registerVO = new Register(); - registerVO.setMerUserId("driver_" + uid); + registerVO.setMerUserId(driver.getCode());//"driver_" + uid registerVO.setPhone(phone); registerVO.setUserType("0"); registerVO.setUserName(name); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java index d34832b..9502b6e 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java @@ -70,7 +70,7 @@ String toLonLat = orderPositionWarpper1.getLon() + "," + orderPositionWarpper1.getLat(); Map<String, Double> distance = GeodesyUtil.getDistance(fromLonLat, toLonLat); Double wgs84 = distance.get("WGS84"); - if(wgs84 >= 80){ + if(wgs84 >= 50){ OrderPositionWarpper orderPositionWarpper = new OrderPositionWarpper(); BeanUtils.copyProperties(driverPositionWarpper, orderPositionWarpper); orderPositionWarpper.setInsertTime(new Date()); @@ -103,7 +103,7 @@ Order order = orderService.selectById(driverPositionWarpper.getOrderId()); Double wgs84 = distance.get("WGS84"); Integer num = map.get(order.getId().toString()); - if(80 < wgs84){ + if(50 < wgs84){ order.setActualMileage(order.getActualMileage() + wgs84.intValue()); orderService.updateById(order); map.put(order.getId().toString(), 0); @@ -119,7 +119,7 @@ } } } - if(80 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据) + if(50 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据) Integer integer = map.get(order.getId().toString()); map.put(order.getId().toString(), null == integer ? 0 : integer++); //进入等待状态 @@ -132,7 +132,7 @@ e.printStackTrace(); } } - if(80 >= wgs84 && 12 > (null == num ? 0 : num)){ + if(50 >= wgs84 && 12 > (null == num ? 0 : num)){ Integer integer = map.get(order.getId().toString()); map.put(order.getId().toString(), null == integer ? 0 : integer++); } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index f76f109..a25c1ad 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -163,7 +163,7 @@ driver.setServerStatus(2); order.setOrderTakingTime(new Date()); } - order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3)); + order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5)); order.setSource(2); AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>().eq("phone", addOrderWarpper.getPhone()).eq("status", 1)); @@ -732,7 +732,7 @@ Integer num10 = JSON.parseObject(systemConfig.getContent()).getInteger("num10"); if (num10 > 0) { AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(uid); accountChangeDetail.setType(2); @@ -1018,7 +1018,7 @@ Integer num5 = JSON.parseObject(systemConfig.getContent()).getInteger("num5"); if(num5 > 0){ 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.setType(2); @@ -1043,7 +1043,7 @@ Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8"); if(num8 > 0){ 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.setType(2); @@ -1304,6 +1304,18 @@ */ @Override public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception { + if(108 == state){ + String value = redisUtil.getValue("repeat_" + orderId.toString()); + if(ToolUtil.isEmpty(value)){ + redisUtil.setStrValue("repeat_" + orderId, System.currentTimeMillis() + "", 10 * 60); + }else{ + Long s = System.currentTimeMillis() - Long.valueOf(value); + if(s < 60000){//1分钟 + return ResultUtil.error("数据处理中"); + } + } + } + List<Integer> s = Arrays.asList(107, 108); if(!s.contains(state)){ return ResultUtil.error("操作失败,请刷新订单"); @@ -1323,17 +1335,17 @@ Driver driver = driverService.selectById(order.getDriverId()); 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()); - accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); - driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); + driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); @@ -1356,7 +1368,7 @@ 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; } @@ -1378,6 +1390,9 @@ if(null != order.getUserId()){ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState()); } + if(108 == state){ + redisUtil.remove("repeat_" + orderId.toString()); + } return ResultUtil.success(); } @@ -1396,7 +1411,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()); @@ -1439,7 +1454,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); @@ -1464,17 +1479,17 @@ if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金 driver = driverService.selectById(order.getDriverId()); 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); @@ -1492,16 +1507,16 @@ 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); 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() + 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()); accountChangeDetailService.saveData(accountChangeDetail); driverService.updateById(driver1); @@ -1521,7 +1536,7 @@ if(surplusDividedAmount.compareTo(num1_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1530,7 +1545,7 @@ if(fengzhang.getCode() == 10000){ 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; } @@ -1538,7 +1553,8 @@ } } - 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); } //开始处理层级抽佣 @@ -1563,16 +1579,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); @@ -1583,7 +1599,7 @@ if(surplusDividedAmount.compareTo(num5_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1592,14 +1608,14 @@ if(fengzhang.getCode() == 10000){ 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){ @@ -1613,16 +1629,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); @@ -1633,7 +1649,7 @@ if(surplusDividedAmount.compareTo(num6_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1642,14 +1658,14 @@ if(fengzhang.getCode() == 10000){ 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){ @@ -1663,16 +1679,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); @@ -1683,7 +1699,7 @@ if(surplusDividedAmount.compareTo(num7_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1692,14 +1708,14 @@ if(fengzhang.getCode() == 10000){ 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"); @@ -1716,16 +1732,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); @@ -1736,7 +1752,7 @@ if(surplusDividedAmount.compareTo(num3_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1745,14 +1761,14 @@ if(fengzhang.getCode() == 10000){ 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){ @@ -1766,16 +1782,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); @@ -1786,7 +1802,7 @@ if(surplusDividedAmount.compareTo(num4_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1795,14 +1811,14 @@ if(fengzhang.getCode() == 10000){ 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{ @@ -1819,16 +1835,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); @@ -1839,7 +1855,7 @@ if(surplusDividedAmount.compareTo(num2_1) >= 0){ ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3); if(fengzhang.getCode() == 10000){ - 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; @@ -1848,13 +1864,14 @@ if(fengzhang.getCode() == 10000){ 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); } } } @@ -1876,7 +1893,7 @@ if(surplusDividedAmount.compareTo(num3) >= 0){ ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3, 3); if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3); + rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); rechargeRecordService.updateById(rechargeRecord); } break; @@ -1885,7 +1902,7 @@ if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); - num3 -= surplusDividedAmount; + num3 = new BigDecimal(num3).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); }else{ break; } @@ -1925,7 +1942,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); @@ -1944,14 +1961,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{ @@ -1973,11 +1990,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(); @@ -2171,17 +2188,17 @@ Driver driver = driverService.selectById(order.getDriverId()); 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()); - accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); - driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); + driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); @@ -2204,7 +2221,7 @@ 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; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java index 1f958c6..93d0138 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java @@ -125,7 +125,7 @@ } AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driverId); accountChangeDetail.setType(2); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java new file mode 100644 index 0000000..d65c884 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java @@ -0,0 +1,23 @@ +package com.supersavedriving.driver.modular.system.util.MallBook.model; + +/** + * @Author xiaogc + * @Date 2021/9/18 9:41 + */ +public class QueryUser { + /**业务类型编号,必须和接口文档一致*/ + public static String SERVICE_CODE = "queryUser"; + /** + * 业务系统会员id + */ + + private String merUserId; + + public String getMerUserId() { + return merUserId; + } + + public void setMerUserId(String merUserId) { + this.merUserId = merUserId; + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java index cc801eb..9f2033b 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java @@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletRequest; import java.io.*; import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.InetAddress; import java.net.UnknownHostException; import java.security.*; @@ -718,14 +719,14 @@ initiateBatchTransferRequest.setOutBatchNo(outDetailNo); initiateBatchTransferRequest.setBatchName("付款"); initiateBatchTransferRequest.setBatchRemark(remark); - initiateBatchTransferRequest.setTotalAmount(amount.longValue() * 100); + initiateBatchTransferRequest.setTotalAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue()); initiateBatchTransferRequest.setTotalNum(1); { List<TransferDetailInput> transferDetailListList = new ArrayList<>(); { TransferDetailInput transferDetailInput = new TransferDetailInput(); transferDetailInput.setOutDetailNo(outDetailNo); - transferDetailInput.setTransferAmount(amount.longValue() * 100); + transferDetailInput.setTransferAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue()); transferDetailInput.setTransferRemark(remark); transferDetailInput.setOpenid(openid); if(amount > 0.3){ diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java index 04bf0a5..6a9780c 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java @@ -65,22 +65,22 @@ @Override public void run() { try { - Thread.sleep(30000); - new Timer().schedule(new TimerTask() { - @Override - public void run() { - try { - String wxAppletsAccessToken = getWxAppletsAccessToken(); - if(ToolUtil.isEmpty(wxAppletsAccessToken)){ - System.err.println("获取微信小程序access_token失败"); - return; - } - redisUtil.setStrValue("wxAppletsAccessToken", wxAppletsAccessToken, 7000); - }catch (Exception e){ - e.printStackTrace(); - } - } - }, 0, 7000000); +// Thread.sleep(30000); +// new Timer().schedule(new TimerTask() { +// @Override +// public void run() { +// try { +// String wxAppletsAccessToken = getWxAppletsAccessToken(); +// if(ToolUtil.isEmpty(wxAppletsAccessToken)){ +// System.err.println("获取微信小程序access_token失败"); +// return; +// } +// redisUtil.setStrValue("wxAppletsAccessToken", wxAppletsAccessToken, 7000); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// } +// }, 0, 7000000); }catch (Exception e){ e.printStackTrace(); } diff --git a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java index 2ccf046..6b56cfa 100644 --- a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java +++ b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java @@ -5,10 +5,9 @@ // import com.baomidou.mybatisplus.mapper.EntityWrapper; // import com.supersavedriving.driver.modular.system.model.*; // import com.supersavedriving.driver.modular.system.service.*; +// import com.supersavedriving.driver.modular.system.service.impl.CashWithdrawalServiceImpl; // import com.supersavedriving.driver.modular.system.service.impl.OrderServiceImpl; -// import com.supersavedriving.driver.modular.system.util.MallBook.model.Complete; -// import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse; -// import com.supersavedriving.driver.modular.system.util.MallBook.model.PamentOrderUser; +// 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.ResultUtil; // import com.supersavedriving.driver.modular.system.util.UUIDUtil; @@ -61,13 +60,57 @@ // @Autowired // private IDivisionRecordService divisionRecordService; // +// @Autowired +// private ICashWithdrawalService cashWithdrawalService; +// // // // // @Test // public void test() throws Exception { -// OrderPriceWarpper orderPriceWarpper = orderService.queryOrderPrice(1, 1136L); -// System.err.println(orderPriceWarpper); +//// Withdraw withdraw = new Withdraw(); +//// withdraw.setUserId("79796121680"); +//// withdraw.setAmount(String.valueOf(Double.valueOf(54.48 * 100).intValue())); +//// withdraw.setOrderName("账户余额提现"); +//// withdraw.setRemark("账户余额提现"); +//// withdraw.setNotifyUrl("https://chaoshengdaijia.com:443/driver/base/driver/withdrawCashCallback"); +//// withdraw.setParameter1("1"); +//// 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){ +//// } +//// if(2 == status){ +//// System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); +//// } +//// }else{ +//// System.err.println("结算接口异常【提现】:" + execute.getMsg()); +//// } +// +// +// +//// QueryUser queryUser = new QueryUser(); +//// /** +//// * 业务系统会员ID(必填) 字段长度最长:32位 +//// */ +//// queryUser.setMerUserId("driver_13"); +//// TrhRequest<QueryUser> request = new TrhRequest(); +//// InterfaceResponse execute = request.execute(queryUser, QueryUser.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){ +//// } +//// if(2 == status){ +//// System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); +//// } +//// }else{ +//// System.err.println("结算接口异常【提现】:" + execute.getMsg()); +//// } // } // //} diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java index d9ab0f3..bbc9e0c 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java @@ -26,6 +26,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -373,9 +375,9 @@ if(2 == status){ Order order = orderService.selectById(orderId); AccountChangeDetail accountChangeDetail = accountChangeDetailService.selectById(parameter2); - Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData(); + Double m = new BigDecimal(accountChangeDetail.getOldData()).subtract(new BigDecimal(accountChangeDetail.getNewData())).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); AppUser appUser1 = appUserService.selectById(order.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()); System.err.println("支付失败"); @@ -456,18 +458,22 @@ } String merOrderId = jsonObject.getString("merOrderId"); String divisionRecordId = jsonObject.getString("parameter1"); + DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId); + if(divisionRecord.getState() == 2){ + + } + //确认收货 new Timer().schedule(new TimerTask() { @Override public void run() { - DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId); Receive receive = new Receive();//确认收货 receive.setOriginalMerOrderId(merOrderId); - 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(divisionRecord.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> request1 = new TrhRequest(); @@ -484,7 +490,7 @@ logger.warn("确认收货处理中"); } } - }, 15000); + }, 60000); response.setStatus(200); PrintWriter out = response.getWriter(); out.print("OK"); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java index 62fc95b..ec141b3 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java @@ -86,10 +86,10 @@ * 优惠券数量 */ @TableField("coupon_count") - private Integer couponCount; + private Long couponCount; /** * 剩余数量 */ @TableField("remaining_quantity") - private Integer remainingQuantity; + private Long remainingQuantity; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java index 16448d2..a5810ad 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java @@ -39,7 +39,9 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.math.BigInteger; +import java.math.RoundingMode; import java.net.InetAddress; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -241,7 +243,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()); @@ -274,7 +276,7 @@ .eq("coupon_state", 1).eq("status", 1).gt("remaining_quantity", 0)); List<CouponWarpper> list = new ArrayList<>(); for (Coupon coupon : coupons) { - Integer num = coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ? + Long num = coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ? coupon.getRemainingQuantity() : coupon.getCouponSendQuantity(); for (int i = 0; i < num; i++) { UserToCoupon userToCoupon = new UserToCoupon(); @@ -372,7 +374,7 @@ return ResultUtil.error("充值金额必须大于0"); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3); + String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); AppUser appUser = this.selectById(uid); RechargeRecord rechargeRecord = new RechargeRecord(); rechargeRecord.setType(1); @@ -386,7 +388,7 @@ PaymentOrder paymentOrder = new PaymentOrder(); paymentOrder.setBizOrderId(out_trade_no); - paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); + paymentOrder.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); paymentOrder.setOrderName("账户充值"); paymentOrder.setPayType("WX_MINI"); paymentOrder.setTransferType("0"); @@ -447,13 +449,13 @@ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setUserType(1); accountChangeDetail.setUserId(appUser1.getId()); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setChangeType(3); accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); accountChangeDetail.setOldData(appUser1.getAccountBalance()); - appUser1.setAccountBalance(appUser1.getAccountBalance() + rechargeRecord1.getAmount()); + appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); accountChangeDetail.setNewData(appUser1.getAccountBalance()); accountChangeDetailService.saveData(accountChangeDetail); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6)); @@ -506,13 +508,13 @@ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setUserType(1); accountChangeDetail.setUserId(rechargeRecord1.getUserId()); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setChangeType(3); accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("余额充值"); accountChangeDetail.setOldData(appUser.getAccountBalance()); - appUser.setAccountBalance(appUser.getAccountBalance() + rechargeRecord1.getAmount()); + appUser.setAccountBalance(new BigDecimal(appUser.getAccountBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); accountChangeDetail.setNewData(appUser.getAccountBalance()); accountChangeDetailService.saveData(accountChangeDetail); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6)); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java index 5ce9591..fc8927c 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -482,7 +482,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){ //推送状态 @@ -990,7 +990,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 +1027,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 +1139,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 +1148,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 +1172,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 +1181,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 +1274,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 +1382,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 +1403,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 +1440,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,17 +1458,17 @@ 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); @@ -1483,7 +1491,7 @@ 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; } @@ -1512,7 +1520,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 +1545,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 +1570,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 +1578,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 +1600,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 +1609,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 +1642,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 +1663,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 +1672,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 +1693,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 +1714,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 +1723,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 +1744,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 +1765,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 +1774,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 +1798,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 +1819,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 +1828,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 +1849,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 +1870,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 +1879,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 +1903,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 +1924,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,14 +1933,14 @@ 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); } } } @@ -1954,7 +1964,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,7 +1973,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; } @@ -1998,17 +2008,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); @@ -2020,7 +2030,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 +2039,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,17 +2049,17 @@ 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); @@ -2072,7 +2082,7 @@ 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; } @@ -2083,7 +2093,7 @@ // 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 +2153,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 +2176,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 +2192,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 +2202,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,17 +2214,17 @@ 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); //补贴中分账 @@ -2236,7 +2246,7 @@ 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; } @@ -2273,7 +2283,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 +2302,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 +2331,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 +2363,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()); -- Gitblit v1.7.1