From cf0ff0a221e1afdafc2b926c6faa3fbfd965632b Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期三, 16 八月 2023 19:17:31 +0800 Subject: [PATCH] update --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 564 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 347 insertions(+), 217 deletions(-) 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 b40f831..0a93d93 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 @@ -114,6 +114,9 @@ @Autowired private IOrderPositionService orderPositionService; + @Autowired + private ICompanyFundFlowService companyFundFlowService; + @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 @@ -158,10 +161,14 @@ return ResultUtil.error("该用户还有未完成的订单", ""); } Driver driver = driverService.selectById(uid); + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", uid).eq("status", 1)); Order order1 = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401))); Order order = new Order(); - if(driverWork != null && null == order1){ + if(driver.getServerStatus().equals(1)){ + order.setDriverId(driver.getId()); + order.setState(104); + }else if(driverWork != null && null == order1){ order.setDriverId(uid); driver.setServerStatus(2); order.setOrderTakingTime(new Date()); @@ -215,8 +222,11 @@ } order.setCreateTime(new Date()); order = getOrderPrice(1, d, 0, order, city); - order.setState(null == order.getDriverId() ? 101 : 102); + if(!driver.getServerStatus().equals(1)) { + order.setState(null == order.getDriverId() ? 101 : 102); + } order.setStatus(1); + this.insert(order); driverService.updateById(driver); //推送状态 @@ -234,6 +244,7 @@ } }).start(); } + redisUtil.setStrValue("newOrder", "true"); return ResultUtil.success(order.getState() == 102 ? order.getId() : null); } @@ -247,14 +258,14 @@ * @param city 查询天气的城市 * @return */ - public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) throws Exception{ + public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) { order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); - if(null == systemConfig){ - if(type == 1){//预估金额 + if (null == systemConfig) { + if (type == 1) {//预估金额 order.setEstimatedPrice(0D); } - if(type == 2){//订单金额 + if (type == 2) {//订单金额 order.setOrderMoney(0D); } return order; @@ -294,19 +305,19 @@ e.set(Calendar.MINUTE, Integer.valueOf(split1[1])); e.set(Calendar.SECOND, 0); - if(hour1 > hour2){ - if(s.getTimeInMillis() > date.getTime()){ + if (hour1 > hour2) { + if (s.getTimeInMillis() > date.getTime()) { s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); - }else{ + } else { e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); } } - if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){ - if(num3.compareTo(distance) >= 0){//起步里程内 + if (date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()) { + if (num3.compareTo(distance) >= 0) {//起步里程内 order.setStartDistance(distance);//起步里程 order.setStartPrice(num4);//起步价 - }else{ + } else { Double distance1 = distance;//原始里程 order.setStartDistance(num3);//起步里程 order.setStartPrice(num4);//起步价 @@ -318,7 +329,7 @@ order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费 //计算长途费(超出长途起始公里,费用开始按照长途规则计算。) - if(distance.compareTo(num7) > 0){ + if (distance.compareTo(num7) > 0) { order.setStartDistance(0D);//起步里程 order.setStartPrice(0D);//起步价 order.setOverDriveDistance(0D);//超出起步里程 @@ -328,7 +339,7 @@ order.setLongDistancePrice(num9);//长途费 } //计算长途里程超出的部分 - if(distance.compareTo(num8) > 0){ + if (distance.compareTo(num8) > 0) { order.setOverLongDistance(new BigDecimal(distance1 - num8).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出长途里程 BigDecimal divide1 = new BigDecimal(distance - num8).divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); @@ -352,7 +363,7 @@ Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额 //等待费用 - if(waitTime.compareTo(num1 * 60) >= 0){ + if (waitTime.compareTo(num1 * 60) >= 0) { order.setWaitTime(num1 * 60);//等待时长 order.setWaitTimePrice(num2);//等待费用 @@ -367,15 +378,15 @@ //恶劣天气 systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8)); - if(null != systemConfig) { + if (null != systemConfig) { JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价 - if(1 == num11){ + if (1 == num11) { boolean badWeather = WeatherUtil.isBadWeather(city); - if(badWeather){ + if (badWeather) { order.setBadWeatherDistance(num5);//恶劣天气公里 order.setBadWeatherPrice(num6);//恶劣天气费 - if(distance.compareTo(num7) > 0){ + if (distance.compareTo(num7) > 0) { BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num7)); BigDecimal multiply = subtract.multiply(new BigDecimal(num8)); order.setOverBadWeatherDistance(subtract.doubleValue());//恶劣天气超出公里 @@ -383,37 +394,39 @@ } double add = new BigDecimal(order.getOverBadWeatherPrice()).add(new BigDecimal(order.getBadWeatherPrice())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); - if(num9.compareTo(add) < 0){//超出最高金额(重新调整金额) - if(num9.compareTo(num6) < 0){//如果恶劣天气费大于最高金额 + if (num9.compareTo(add) < 0) {//超出最高金额(重新调整金额) + if (num9.compareTo(num6) < 0) {//如果恶劣天气费大于最高金额 order.setBadWeatherPrice(num9);//恶劣天气费 order.setOverBadWeatherPrice(0D);//恶劣天气超出公里费 - }else{ + } else { BigDecimal subtract = new BigDecimal(num9).subtract(new BigDecimal(add)); order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费 } } } } - } - //计算折扣 - if(null != order.getUserId()){ + //计算折扣 + if (null != order.getUserId()) { - } + } - //计算总金额 - BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() + - order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); + //计算总金额 + BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() + + order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); - if(type == 1){//预估价 - order.setEstimatedPrice(bigDecimal.doubleValue()); - } - if(type == 2){//订单金额 - order.setOrderMoney(bigDecimal.doubleValue()); + if (type == 1) {//预估价 + order.setEstimatedPrice(bigDecimal.doubleValue()); + } + if (type == 2) {//订单金额 + order.setOrderMoney(bigDecimal.doubleValue()); + } + return order; } return order; } + /** @@ -634,6 +647,7 @@ order1.setHallOrder(1); OrderServiceImpl.this.updateById(order1); ExtraPushOrder(order); + redisUtil.setStrValue("lobbyOrder", "true"); } @@ -643,6 +657,7 @@ order.setHallOrder(1); this.updateById(order); ExtraPushOrder(order); + redisUtil.setStrValue("lobbyOrder", "true"); } redisUtil.unlock(orderId.toString()); }catch (Exception e){ @@ -1156,34 +1171,68 @@ * @throws Exception */ @Override - public ResultUtil transferOrder(Integer uid, Long orderId, String cause) throws Exception { + public ResultUtil transferOrder(Integer uid, Long orderId, String cause, String phone) throws Exception { + // 7.13改动 + Driver driver=null; + OrderTransfer orderTransfer = new OrderTransfer(); Order order = this.selectById(orderId); - if(order.getDriverId().compareTo(uid) != 0){ - return ResultUtil.error("无权操作"); + if(phone!=null && !"".equals(phone)) { + Integer oldId = order.getDriverId(); + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("phone", phone)); + if (drivers.size() == 0) { + return ResultUtil.error("暂无该司机,无法转单"); + } else { + driver = drivers.get(0); + if (driver.getServerStatus() != 1) { + return ResultUtil.error("司机正在服务中,无法转单。"); + } + if (driver.getStatus() != 1) { + return ResultUtil.error("该司机已被冻结,无法转单。"); + } + order.setDriverId(driver.getId()); + orderTransfer.setNewDriverId(driver.getId()); + } + order.setState(104); + driver.setServerStatus(2); + driverService.updateById(driver); + Driver driver1 = driverService.selectById(oldId); + driver1.setServerStatus(1); + driverService.updateById(driver1); + }else { + order.setState(201); } if(order.getState() > 104){ return ResultUtil.error("订单不支持转单"); } order.setOldState(order.getState()); - order.setState(201); + this.updateById(order); - OrderTransfer orderTransfer = new OrderTransfer(); + orderTransfer.setOrderId(orderId); orderTransfer.setOldDriverId(order.getDriverId()); orderTransfer.setCause(cause); orderTransfer.setStatus(1); orderTransfer.setCreateTime(new Date()); orderTransferService.insert(orderTransfer); - - //开始派单 - Order finalOrder = order; - new Thread(new Runnable() { - @Override - public void run() { - pushOrder(finalOrder.getId()); + if(phone==null ||"".equals(phone)){ + //开始派单 + Order finalOrder = order; + new Thread(new Runnable() { + @Override + public void run() { + pushOrder(finalOrder.getId()); + } + }).start(); + }else { + if(driver!=null){ + PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper(); + pushOrderInfoWarpper.setId(order.getId()); + pushOrderInfoWarpper.setState(201); + pushUtil.pushGrabOrder(driver.getId(), 2, order.getId(),1); } - }).start(); + } + return ResultUtil.success(); } @@ -1296,6 +1345,7 @@ if(null != order.getUserId()){ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus()); } + redisUtil.setStrValue("cancelOrder", "true"); return ResultUtil.success(); } @@ -1415,30 +1465,42 @@ accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 + Double balance = revenueService.queryCompanyBalance();//平台账户余额 + 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<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); - if(10000 == zhaunzhang.getCode()){ - Double remainAmount = zhaunzhang.getData(); - rechargeRecord.setSurplusDividedAmount(remainAmount); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(10000 == zhaunzhang.getCode()){ - Double remainAmount = zhaunzhang.getData(); - rechargeRecord.setSurplusDividedAmount(remainAmount); - rechargeRecordService.updateById(rechargeRecord); - discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ +// ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); +// if(10000 == zhaunzhang.getCode()){ +// Double remainAmount = zhaunzhang.getData(); +// rechargeRecord.setSurplusDividedAmount(remainAmount); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); +// if(10000 == zhaunzhang.getCode()){ +// Double remainAmount = zhaunzhang.getData(); +// rechargeRecord.setSurplusDividedAmount(remainAmount); +// rechargeRecordService.updateById(rechargeRecord); +// discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } + + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(5); + companyFundFlow.setObjectType(1); + companyFundFlow.setDriverId(driver.getId()); + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice())); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); } } this.updateById(order); @@ -1563,6 +1625,8 @@ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); Double num2 = jsonObject.getDouble("num2"); Double num3 = jsonObject.getDouble("num3"); + Double num4_ = jsonObject.getDouble("num4"); + if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金 driver = driverService.selectById(order.getDriverId()); AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail(); @@ -1620,23 +1684,24 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } } @@ -1683,23 +1748,24 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } double v = new BigDecimal(num3).subtract(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); num3 = (num3 >= num5 ? v : 0); @@ -1733,23 +1799,24 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } double v = new BigDecimal(num3).subtract(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); num3 = (num3 >= num6 ? v : 0); @@ -1783,23 +1850,24 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } double v = new BigDecimal(num3).subtract(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); num3 = (num3 >= num7 ? v : 0); @@ -1836,23 +1904,24 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } double v = new BigDecimal(num3).subtract(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); num3 = (num3 >= num3_ ? v : 0); @@ -1886,23 +1955,24 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } double v = new BigDecimal(num3).subtract(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); num3 = (num3 >= num4 ? v : 0); @@ -1939,33 +2009,86 @@ 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(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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// 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(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } double v = new BigDecimal(num3).subtract(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); num3 = (num3 >= num2_ ? v : 0); } } } - //处理代理商抽佣 - if(num3 > 0){ + + //处理平台抽佣 + if(num4_ > 0){ + //先平台抽佣 + num4_ = (num3 >= num4_ ? num4_ : num3); + Double balance = revenueService.queryCompanyBalance(); Revenue revenue = new Revenue(); - revenue.setType(1); + revenue.setType(2); + revenue.setUserType(4); + revenue.setUserId(null); + revenue.setOrderId(order.getId()); + revenue.setAmount(num4_); + revenue.setCreateTime(new Date()); + revenueService.insert(revenue); + + Double num4_1 = num4_; + 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(); + // TODO 测试屏蔽 +// if(surplusDividedAmount.compareTo(num4_1) >= 0){ +// ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } + } + + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(3); + companyFundFlow.setObjectType(1); + companyFundFlow.setObjectId(null); + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(num4_)); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); + double v = new BigDecimal(num3).subtract(new BigDecimal(num4_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + num3 = (num3 >= num4_ ? v : 0); + } + + //处理代理商抽佣 + if(num3 > 0 && null != driver){ + Double balance = revenueService.queryAgentBalance(driver.getAgentId()); + Revenue revenue = new Revenue(); + revenue.setType(2); revenue.setUserType(3); revenue.setUserId(driver.getAgentId()); revenue.setOrderId(order.getId()); @@ -1974,27 +2097,38 @@ revenueService.insert(revenue); Agent agent = agentService.selectById(driver.getAgentId()); + Double num3_1 = num3; 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(num3) >= 0){ - ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - num3 = new BigDecimal(num3).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } - } + // TODO 测试屏蔽 +// if(surplusDividedAmount.compareTo(num3_1) >= 0){ +// ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } } + + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(3); + companyFundFlow.setObjectType(2); + companyFundFlow.setObjectId(driver.getAgentId()); + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(num3)); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); } } } @@ -2153,6 +2287,14 @@ } if(type == 3){//收入 performanceRankingWarppers = revenueService.queryDriverRank(1, time, dayType); + + // 通过司机id 去差订单的优惠金额 + for (PerformanceRankingWarpper performanceRankingWarpper : performanceRankingWarppers) { + List<Order> orders = this.baseMapper.selectList(new EntityWrapper<Order>().eq("driverId", performanceRankingWarpper.getDriverId()).isNotNull("payMoney")); + double sum = orders.stream().mapToDouble(Order::getDiscountedPrice).sum(); + double sum1 = orders.stream().mapToDouble(Order::getDiscountAmount).sum(); + performanceRankingWarpper.setAmountOfData(new BigDecimal(performanceRankingWarpper.getAmountOfData()+sum+sum1).setScale(2,RoundingMode.HALF_UP).doubleValue()); + } } for (int i = 0; i < performanceRankingWarppers.size(); i++) { PerformanceRankingWarpper performanceRankingWarpper = performanceRankingWarppers.get(i); @@ -2192,10 +2334,6 @@ if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ break; } - if(i == performanceRankingWarppers.size() - 1){ - position = 0; - d = 0D; - } } MyAchievementWarpper myAchievementWarpper = new MyAchievementWarpper(); myAchievementWarpper.setType("订单"); @@ -2218,10 +2356,6 @@ if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ break; } - if(i == performanceRankingWarppers.size() - 1){ - position = 0; - d = 0D; - } } myAchievementWarpper = new MyAchievementWarpper(); myAchievementWarpper.setType("收入"); @@ -2243,10 +2377,6 @@ } if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ break; - } - if(i == performanceRankingWarppers.size() - 1){ - position = 0; - d = 0D; } } myAchievementWarpper = new MyAchievementWarpper(); -- Gitblit v1.7.1