driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
@@ -1,8 +1,12 @@ package com.supersavedriving.driver.modular.system.api; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.supersavedriving.driver.modular.system.model.Driver; import com.supersavedriving.driver.modular.system.model.Order; import com.supersavedriving.driver.modular.system.model.RechargeRecord; import com.supersavedriving.driver.modular.system.service.IRechargeRecordService; import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse; import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil; import com.supersavedriving.driver.modular.system.util.rongyun.model.CloudRecordingCallback; import com.supersavedriving.driver.modular.system.warpper.*; @@ -17,10 +21,7 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -48,6 +49,9 @@ @Autowired private RongYunUtil rongYunUtil; @Autowired private IRechargeRecordService rechargeRecordService; @@ -409,8 +413,40 @@ } /** * 转账回调 * @param execute * @param response */ @ResponseBody @PostMapping("/base/order/zhaunzhangCallback") public void zhaunzhangCallback(@RequestBody InterfaceResponse execute, HttpServletResponse response){ try { if("0000".equals(execute.getCode())){ JSONObject jsonObject = JSON.parseObject(execute.getResult()); Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败 if(2 == status){ System.err.println("转账失败"); return; } String parameter1 = jsonObject.getString("parameter1"); RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1); response.setStatus(200); PrintWriter out = response.getWriter(); out.print("OK"); out.flush(); out.close(); }else{ System.err.println("转账失败:" + execute.getMsg()); return; } }catch (Exception e){ e.printStackTrace(); } } @ResponseBody @PostMapping("/api/order/queryDriverOrderList") // @ServiceLog(name = "获取司机订单列表", url = "/api/order/queryDriverOrderList") driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
@@ -203,4 +203,7 @@ * 主动完成线下收款 */ void completeCollection(); ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, String merOrderId, Double amount, Integer sourceType); } driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -7,10 +7,10 @@ import com.supersavedriving.driver.modular.system.dao.AccountChangeDetailMapper; import com.supersavedriving.driver.modular.system.model.AccountChangeDetail; import com.supersavedriving.driver.modular.system.model.Driver; import com.supersavedriving.driver.modular.system.model.RechargeRecord; import com.supersavedriving.driver.modular.system.model.SystemConfig; import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService; import com.supersavedriving.driver.modular.system.service.IDriverService; import com.supersavedriving.driver.modular.system.service.ISystemConfigService; import com.supersavedriving.driver.modular.system.service.*; import com.supersavedriving.driver.modular.system.util.ResultUtil; import com.supersavedriving.driver.modular.system.util.UUIDUtil; import com.supersavedriving.driver.modular.system.warpper.BalanceDetailWarpper; import com.supersavedriving.driver.modular.system.warpper.CommissionDetailListWarpper; @@ -35,6 +35,12 @@ @Autowired private ISystemConfigService systemConfigService; @Autowired private IRechargeRecordService rechargeRecordService; @Autowired private IOrderService orderService; @@ -119,11 +125,9 @@ Double num1 = jsonObject.getDouble("num1"); List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1)); for (Driver driver : drivers) { Double couponBalance = driver.getCouponBalance(); Double backgroundBalance = driver.getBackgroundBalance(); Double balance = driver.getBalance(); Double commission = driver.getCommission(); double all = couponBalance + backgroundBalance + balance + commission; double all = backgroundBalance + balance; if(num1 > all){ continue; } @@ -159,71 +163,6 @@ this.insert(accountChangeDetail); d = 0; } if(d > 0){ if(couponBalance > 0 && couponBalance < d){ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(8); accountChangeDetail.setOldData(driver.getCouponBalance()); accountChangeDetail.setNewData(0D); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); d -= couponBalance; driver.setCouponBalance(0D); } if(couponBalance > 0 && couponBalance >= d){ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(8); accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driver.setCouponBalance(driver.getCouponBalance() - d); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); d = 0; } } if(d > 0){ if(commission > 0 && commission < d){ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(8); accountChangeDetail.setOldData(driver.getCommission()); accountChangeDetail.setNewData(0D); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); d -= commission; driver.setCommission(0D); } if(commission > 0 && commission >= d){ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(8); accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driver.setCommission(driver.getCommission() - d); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); d = 0; } } if(d > 0){ if(balance > 0 && balance < d){ continue; @@ -242,6 +181,29 @@ accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); d = 0; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(d) >= 0){ ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", rechargeRecord.getId().longValue(), rechargeRecord.getOrderNumber(), d, 1); if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - d); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", rechargeRecord.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); d -= surplusDividedAmount; }else{ break; } } } } } driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -10,6 +10,8 @@ import com.supersavedriving.driver.modular.system.service.*; import com.supersavedriving.driver.modular.system.util.*; import com.supersavedriving.driver.modular.system.util.GaoDe.MapUtil; 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.mongodb.model.Location; import com.supersavedriving.driver.modular.system.warpper.*; import com.supersavedriving.driver.core.util.ToolUtil; @@ -21,6 +23,7 @@ import com.supersavedriving.driver.modular.system.warpper.OrderInfoWarpper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.geo.Circle; import org.springframework.data.geo.Distance; import org.springframework.data.geo.Metrics; @@ -95,6 +98,18 @@ @Autowired private IUserToCouponService userToCouponService; @Autowired private IRechargeRecordService rechargeRecordService; @Autowired private IDivisionRecordService divisionRecordService; @Autowired private IAgentService agentService; @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 private Map<String, Timer> timerMap = new HashMap<>(); @@ -1183,10 +1198,78 @@ accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount()); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 Double discountedPrice = order.getDiscountedPrice(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - discountedPrice); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); discountedPrice -= surplusDividedAmount; }else{ break; } } } } } if(order.getDiscountAmount() > 0){ Driver driver = driverService.selectById(order.getDriverId()); AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("折扣优惠收入"); driver.setCommission(driver.getCommission() + order.getDiscountAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 Double discountedPrice = order.getDiscountAmount(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - discountedPrice); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); discountedPrice -= surplusDividedAmount; }else{ break; } } } } } @@ -1204,6 +1287,41 @@ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState()); } return ResultUtil.success(); } /** * 转账 * @param id * @param merOrderId * @param toUserId * @param amount * @param notifyUrl * @return */ public ResultUtil zhaunzhang(Integer id, String merOrderId, String toUserId, Double amount, String notifyUrl){ Transfer transfer = new Transfer(); transfer.setDepositMerOrderId(merOrderId); transfer.setToUserId(toUserId); transfer.setAmount(String.valueOf(Double.valueOf(amount * 100))); transfer.setOrderName("补贴"); transfer.setNotifyUrl(notifyUrl); transfer.setParameter1(id.toString()); TrhRequest<Transfer> request = new TrhRequest(); InterfaceResponse execute = request.execute(transfer, Transfer.SERVICE_CODE); if("0000".equals(execute.getCode())){ JSONObject jsonObject = JSON.parseObject(execute.getResult()); Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败 if(2 == status){ System.err.println("转账失败"); return ResultUtil.error("转账失败"); } return ResultUtil.success(); }else{ System.err.println("转账失败:" + execute.getMsg()); return ResultUtil.error(execute.getMsg()); } } @@ -1260,6 +1378,30 @@ revenue.setAmount(num1); revenue.setCreateTime(new Date()); revenueService.insert(revenue); Double num1_1 = num1; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num1_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num1_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num1_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num1_1 -= surplusDividedAmount; }else{ break; } } } } num3 = (num3 >= num1 ? num3 - num1 : 0); } @@ -1298,6 +1440,30 @@ accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); Double num5_1 = num5; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num5_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num5_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num5_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num5_1 -= surplusDividedAmount; }else{ break; } } } num3 = (num3 >= num5 ? num3 - num5 : 0); } num6 = (num3 >= num6 ? num6 : num3); @@ -1324,6 +1490,30 @@ accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); Double num6_1 = num6; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num6_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), num6_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num6_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num6_1 -= surplusDividedAmount; }else{ break; } } } num3 = (num3 >= num6 ? num3 - num6 : 0); } num7 = (num3 >= num7 ? num7 : num3); @@ -1350,6 +1540,30 @@ accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); driverService.updateById(driver3); accountChangeDetailService.saveData(accountChangeDetail); Double num7_1 = num7; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num7_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver3.getMerchantNumber(), num7_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num7_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver3.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num7_1 -= surplusDividedAmount; }else{ break; } } } num3 = (num3 >= num7 ? num3 - num7 : 0); } }else{ @@ -1379,6 +1593,30 @@ accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); Double num3_1 = num3_; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num3_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num3_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num3_1 -= surplusDividedAmount; }else{ break; } } } num3 = (num3 >= num3_ ? num3 - num3_ : 0); } num4 = (num3 >= num4 ? num4 : num3); @@ -1405,6 +1643,30 @@ accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); Double num4_1 = num4; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num4_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), num4_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num4_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num4_1 -= surplusDividedAmount; }else{ break; } } } num3 = (num3 >= num4 ? num3 - num4 : 0); } } @@ -1434,6 +1696,29 @@ accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); Double num2_1 = num2_; List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num2_1) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num2_1, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num2_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num2_1 -= surplusDividedAmount; }else{ break; } } } num3 = (num3 >= num2_ ? num3 - num2_ : 0); } } @@ -1448,12 +1733,36 @@ revenue.setAmount(num3); revenue.setCreateTime(new Date()); revenueService.insert(revenue); Agent agent = agentService.selectById(driver.getAgentId()); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num3) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), agent.getMerchantNumber(), num3, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), agent.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(zhaunzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num3 -= surplusDividedAmount; }else{ break; } } } } } } } //司机余额扣减抽佣金额 if(n > 0){ if(order.getPayMoney() > payMoney){ Double m = order.getPayMoney() - payMoney; AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); @@ -1464,12 +1773,127 @@ accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setExplain("线下收款服务费支出"); accountChangeDetail.setCreateTime(new Date()); driver.setBalance(driver.getBalance() - n); driver.setBalance(driver.getBalance() - m); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.saveData(accountChangeDetail); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(m) >= 0){ ResultUtil fengzhang = fengzhang(3, null, "553021440975", rechargeRecord.getId().longValue(), rechargeRecord.getOrderNumber(), m, 1); if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - m); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil fengzhang = fengzhang(3, null, "553021440975", rechargeRecord.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); m -= surplusDividedAmount; }else{ break; } } } } } /** * 分账操作 * @param amount */ @Override public ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, String merOrderId, Double amount, Integer sourceType){ DivisionRecord divisionRecord = new DivisionRecord(); divisionRecord.setUserType(userType); divisionRecord.setUserId(id); divisionRecord.setOrderId(orderId); divisionRecord.setSourceType(sourceType); divisionRecord.setAmount(amount); divisionRecord.setMerchantNumber(merchantNumber); divisionRecord.setState(1); divisionRecord.setCreateTime(new Date()); divisionRecordService.insert(divisionRecord); Complete complete = new Complete(); complete.setOriginalMerOrderId(merOrderId); complete.setNotifyUrl(callbackPath + "/base/order/ledgerCallback"); complete.setParameter1(divisionRecord.getId().toString()); //分账方列表 List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(merchantNumber); pamentOrderUser.setSplitAmount(amount.toString()); pamentOrderUser.setSplitType("1"); splitList.add(pamentOrderUser); complete.setSplitList(splitList); TrhRequest<Complete> request = new TrhRequest(); InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作 if("0000".equals(execute.getCode())){ JSONObject jsonObject = JSON.parseObject(execute.getResult()); Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败 String merOrderId1 = jsonObject.getString("merOrderId"); if(2 == status){ System.err.println("订单支付成功后的分账处理异常失败"); return ResultUtil.error("订单支付成功后的分账处理异常失败"); } if(1 == status){ divisionRecord.setMerOrderId(merOrderId1); divisionRecord.setPayTime(new Date()); divisionRecord.setState(2); divisionRecordService.updateById(divisionRecord); //间隔10秒开始调用确认收货后开始提现 new Timer().schedule(new TimerTask() {//确认收货和提现 @Override public void run() { confirmReceipt(merchantNumber, merOrderId, divisionRecord); } }, 15000); return ResultUtil.success(); } }else{ System.err.println("订单支付成功后的分账处理异常 :" + execute.getMsg()); return ResultUtil.error("订单支付成功后的分账处理异常 :" + execute.getMsg()); } return ResultUtil.error("未知异常"); } /** * 分账后的确认收货 * @param divisionRecord */ public void confirmReceipt(String merchantNumber, String orderNumber, DivisionRecord divisionRecord){ Receive receive = new Receive(); receive.setOriginalMerOrderId(orderNumber); receive.setAsynMerOrderId(divisionRecord.getMerOrderId()); receive.setRcvAmount(divisionRecord.getAmount().toString()); List<ReceiveUser> splitList = new ArrayList<>(); ReceiveUser receiveUser = new ReceiveUser(); receiveUser.setSplitUserId(merchantNumber); receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString()); splitList.add(receiveUser); receive.setSplitList(splitList); TrhRequest<Receive> request = new TrhRequest(); InterfaceResponse execute1 = request.execute(receive, Receive.SERVICE_CODE);//确认收货 if("0000".equals(execute1.getCode())){ JSONObject jsonObject = JSON.parseObject(execute1.getResult()); String merOrderId = jsonObject.getString("merOrderId"); System.err.println("分账确认收货成功"); }else{ System.err.println("分账确认收货异常" + execute1.getMsg()); } } /** * 获取司机的订单列表 @@ -1648,12 +2072,79 @@ accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount()); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 Double discountedPrice = order.getDiscountedPrice(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - discountedPrice); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); discountedPrice -= surplusDividedAmount; }else{ break; } } } } } if(order.getDiscountAmount() > 0){ Driver driver = driverService.selectById(order.getDriverId()); AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("折扣优惠收入"); driver.setCommission(driver.getCommission() + order.getDiscountAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 Double discountedPrice = order.getDiscountAmount(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - discountedPrice); rechargeRecordService.updateById(rechargeRecord); } break; }else{ ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); discountedPrice -= surplusDividedAmount; }else{ break; } } } } this.updateById(order); try { driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Transfer.java
New file @@ -0,0 +1,76 @@ package com.supersavedriving.driver.modular.system.util.MallBook.model; public class Transfer { /**业务类型编号,必须和接口文档一致*/ public static String SERVICE_CODE = "transfer"; //充值订单号 private String depositMerOrderId; //收款方子商户号 private String toUserId; //转账金额 private String amount; //订单信息 private String orderName; //后台回调地址 private String notifyUrl; //自定义参数1 private String parameter1; //自定义参数2 private String parameter2; public String getDepositMerOrderId() { return depositMerOrderId; } public void setDepositMerOrderId(String depositMerOrderId) { this.depositMerOrderId = depositMerOrderId; } public String getToUserId() { return toUserId; } public void setToUserId(String toUserId) { this.toUserId = toUserId; } public String getAmount() { return amount; } public void setAmount(String amount) { this.amount = amount; } public String getOrderName() { return orderName; } public void setOrderName(String orderName) { this.orderName = orderName; } public String getNotifyUrl() { return notifyUrl; } public void setNotifyUrl(String notifyUrl) { this.notifyUrl = notifyUrl; } public String getParameter1() { return parameter1; } public void setParameter1(String parameter1) { this.parameter1 = parameter1; } public String getParameter2() { return parameter2; } public void setParameter2(String parameter2) { this.parameter2 = parameter2; } } user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
@@ -57,6 +57,9 @@ @Autowired private IRechargeRecordService rechargeRecordService; @Autowired private IAccountChangeDetailService accountChangeDetailService; @@ -351,27 +354,28 @@ */ @ResponseBody @PostMapping("/base/order/orderPayCallback") public void orderPayCallback(HttpServletRequest request, HttpServletResponse response){ public void orderPayCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ try { String code = request.getParameter("code"); String version = request.getParameter("version"); String msg = request.getParameter("msg"); String date = request.getParameter("date"); String result = request.getParameter("result"); String sign = request.getParameter("sign"); InterfaceResponse interfaceResponse = new InterfaceResponse(); interfaceResponse.setCode(code); interfaceResponse.setVersion(version); interfaceResponse.setMsg(msg); interfaceResponse.setDate(date); interfaceResponse.setResult(result); interfaceResponse.setSign(sign); // 验签 boolean verify = RSASignature.validate(interfaceResponse.content(), interfaceResponse.getSign()); if (verify) {//验签成功业务处理逻辑 JSONObject jsonObject = JSON.parseObject(result); String merOrderId = jsonObject.getString("merOrderId"); if("0000".equals(interfaceResponse.getCode())){ JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult()); Integer status = jsonObject.getInteger("status"); String orderId = jsonObject.getString("parameter1"); String parameter2 = jsonObject.getString("parameter2"); if(2 == status){ Order order = orderService.selectById(orderId); AccountChangeDetail accountChangeDetail = accountChangeDetailService.selectById(parameter2); Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData(); AppUser appUser1 = appUserService.selectById(order.getUserId()); appUser1.setAccountBalance(appUser1.getAccountBalance() + m); appUserService.updateById(appUser1); accountChangeDetailService.deleteById(accountChangeDetail.getId()); System.err.println("支付失败"); } if(1 == status){ String merOrderId = jsonObject.getString("merOrderId"); ResultUtil resultUtil = orderService.orderPayCallback(orderId, merOrderId); if(resultUtil.getCode() == 10000){ response.setStatus(200); @@ -380,6 +384,8 @@ out.flush(); out.close(); } } } } else {//验签失败业务处理逻辑 System.err.println("支付回调验签失败"); } user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java
@@ -258,7 +258,7 @@ @TableField("discount") private Double discount; /** * 支付类型(1=微信支付,2=余额支付,3=线下支付) * 支付类型(1=微信支付,2=余额支付,3=线下支付,4=微信+余额) */ @TableField("payType") private Integer payType; @@ -268,6 +268,11 @@ @TableField("payTime") private Date payTime; /** * 账户余额支付金额 */ @TableField("balancePayment") private Double balancePayment; /** * 第三方支付流水号 */ @TableField("orderNo") user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -1009,7 +1009,7 @@ accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount()); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); @@ -1077,10 +1077,27 @@ payMoney = payMoney - coupon.getCouponPreferentialAmount(); order.setCouponId(coupon.getId()); order.setDiscountedPrice(coupon.getCouponPreferentialAmount()); Driver driver = driverService.selectById(order.getDriverId()); AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); } } order.setPayType(1); order.setPayMoney(payMoney); order.setBalancePayment(payMoney > appUser.getAccountBalance() ? appUser.getAccountBalance() : payMoney); payMoney = payMoney > appUser.getAccountBalance() ? payMoney - appUser.getAccountBalance() : 0D; @@ -1110,7 +1127,7 @@ paymentOrder.setPayType("WX_MINI"); paymentOrder.setTransferType("0"); paymentOrder.setAsynSplitFlag("1"); paymentOrder.setAppid(""); paymentOrder.setAppid(appletsAppid); paymentOrder.setOpenid(appUser.getOpenid()); paymentOrder.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); List<PaymentOrderGood> goodsDetail = new ArrayList<>(); @@ -1121,7 +1138,7 @@ paymentOrder.setFrontUrl(callbackPath + "/base/order/orderPayCallback"); paymentOrder.setNotifyUrl(callbackPath + "/base/order/orderPayCallback"); paymentOrder.setParameter1(order.getId().toString()); paymentOrder.setParameter2(payMoney.toString()); paymentOrder.setParameter2(accountChangeDetail.getId().toString()); TrhRequest<PaymentOrder> request = new TrhRequest(); InterfaceResponse execute = request.execute(paymentOrder, PaymentOrder.SERVICE_CODE); @@ -1176,7 +1193,7 @@ Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData(); AppUser appUser1 = appUserService.selectById(order1.getUserId()); appUser1.setAccountBalance(appUser1.getAccountBalance() + m); appUserService.updateById(appUser1) appUserService.updateById(appUser1); accountChangeDetailService.deleteById(accountChangeDetail.getId()); break; } @@ -1191,17 +1208,17 @@ } }).start(); } return ResultUtil.success(payCode); }else{ order.setPayType(2); order.setPayMoney(payMoney); order.setPayTime(new Date()); order.setState(108); this.updateById(order); //处理佣金和收入记录 saveCommission(order); } // order.setPayTime(new Date()); // this.updateById(order); return ResultUtil.success(); } @@ -1384,11 +1401,11 @@ } break; }else{ num1_ -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num1_ -= surplusDividedAmount; }else{ break; } @@ -1446,11 +1463,11 @@ } break; }else{ num5_ -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num5_ -= surplusDividedAmount; }else{ break; } @@ -1497,11 +1514,11 @@ } break; }else{ num6_ -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num6_ -= surplusDividedAmount; }else{ break; } @@ -1549,11 +1566,11 @@ } break; }else{ num7_ -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver3.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num7_ -= surplusDividedAmount; }else{ break; } @@ -1603,11 +1620,11 @@ } break; }else{ num3_1 -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num3_1 -= surplusDividedAmount; }else{ break; } @@ -1654,11 +1671,11 @@ } break; }else{ num4_1 -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num4_1 -= surplusDividedAmount; }else{ break; } @@ -1708,11 +1725,11 @@ } break; }else{ num2_1 -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num2_1 -= surplusDividedAmount; }else{ break; } @@ -1749,11 +1766,11 @@ } break; }else{ num3_1 -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), agent.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); num3_1 -= surplusDividedAmount; }else{ break; } @@ -1783,9 +1800,8 @@ accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setExplain("订单收入"); accountChangeDetail.setCreateTime(new Date()); driver.setCommission(driver.getCommission() + payMoney + order.getDiscountedPrice() + order.getDiscountAmount()); if(null != order.getCouponId()){ driver.setCouponBalance(driver.getCouponBalance() + order.getDiscountedPrice()); driver.setCommission(driver.getCommission() + order.getDiscountedPrice()); //补贴中分账 Double discountedPrice = order.getDiscountedPrice(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); @@ -1799,11 +1815,11 @@ } break; }else{ discountedPrice -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); discountedPrice -= surplusDividedAmount; }else{ break; } @@ -1812,7 +1828,20 @@ } if(null != order.getDiscountAmount() && 0 < order.getDiscountAmount()){ driver.setCouponBalance(driver.getCouponBalance() + order.getDiscountAmount()); accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("折扣优惠收入"); driver.setCommission(driver.getCommission() + order.getDiscountAmount()); accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 Double discountedPrice = order.getDiscountAmount(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); @@ -1826,11 +1855,11 @@ } break; }else{ discountedPrice -= surplusDividedAmount; ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); if(10000 == zhaunzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); discountedPrice -= surplusDividedAmount; }else{ break; } @@ -1868,11 +1897,11 @@ } break; }else{ payMoney -= surplusDividedAmount; ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); payMoney -= surplusDividedAmount; }else{ break; } @@ -1897,11 +1926,11 @@ } break; }else{ payMoney -= surplusDividedAmount; ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); payMoney -= surplusDividedAmount; }else{ break; } @@ -1911,31 +1940,40 @@ } if(order.getPayType() == 4){//微信+余额(使用用户的充值数据分账) Double xj = order.getPayMoney() - order.getBalancePayment(); if(xj > 0){ //分账司机收入 fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), payMoney, 1); if(payMoney.compareTo(order.getPayMoney()) < 0){//司机获取部分需将剩余的分给平台 Double money = order.getPayMoney() - payMoney + order.getDiscountedPrice(); fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1); } }else{ Double balancePayment = order.getBalancePayment(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", order.getUserId()) .eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(payMoney) >= 0){ if(surplusDividedAmount.compareTo(balancePayment) >= 0){ //分账司机收入 ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), payMoney, 1); ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), balancePayment, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - payMoney); rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - balancePayment); rechargeRecordService.updateById(rechargeRecord); } break; }else{ payMoney -= surplusDividedAmount; ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); balancePayment -= surplusDividedAmount; }else{ break; } } } if(payMoney.compareTo(order.getPayMoney()) < 0){//司机获取部分需将剩余的分给平台 Double money = order.getPayMoney() - payMoney; @@ -1953,11 +1991,11 @@ } break; }else{ payMoney -= surplusDividedAmount; ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); payMoney -= surplusDividedAmount; }else{ break; } @@ -1965,8 +2003,7 @@ } } } } }