From 9e4440e8ce1ed3c72932f3f62f4d05f55c9080e6 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 17 八月 2023 11:49:12 +0800 Subject: [PATCH] 新增加司机端接口 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 499 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 309 insertions(+), 190 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 34b1756..e0465c6 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 @@ -161,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()); @@ -218,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); //推送状态 @@ -237,6 +244,7 @@ } }).start(); } + redisUtil.setStrValue("newOrder", "true"); return ResultUtil.success(order.getState() == 102 ? order.getId() : null); } @@ -363,6 +371,9 @@ BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4)); order.setOutWaitTime(w);//等待时长超出分钟 order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用 + }else{ + order.setWaitTime(waitTime);//等待时长 + order.setWaitTimePrice(num2);//等待费用 } //恶劣天气 @@ -461,12 +472,12 @@ * 合适司:积分 > 评分 > 距离 * 3.司机没有接单直接将订单置入大厅 */ - boolean lock = redisUtil.lock(5); + boolean lock = redisUtil.lock(orderId.toString(), 5); if(!lock){ int num1 = 1; while (num1 <= 10){ Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(5); + lock = redisUtil.lock(orderId.toString(),5); if(lock){ break; }else{ @@ -478,11 +489,12 @@ order.setHallOrder(1); this.updateById(order); ExtraPushOrder(order); - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); + return; } SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); if(null == systemConfig){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); return; } JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); @@ -635,6 +647,7 @@ order1.setHallOrder(1); OrderServiceImpl.this.updateById(order1); ExtraPushOrder(order); + redisUtil.setStrValue("lobbyOrder", "true"); } @@ -644,11 +657,12 @@ order.setHallOrder(1); this.updateById(order); ExtraPushOrder(order); + redisUtil.setStrValue("lobbyOrder", "true"); } - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); }catch (Exception e){ e.printStackTrace(); - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); } } @@ -801,12 +815,12 @@ if(count > 0){ return ResultUtil.error("还有未完成的订单"); } - boolean lock = redisUtil.lock(5); + boolean lock = redisUtil.lock(orderId.toString(), 5); if(!lock){ int num1 = 1; while (num1 <= 10){ Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(5); + lock = redisUtil.lock(orderId.toString(),5); if(lock){ break; }else{ @@ -815,17 +829,18 @@ } } if(!lock){ + redisUtil.unlock(orderId.toString()); return ResultUtil.error("请重试"); } Order order = this.selectById(orderId); Integer state = order.getState(); Integer oldDriverId = order.getDriverId(); if(state == 301){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); return ResultUtil.error("订单已被取消"); } if(state != 101 && state != 201){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); return ResultUtil.error("手速慢了哦"); } order.setDriverId(uid); @@ -834,7 +849,7 @@ order.setState(102); order.setOrderTakingTime(new Date()); this.updateById(order); - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); if(null != order.getUserId()){ AppUser appUser = appUserService.selectById(order.getUserId()); @@ -874,9 +889,10 @@ orderTransfer.setSuccessTime(new Date()); orderTransferService.insert(orderTransfer); } - - pushUtil.pushTransferSuccessful(order.getUserId(), 1, order.getId()); pushUtil.pushTransferSuccessful(oldDriverId, 2, order.getId()); + if(null != order.getUserId()){ + pushUtil.pushTransferSuccessful(order.getUserId(), 1, order.getId()); + } } //推动订单数据 @@ -889,7 +905,7 @@ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState()); } }catch (Exception e){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); e.printStackTrace(); throw e; } @@ -938,6 +954,7 @@ Map<String, String> distance1 = MapUtil.getDistance(orderInfoWarpper.getStartLng() + "," + orderInfoWarpper.getStartLat(), value, 0); orderInfoWarpper.setPickUpTime(Integer.valueOf(distance1.get("duration")) / 60); } + orderInfoWarpper.setDriverId(order.getDriverId()); return orderInfoWarpper; } @@ -979,8 +996,10 @@ order.setStartTime(new Date()); } //计算等待用户时长 - Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); - order.setWaitTime(order.getWaitTime() + w); + if(null != order.getStartWaitTime()){ + Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); + order.setWaitTime(order.getWaitTime() + w); + } order.setStartWaitTime(null); orderPositionService.initMap(order.getId()); break; @@ -1005,7 +1024,12 @@ .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); city = null != weatherCity ? weatherCity.getId().toString() : ""; } - order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); + try { + order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.error("计算费用异常"); + } Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney()); if(null != coupon){ order.setCouponId(coupon.getId()); @@ -1018,10 +1042,6 @@ order.setPayMoney(order.getOrderMoney()); } - //修改司机状态和积分 - Driver driver = driverService.selectById(order.getDriverId()); - driver.setServerStatus(1); - driverService.updateById(driver); saveIntegral(order); redisUtil.delSetValue("orderService", order.getId().toString()); break; @@ -1155,14 +1175,16 @@ @Override 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(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 driver = drivers.get(0); + driver = drivers.get(0); if (driver.getServerStatus() != 1) { return ResultUtil.error("司机正在服务中,无法转单。"); } @@ -1172,15 +1194,20 @@ order.setDriverId(driver.getId()); orderTransfer.setNewDriverId(driver.getId()); } - } - if(order.getDriverId().compareTo(uid) != 0){ - return ResultUtil.error("无权操作"); + 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); @@ -1199,6 +1226,13 @@ 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); + } } return ResultUtil.success(); @@ -1282,6 +1316,9 @@ @Override public ResultUtil driverCancelOrder(Integer uid, Long orderId, String cause) throws Exception { Order order = this.selectById(orderId); + if(null == order){ + return ResultUtil.error("订单数据异常"); + } if(uid.compareTo(order.getDriverId()) != 0){ return ResultUtil.error("无法取消订单"); } @@ -1310,6 +1347,7 @@ if(null != order.getUserId()){ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus()); } + redisUtil.setStrValue("cancelOrder", "true"); return ResultUtil.success(); } @@ -1335,11 +1373,13 @@ orderPriceWarpper.setOverDriveDistance(order.getOverDriveDistance()); orderPriceWarpper.setMileageFee(order.getOverDrivePrice()); }else{ - String[] split = order.getLongDistance().split("-"); - orderPriceWarpper.setStartPrice(order.getLongDistancePrice()); - orderPriceWarpper.setStartDistance(Double.valueOf(split[1])); - orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance()); - orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice()); + if(order.getLongDistance().indexOf("-") >= 0){ + String[] split = order.getLongDistance().split("-"); + orderPriceWarpper.setStartPrice(order.getLongDistancePrice()); + orderPriceWarpper.setStartDistance(Double.valueOf(split[1])); + orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance()); + orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice()); + } } Integer waitTime = order.getWaitTime() + order.getOutWaitTime(); Integer s = waitTime % 60; @@ -1433,30 +1473,32 @@ 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()); @@ -1464,6 +1506,13 @@ } } this.updateById(order); + + if((payType == 1 && state == 107) || (payType == 2 && state == 108)){ + //修改司机状态和积分 + Driver driver = driverService.selectById(order.getDriverId()); + driver.setServerStatus(1); + driverService.updateById(driver); + } if(payType == 2 && state == 108){//计算抽成 saveRevenue(order); @@ -1578,6 +1627,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(); @@ -1635,23 +1686,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; +// } +// } } } @@ -1698,23 +1750,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); @@ -1748,23 +1801,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); @@ -1798,23 +1852,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); @@ -1851,23 +1906,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); @@ -1901,23 +1957,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); @@ -1954,34 +2011,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(num4_ > 0){ + //先平台抽佣 + num4_ = (num3 >= num4_ ? num4_ : num3); + Double balance = revenueService.queryCompanyBalance(); + Revenue revenue = new Revenue(); + 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){ + if(num3 > 0 && null != driver){ Double balance = revenueService.queryAgentBalance(driver.getAgentId()); Revenue revenue = new Revenue(); - revenue.setType(1); + revenue.setType(2); revenue.setUserType(3); revenue.setUserId(driver.getAgentId()); revenue.setOrderId(order.getId()); @@ -1990,26 +2099,28 @@ 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(); @@ -2178,6 +2289,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); -- Gitblit v1.7.1