From 03552ae04973a224b5ccfce34e64999ea6a13d44 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期四, 10 八月 2023 09:31:53 +0800 Subject: [PATCH] 超省2.0 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 129 +++++++++++++++++++++++++----------------- 1 files changed, 76 insertions(+), 53 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 797f285..1d847c9 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 @@ -136,7 +136,7 @@ */ int count = this.selectCount(new EntityWrapper<Order>().eq("userPhone", addOrderWarpper.getPhone()).eq("status", 1).in("state", Arrays.asList(101, 102, 103, 104, 105, 106, 201))); if(count > 0){ - return ResultUtil.error("该用户还有未完成的订单"); + return ResultUtil.error("该用户还有未完成的订单", ""); } Driver driver = driverService.selectById(uid); DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", uid).eq("status", 1)); @@ -168,7 +168,7 @@ if(ToolUtil.isNotEmpty(addOrderWarpper.getEndAddress())){ Map<String, String> distance = MapUtil.getDistance(order.getStartLng() + "," + order.getStartLat(), order.getEndLng() + "," + order.getEndLat(), 1); if(null == distance){ - return ResultUtil.error("获取预估距离出错"); + return ResultUtil.error("获取预估距离出错", ""); } d = Double.valueOf(distance.get("distance")) / 1000; order.setEstimatedMileage(d); @@ -316,8 +316,6 @@ JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价 if(1 == num11){ - boolean badWeather = WeatherUtil.isBadWeather(city); - if(badWeather){ order.setBadWeatherDistance(num5);//恶劣天气公里 order.setBadWeatherPrice(num6);//恶劣天气费 if(distance.compareTo(num7) > 0){ @@ -336,7 +334,6 @@ BigDecimal subtract = new BigDecimal(num9).subtract(new BigDecimal(add)); order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费 } - } } } } @@ -929,7 +926,11 @@ pushOrderInfoWarpper.setDriverLat(split[1]); pushOrderInfoWarpper.setDriverLng(split[0]); } - pushOrderInfoWarpper.setWaitTime(order.getWaitTime()); + int w = 0; + if(null != order.getStartWaitTime()){ + w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).intValue(); + } + pushOrderInfoWarpper.setWaitTime(order.getWaitTime() + w); pushOrderInfoWarpper.setState(order.getState()); pushOrderInfoWarpper.setActualMileage(Double.valueOf(order.getActualMileage() / 1000)); pushOrderInfoWarpper.setTravelTime(0); @@ -962,8 +963,26 @@ * @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改动 + OrderTransfer orderTransfer = new OrderTransfer(); Order order = this.selectById(orderId); + if(phone!=null && !"".equals(phone)) { + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("phone", phone)); + if (drivers.size() == 0) { + return ResultUtil.error("暂无该司机,无法转单"); + } else { + Driver 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()); + } + } if(order.getDriverId().compareTo(uid) != 0){ return ResultUtil.error("无权操作"); } @@ -974,22 +993,24 @@ 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); + if(phone==null ||"".equals(phone)){ + //开始派单 + Order finalOrder = order; + new Thread(new Runnable() { + @Override + public void run() { + pushOrder(finalOrder); + } + }).start(); + } - //开始派单 - Order finalOrder = order; - new Thread(new Runnable() { - @Override - public void run() { - pushOrder(finalOrder); - } - }).start(); return ResultUtil.success(); } @@ -1147,13 +1168,8 @@ Order order = this.selectById(orderId); order.setState(state); - // TODO: 2023/5/18 临时 - payType = 1; - if(state == 108){ - payType = 2; - } - if(payType == 2 && state == 107){ + order.setPayType(3); Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney()); if(null != coupon){ order.setCouponId(coupon.getId()); @@ -1163,7 +1179,6 @@ } if(payType == 2 && state == 108){ - order.setPayType(3); order.setPayTime(new Date()); if(null != order.getCouponId()){ UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId()); @@ -1181,13 +1196,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getCouponBalance()); + accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getCouponBalance()); + accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); } @@ -1247,11 +1262,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num1); - accountChangeDetail.setNewData(driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1294,11 +1309,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num5); - accountChangeDetail.setNewData(driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); num3 = (num3 >= num5 ? num3 - num5 : 0); @@ -1320,11 +1335,11 @@ accountChangeDetail.setUserId(driver2.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver2.getCommission()); + accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver2.setCommission(driver2.getCommission() + num6); - accountChangeDetail.setNewData(driver2.getCommission()); + accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); num3 = (num3 >= num6 ? num3 - num6 : 0); @@ -1346,11 +1361,11 @@ accountChangeDetail.setUserId(driver3.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver3.getCommission()); + accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver3.setCommission(driver3.getCommission() + num7); - accountChangeDetail.setNewData(driver3.getCommission()); + accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); driverService.updateById(driver3); accountChangeDetailService.saveData(accountChangeDetail); num3 = (num3 >= num7 ? num3 - num7 : 0); @@ -1375,11 +1390,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num3_); - accountChangeDetail.setNewData(driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); num3 = (num3 >= num3_ ? num3 - num3_ : 0); @@ -1401,11 +1416,11 @@ accountChangeDetail.setUserId(driver2.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver2.getCommission()); + accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver2.setCommission(driver2.getCommission() + num4); - accountChangeDetail.setNewData(driver2.getCommission()); + accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); num3 = (num3 >= num4 ? num3 - num4 : 0); @@ -1430,11 +1445,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num2_); - accountChangeDetail.setNewData(driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); num3 = (num3 >= num2_ ? num3 - num2_ : 0); @@ -1464,11 +1479,11 @@ accountChangeDetail.setType(1); accountChangeDetail.setChangeType(9); accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setOldData(driver.getBalance()); + accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setExplain("线下收款服务费支出"); accountChangeDetail.setCreateTime(new Date()); driver.setBalance(driver.getBalance() - n); - accountChangeDetail.setNewData(driver.getBalance()); + accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.saveData(accountChangeDetail); } @@ -1521,9 +1536,7 @@ List<Integer> state = Arrays.asList(107, 108, 109); int count = this.selectCount(new EntityWrapper<Order>().eq("driverId", driverId).in("state", state).eq("status", 1)); performanceSummaryWarpper.setTotalOrder(count); - List<PerformanceRankingWarpper> list = new ArrayList<>(); int position = 0; - Double d = 0D; List<PerformanceRankingWarpper> performanceRankingWarppers = null; if(type == 1){//订单量 performanceRankingWarppers = this.baseMapper.queryDriverRank(time, dayType); @@ -1532,24 +1545,25 @@ performanceRankingWarppers = revenueService.queryDriverRank(2, time, dayType); } if(type == 3){//收入 - performanceRankingWarppers = revenueService.queryDriverRank(null, time, dayType); + 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); - Double amountOfData = performanceRankingWarpper.getAmountOfData(); - if(amountOfData.compareTo(d) != 0){ - position++; - d = amountOfData; - } - if(position <= 10){ - list.add(performanceRankingWarpper); - } if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ + position = i + 1; break; } } performanceSummaryWarpper.setPosition(position); - performanceSummaryWarpper.setList(list); + performanceSummaryWarpper.setList(performanceRankingWarppers.size() > 10 ? performanceRankingWarppers.subList(0, 10) : performanceRankingWarppers.subList(0, performanceRankingWarppers.size())); return performanceSummaryWarpper; } @@ -1632,4 +1646,13 @@ list.add(myAchievementWarpper); return list; } + + + /** + * 主动完成线下收款 + */ + @Override + public void completeCollection() { + this.baseMapper.completeCollection(); + } } -- Gitblit v1.7.1