From 9b230057d5941c4ec0d29cda2c8163f9a6d7a1e9 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 02 六月 2023 15:51:38 +0800 Subject: [PATCH] 修改bug --- user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java | 255 +++++++++++++++++++++++++------------------------- 1 files changed, 129 insertions(+), 126 deletions(-) diff --git a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java index de79ec0..2dc4530 100644 --- a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -15,6 +15,8 @@ import com.agentdriving.user.modular.system.util.GaoDe.model.District; import com.agentdriving.user.modular.system.util.juhe.WeatherUtil; import com.agentdriving.user.modular.system.util.mongodb.model.Location; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -42,6 +44,8 @@ */ @Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService { + + Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class); @Autowired private ISystemConfigService systemConfigService; @@ -222,7 +226,6 @@ if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){ b = false; - Double dd = 0d; for (int j = 0; j < num3.size(); j++) { JSONObject jsonObject2 = num3.getJSONObject(j); Double num1_1 = jsonObject2.getDouble("num1"); @@ -231,58 +234,13 @@ if(num1_1.compareTo(distance) <= 0 && num2_1.compareTo(distance) > 0){ order.setStartDistance(distance);//起步里程 order.setStartPrice(num3_1);//起步价 + break; } if(j == num3.size() - 1 && order.getStartPrice() == 0){ order.setStartDistance(num2_1);//起步里程 order.setStartPrice(num3_1);//起步价 - dd = distance - num2_1; } } - if(dd != 0){ - //计算长途费 - if(distance.compareTo(num4) > 0){ - order.setLongDistance(num4 + "-" + num5);//长途里程 - order.setLongDistancePrice(num6);//长途费 - } - //计算长途里程超出的部分 - if(distance.compareTo(num5) > 0){ - BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num5)); - BigDecimal divide1 = subtract1.divide(new BigDecimal(num7), new MathContext(2, RoundingMode.HALF_EVEN)); - BigDecimal multiply1 = divide1.multiply(new BigDecimal(num8)); - order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 - order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 - } - } - break; - } - } - - if(b){//默认配置 - JSONObject jsonObject1 = chargeStandard.getJSONObject(0); - JSONArray num3 = jsonObject1.getJSONArray("num3");//起步里程 - Double num4 = jsonObject1.getDouble("num4");//长途里程 - Double num5 = jsonObject1.getDouble("num5");//长途里程 - Double num6 = jsonObject1.getDouble("num6");//长途费 - Double num7 = jsonObject1.getDouble("num7");//超出长途里程每num10公里 - Double num8 = jsonObject1.getDouble("num8");//超过num8每num10公里收取num11 - - Double dd = 0d; - for (int j = 0; j < num3.size(); j++) { - JSONObject jsonObject2 = num3.getJSONObject(j); - Double num1_1 = jsonObject2.getDouble("num1"); - Double num2_1 = jsonObject2.getDouble("num2"); - Double num3_1 = jsonObject2.getDouble("num3"); - if(num1_1.compareTo(distance) <= 0 && num2_1.compareTo(distance) > 0){ - order.setStartDistance(distance);//起步里程 - order.setStartPrice(num3_1);//起步价 - } - if(j == num3.size() - 1 && order.getStartPrice() == 0){ - order.setStartDistance(num2_1);//起步里程 - order.setStartPrice(num3_1);//起步价 - dd = distance - num2_1; - } - } - if(dd != 0){ //计算长途费 if(distance.compareTo(num4) > 0){ order.setLongDistance(num4 + "-" + num5);//长途里程 @@ -296,6 +254,45 @@ order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 } + } + } + + if(b){//默认配置 + JSONObject jsonObject1 = chargeStandard.getJSONObject(0); + JSONArray num3 = jsonObject1.getJSONArray("num3");//起步里程 + Double num4 = jsonObject1.getDouble("num4");//长途里程 + Double num5 = jsonObject1.getDouble("num5");//长途里程 + Double num6 = jsonObject1.getDouble("num6");//长途费 + Double num7 = jsonObject1.getDouble("num7");//超出长途里程每num10公里 + Double num8 = jsonObject1.getDouble("num8");//超过num8每num10公里收取num11 + + for (int j = 0; j < num3.size(); j++) { + JSONObject jsonObject2 = num3.getJSONObject(j); + Double num1_1 = jsonObject2.getDouble("num1"); + Double num2_1 = jsonObject2.getDouble("num2"); + Double num3_1 = jsonObject2.getDouble("num3"); + if(num1_1.compareTo(distance) <= 0 && num2_1.compareTo(distance) > 0){ + order.setStartDistance(distance);//起步里程 + order.setStartPrice(num3_1);//起步价 + break; + } + if(j == num3.size() - 1 && order.getStartPrice() == 0){ + order.setStartDistance(num2_1);//起步里程 + order.setStartPrice(num3_1);//起步价 + } + } + //计算长途费 + if(distance.compareTo(num4) > 0){ + order.setLongDistance(num4 + "-" + num5);//长途里程 + order.setLongDistancePrice(num6);//长途费 + } + //计算长途里程超出的部分 + if(distance.compareTo(num5) > 0){ + BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num5)); + BigDecimal divide1 = subtract1.divide(new BigDecimal(num7), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal multiply1 = divide1.multiply(new BigDecimal(num8)); + order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 + order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 } } @@ -465,15 +462,14 @@ return ResultUtil.error("司机还未上班"); } Driver driver = driverService.selectById(travelOrder.getDriverId()); - if(driver.getServerStatus() == 2){ - return ResultUtil.error("司机正在服务中"); - } - order.setAgentId(driver.getAgentId()); - order.setBranchOfficeId(driver.getBranchOfficeId()); - order.setOrderTakingTime(new Date()); + if(driver.getServerStatus() == 1){ + order.setAgentId(driver.getAgentId()); + order.setBranchOfficeId(driver.getBranchOfficeId()); + order.setOrderTakingTime(new Date()); - driver.setServerStatus(2); - driverService.updateById(driver); + driver.setServerStatus(2); + driverService.updateById(driver); + } appUser.setCancelCount(0); appUser.setIsException(1); @@ -538,12 +534,14 @@ Query query = Query.query(Criteria.where("location").withinSphere(circle)); List<Location> locations = mongoTemplate.find(query, Location.class); List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + logger.warn("范围内司机--》" + JSON.toJSONString(driverIds)); Integer driver = null; YouTuiDriver youTuiDriver1 = null; if(driverIds.size() > 0){ List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); Double d = null; + logger.warn("优推司机--》" + JSON.toJSONString(youTuiDrivers)); for (YouTuiDriver youTuiDriver : youTuiDrivers) { String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); if(ToolUtil.isEmpty(value)){ @@ -559,6 +557,7 @@ d = wgs84; driver = youTuiDriver.getDriverId(); youTuiDriver1 = youTuiDriver; + logger.warn("最优优推司机--》" + JSON.toJSONString(driver)); } } } @@ -583,9 +582,11 @@ locations = mongoTemplate.find(query, Location.class); driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + logger.warn("范围内司机--》" + JSON.toJSONString(driverIds)); if(driverIds.size() > 0){ List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); + logger.warn("范围内空闲司机--》" + JSON.toJSONString(drivers)); if(drivers.size() == 0){ continue; } @@ -632,7 +633,7 @@ } } } - + logger.warn("最终的司机--》" + JSON.toJSONString(driver)); if(null != driver){ pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); //创建定时任务处理订单到大厅 @@ -643,12 +644,48 @@ if(order1.getState() == 101 || order1.getState() == 201){ order1.setHallOrder(1); OrderServiceImpl.this.updateById(order1); + ExtraPushOrder(order1); } } }, num4 * 1000); }else{ order.setHallOrder(1); this.updateById(order); + ExtraPushOrder(order); + } + } + + public void ExtraPushOrder(Order order){ + String startLat = order.getStartLat(); + String startLng = order.getStartLng(); + + //找到中心点 + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); + Double num = 5D;//范围公里 + //构造半径 + Distance distanceR = new Distance(num, Metrics.KILOMETERS); + //画圆 + Circle circle = new Circle(geoJsonPoint, distanceR); + // 构造query对象 + Query query = Query.query(Criteria.where("location").withinSphere(circle)); + List<Location> locations = mongoTemplate.find(query, Location.class); + List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + if(driverIds.size() == 0){ + return; + } + List<DriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<DriverWork>().in("driverId", driverIds).eq("status", 1)); + driverIds = tDriverWorks.stream().map(DriverWork::getDriverId).collect(Collectors.toList()); + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) + .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ + return; + } + for (Driver driver1 : drivers) { + String value = redisUtil.getValue("DRIVER" + driver1.getId()); + if (ToolUtil.isEmpty(value)) { + return; + } + pushUtil.pushGrabOrderExtras(driver1.getId(), 2); } } @@ -1042,9 +1079,9 @@ } if(appUser.getHavDiscount() == 1){//9折 - payMoney = payMoney * 0.9; order.setDiscount(9D); order.setDiscountAmount(payMoney * 0.1); + payMoney = payMoney * 0.9; } order.setPayType(2); @@ -1107,7 +1144,7 @@ order.setPayType(1); order.setPayMoney(payMoney); - payMoney = payMoney > appUser.getAccountBalance() ? payMoney - appUser.getAccountBalance() : 0D; + payMoney = payMoney.compareTo(appUser.getAccountBalance()) > 0 ? payMoney - appUser.getAccountBalance() : 0D; AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); @@ -1119,7 +1156,7 @@ accountChangeDetail.setChangeType(2); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("代驾服务费"); - appUser.setAccountBalance(appUser.getAccountBalance() > payMoney ? appUser.getAccountBalance() - payMoney : 0); + appUser.setAccountBalance(appUser.getAccountBalance().compareTo(payMoney) > 0 ? appUser.getAccountBalance() - payMoney : 0); accountChangeDetail.setNewData(appUser.getAccountBalance()); appUserService.updateById(appUser); accountChangeDetailService.insert(accountChangeDetail); @@ -1367,40 +1404,6 @@ SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2)); if(null != systemConfig1){ JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent()); - //司机推荐首单收入 - List<Integer> state = Arrays.asList(108, 109); - int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state)); - if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ - Double num1 = jsonObject1.getDouble("num1"); - num1 = (num3 >= num1 ? num1 : num3); - - if(num1 > 0){ - Driver driver1 = driverService.selectById(appUser.getInviterId()); - AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(driver1.getId()); - accountChangeDetail.setType(1); - accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - accountChangeDetail.setExplain("订单分佣收入"); - accountChangeDetail.setCreateTime(new Date()); - driver1.setCommission(driver1.getCommission() + num1); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - driverService.updateById(driver1); - accountChangeDetailService.saveData(accountChangeDetail); - - Revenue revenue = new Revenue(); - revenue.setType(2); - revenue.setUserType(2); - revenue.setUserId(driver1.getId()); - revenue.setOrderId(order.getId()); - revenue.setAmount(num1); - revenue.setCreateTime(new Date()); - revenueService.insert(revenue); - } - num3 = (num3 >= num1 ? num3 - num1 : 0); - } //开始处理层级抽佣 if(null != driver & null != driver.getInviterType() && driver.getInviterType() == 2){ @@ -1409,17 +1412,17 @@ Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机 if(null != driver2 && null != driver2.getInviterType() && driver2.getInviterType() == 2){ Driver driver3 = driverService.selectById(driver2.getInviterId());//三级级司机 + Double num4 = jsonObject1.getDouble("num4"); Double num5 = jsonObject1.getDouble("num5"); Double num6 = jsonObject1.getDouble("num6"); - Double num7 = jsonObject1.getDouble("num7"); - num5 = (num3 >= num5 ? num5 : num3); - if(num5 > 0 && null != driver1){ + num4 = (num3 >= num4 ? num4 : num3); + if(num4 > 0 && null != driver1){ Revenue revenue = new Revenue(); revenue.setType(2); revenue.setUserType(2); revenue.setUserId(driver1.getId()); revenue.setOrderId(order.getId()); - revenue.setAmount(num5); + revenue.setAmount(num4); revenue.setCreateTime(new Date()); revenueService.insert(revenue); @@ -1432,20 +1435,20 @@ accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); - driver1.setCommission(driver1.getCommission() + num5); + driver1.setCommission(driver1.getCommission() + num4); accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); - num3 = (num3 >= num5 ? num3 - num5 : 0); + num3 = (num3 >= num4 ? num3 - num4 : 0); } - num6 = (num3 >= num6 ? num6 : num3); - if(num6 > 0 && null != driver2){ + num5 = (num3 >= num5 ? num5 : num3); + if(num5 > 0 && null != driver2){ Revenue revenue = new Revenue(); revenue.setType(2); revenue.setUserType(2); revenue.setUserId(driver2.getId()); revenue.setOrderId(order.getId()); - revenue.setAmount(num6); + revenue.setAmount(num5); revenue.setCreateTime(new Date()); revenueService.insert(revenue); @@ -1458,20 +1461,20 @@ accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); - driver2.setCommission(driver2.getCommission() + num6); + driver2.setCommission(driver2.getCommission() + num5); accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); - num3 = (num3 >= num6 ? num3 - num6 : 0); + num3 = (num3 >= num5 ? num3 - num5 : 0); } - num7 = (num3 >= num7 ? num7 : num3); - if(num7 > 0 && null != driver3){ + num6 = (num3 >= num6 ? num6 : num3); + if(num6 > 0 && null != driver3){ Revenue revenue = new Revenue(); revenue.setType(2); revenue.setUserType(2); revenue.setUserId(driver3.getId()); revenue.setOrderId(order.getId()); - revenue.setAmount(num7); + revenue.setAmount(num6); revenue.setCreateTime(new Date()); revenueService.insert(revenue); @@ -1484,23 +1487,23 @@ accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); - driver3.setCommission(driver3.getCommission() + num7); + driver3.setCommission(driver3.getCommission() + num6); accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); driverService.updateById(driver3); accountChangeDetailService.saveData(accountChangeDetail); - num3 = (num3 >= num7 ? num3 - num7 : 0); + num3 = (num3 >= num6 ? num3 - num6 : 0); } }else{ + Double num2_ = jsonObject1.getDouble("num2"); Double num3_ = jsonObject1.getDouble("num3"); - Double num4 = jsonObject1.getDouble("num4"); - num3_ = (num3 >= num3_ ? num3_ : num3); - if(num3_ > 0 && null != driver1){ + num2_ = (num3 >= num2_ ? num2_ : num3); + if(num2_ > 0 && null != driver1){ Revenue revenue = new Revenue(); revenue.setType(2); revenue.setUserType(2); revenue.setUserId(driver1.getId()); revenue.setOrderId(order.getId()); - revenue.setAmount(num3_); + revenue.setAmount(num2_); revenue.setCreateTime(new Date()); revenueService.insert(revenue); @@ -1513,20 +1516,20 @@ accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); - driver1.setCommission(driver1.getCommission() + num3_); + driver1.setCommission(driver1.getCommission() + num2_); accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); - num3 = (num3 >= num3_ ? num3 - num3_ : 0); + num3 = (num3 >= num2_ ? num3 - num2_ : 0); } - num4 = (num3 >= num4 ? num4 : num3); - if(num4 > 0 && null != driver2){ + num3_ = (num3 >= num3_ ? num3_ : num3); + if(num3_ > 0 && null != driver2){ Revenue revenue = new Revenue(); revenue.setType(2); revenue.setUserType(2); revenue.setUserId(driver2.getId()); revenue.setOrderId(order.getId()); - revenue.setAmount(num4); + revenue.setAmount(num3_); revenue.setCreateTime(new Date()); revenueService.insert(revenue); @@ -1539,23 +1542,23 @@ accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); - driver2.setCommission(driver2.getCommission() + num4); + driver2.setCommission(driver2.getCommission() + num3_); accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); - num3 = (num3 >= num4 ? num3 - num4 : 0); + num3 = (num3 >= num3_ ? num3 - num3_ : 0); } } }else{ - Double num2_ = jsonObject1.getDouble("num2"); - num2_ = (num3 >= num2_ ? num2_ : num3); - if(num2_ > 0 && null != driver1){ + Double num1_ = jsonObject1.getDouble("num1"); + num1_ = (num3 >= num1_ ? num1_ : num3); + if(num1_ > 0 && null != driver1){ Revenue revenue = new Revenue(); revenue.setType(2); revenue.setUserType(2); revenue.setUserId(driver1.getId()); revenue.setOrderId(order.getId()); - revenue.setAmount(num2_); + revenue.setAmount(num1_); revenue.setCreateTime(new Date()); revenueService.insert(revenue); @@ -1568,11 +1571,11 @@ accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); - driver1.setCommission(driver1.getCommission() + num2_); + driver1.setCommission(driver1.getCommission() + num1_); accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); - num3 = (num3 >= num2_ ? num3 - num2_ : 0); + num3 = (num3 >= num1_ ? num3 - num1_ : 0); } } } -- Gitblit v1.7.1