puzhibing
2023-08-16 d5b3e5a413bcfccba294793ee093722f31b2448a
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -112,6 +112,9 @@
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IOrderService orderService;
    @Value("${wx.appletsAppid}")
    private String appletsAppid;
@@ -167,7 +170,7 @@
        int i = 0;
        Double scope = 5D;
        while (true){
            List<NearbyDriverWarpper> nearbyDriverWarppers = driverService.queryDriverPosition(estimatedCosts.getLng().toString(), estimatedCosts.getLat().toString(), scope);
            List<NearbyDriverWarpper> nearbyDriverWarppers = driverService.queryDriverPosition(estimatedCosts.getStartLng().toString(), estimatedCosts.getStartLat().toString(), scope);
            if(nearbyDriverWarppers.size() == 0){
                scope += 5;
                i++;
@@ -417,18 +420,6 @@
            return ResultUtil.error("您还有正在进行的订单");
        }
        String value = redisUtil.getValue("USER" + uid);
        if(ToolUtil.isEmpty(value)){
            redisUtil.setStrValue("USER" + uid, System.currentTimeMillis() + "", 60);
        }else{
            Long s = System.currentTimeMillis() - Long.valueOf(value);
            if(s.compareTo(60000L) < 0){//1分钟
                return ResultUtil.error("数据处理中");
            }
            redisUtil.setStrValue("USER" + uid, System.currentTimeMillis() + "", 60);
        }
        String startAddress = travelOrder.getStartAddress();
        startAddress = startAddress.replaceAll("& #40;", "(");
        startAddress = startAddress.replaceAll("& #41;", ")");
@@ -577,13 +568,16 @@
                List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
                        .eq("state", 2).last(" and surplusQuantity > 0 and now() < endTime and now() < failureTime"));
                Double d = null;
                System.err.println("【" + orderId + "】所有优推司机:" + JSON.toJSONString(youTuiDrivers));
                for (YouTuiDriver youTuiDriver : youTuiDrivers) {
                    String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
                    if(ToolUtil.isEmpty(value)){
                        continue;
                    }
                    Driver driver1 = driverService.selectById(youTuiDriver.getDriverId());
                    if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){
                    int count = orderService.selectCount(new EntityWrapper<Order>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
                    if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1 || count > 0){
                        continue;
                    }
                    DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
@@ -598,6 +592,7 @@
                        youTuiDriver1 = youTuiDriver;
                    }
                }
                System.err.println("【" + orderId + "】优推最终司机---》距离:" +  d + ",司机:" + JSON.toJSONString(driver) + ",优推数据:" + JSON.toJSONString(youTuiDriver1));
            }
            if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
                youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
@@ -627,6 +622,7 @@
                            continue;
                        }
                        System.err.println("【" + orderId + "】范围推送【第" + i + "轮】:" + JSON.toJSONString(drivers));
                        Integer integral = null;//积分
                        Double score = null;//评分
                        Double d = null;
@@ -639,6 +635,10 @@
                            if(null == driverWork){
                                continue;
                            }
                            int count = orderService.selectCount(new EntityWrapper<Order>().eq("driverId", driver1.getId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
                            if(count > 0){
                                continue;
                            }
                            if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
                                integral = driver1.getIntegral();
@@ -647,6 +647,8 @@
                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                                Double wgs84 = distance.get("WGS84");
                                d = wgs84;
                                System.err.println("【" + orderId + "】范围推送【第" + i + "轮】----》【积分:" + integral + "、司机:" + JSON.toJSONString(driver1));
                                continue;
                            }
                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
@@ -656,6 +658,8 @@
                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                                Double wgs84 = distance.get("WGS84");
                                d = wgs84;
                                System.err.println("【" + orderId + "】范围推送【第" + i + "轮】----》【评分:" + score + "、司机:" + JSON.toJSONString(driver1));
                                continue;
                            }
                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
@@ -666,11 +670,13 @@
                                    integral = driver1.getIntegral();
                                    score = driver1.getScore();
                                    driver = driver1.getId();
                                    System.err.println("【" + orderId + "】范围推送【第" + i + "轮】----》距离:" + d + "、司机:" + JSON.toJSONString(driver1));
                                    continue;
                                }
                            }
                        }
                        System.err.println("【" + orderId + "】范围推送【第" + i + "轮】最终司机----》距离:" + d + "、司机:" + JSON.toJSONString(driver));
                    }
                }
            }
@@ -836,6 +842,12 @@
    @Override
    public ResultUtil editOrderEndAddress(Integer uid, EditOrderEndAddress editOrderEndAddress) throws Exception {
        Order order = this.selectById(editOrderEndAddress.getOrderId());
        String endAddress = editOrderEndAddress.getEndAddress();
        endAddress = endAddress.replaceAll("& #40;", "(");
        endAddress = endAddress.replaceAll("& #41;", ")");
        editOrderEndAddress.setEndAddress(endAddress);
        order.setEndAddress(editOrderEndAddress.getEndAddress());
        order.setEndLat(editOrderEndAddress.getEndLat().toString());
        order.setEndLng(editOrderEndAddress.getEndLng().toString());
@@ -908,6 +920,7 @@
        orderPriceWarpper.setDiscountedPrice(order.getDiscountedPrice());
        orderPriceWarpper.setBadWeatherPrice(order.getBadWeatherPrice());
        orderPriceWarpper.setPayMoney(order.getPayMoney());
        orderPriceWarpper.setOrderMoney(order.getOrderMoney());
        if(order.getState() < 107){
            orderPriceWarpper.setPayMoney(order.getOrderMoney());
        }
@@ -948,9 +961,9 @@
            orderPriceWarpper.setCouponId(coupon.getId());
        }
        if(payType == 1 && null == couponId && appUser.getHavDiscount() == 1 && balance.compareTo(orderMoney) >= 0){//使用余额抵扣
            orderPriceWarpper.setDiscount(9D);
            orderPriceWarpper.setDiscountAmount(new BigDecimal(orderMoney * 0.1).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            orderMoney = new BigDecimal(orderMoney * 0.9).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
            orderPriceWarpper.setDiscount(9.5D);
            orderPriceWarpper.setDiscountAmount(new BigDecimal(orderMoney * 0.05).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            orderMoney = new BigDecimal(orderMoney * 0.95).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
        }
        if(null != couponId){
            UserToCoupon userToCoupon = userToCouponService.selectById(couponId);
@@ -2015,7 +2028,7 @@
        revenue.setUserType(2);
        revenue.setUserId(driver.getId());
        revenue.setOrderId(order.getId());
        revenue.setAmount(order.getPayMoney() + order.getDiscountedPrice() + order.getDiscountAmount());
        revenue.setAmount(order.getPayMoney() + order.getDiscountedPrice());//todo 折扣司机承担
        revenue.setCreateTime(new Date());
        revenueService.insert(revenue);