“mitao”
2026-03-23 fe6554694d8ddf332b3d050ebb8eb5a920554880
feat:专车、出租车预支付下单联调修改
7个文件已修改
400 ■■■■■ 已修改文件
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/BaseWarpper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/resources/application-dev.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
@@ -392,7 +392,10 @@
        a.abnormalIntro,
        a.abnormalImg,
        a.companyId,
        IF((a.abnormalIntro is null and a.recoveryOrder = 1) or (a.state in (8, 9) and null = a.abnormal), 0, 1) as appealButton
        IF((a.abnormalIntro is null and a.recoveryOrder = 1) or (a.state in (8, 9) and null = a.abnormal), 0, 1) as appealButton,
        a.paymentMode,
        a.estimateAmount,
        a.serverCarModel
        from t_order_private_car a
        left join t_driver b on (a.driverId = b.id)
        left join t_car c on (a.carId = c.id)
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -307,6 +307,7 @@
                if (orderSource != 2) { // 扫码下单跳过先付判断(扫码下单已有固定司机)
                    TSysPaymentMode paymentMode = tSysPaymentModeService.selectOne(
                            new EntityWrapper<TSysPaymentMode>().last("LIMIT 1"));
                    baseWarpper.setPaymentMode(paymentMode.getPrivateType());
                    if (paymentMode != null && Integer.valueOf(1).equals(paymentMode.getPrivateType())) {
                        // 先付模式:计算预估金额,订单状态改为7(待支付)
                        Company payCompany = companyCityService.query(geocode.get("districtCode"));
@@ -338,6 +339,7 @@
                                        Double estimateMoney = Double.valueOf(amountMap.get("zongfeiyong").toString());
                                        orderPrivateCar.setEstimateAmount(estimateMoney);
                                        orderPrivateCar.setOrderMoney(estimateMoney);
                                        baseWarpper.setEstimateAmount(estimateMoney);
                                    }
                                }
                                // 先付模式:覆盖状态为7(待支付),不进行派单
@@ -691,6 +693,49 @@
                    orderPrivateCar.setPassengersPhone(userInfo.getPhone());
                }
                orderPrivateCar.setState(1);
                if (orderSource != 2) {
                    TSysPaymentMode paymentMode = tSysPaymentModeService.selectOne(
                            new EntityWrapper<TSysPaymentMode>().last("LIMIT 1"));
                    if (paymentMode != null && paymentMode.getPrivateType() != null) {
                        baseWarpper.setPaymentMode(paymentMode.getPrivateType());
                    }
                    if (paymentMode != null && Integer.valueOf(1).equals(paymentMode.getPrivateType())) {
                        Company payCompany = companyCityService.query(geocode.get("districtCode"));
                        if (payCompany != null) {
                            try {
                                double distanceMeters = orderPrivateCar.getEstimateMileage() != null
                                        ? orderPrivateCar.getEstimateMileage() : 0;
                                long durationSeconds = orderPrivateCar.getEstimateTime() != null
                                        ? (long) (orderPrivateCar.getEstimateTime() * 60) : 0;
                                List<ServerCarModelWarpper> priceList = serverCarModelService.getPrice(
                                        payCompany.getId(), distanceMeters, durationSeconds, 0L, 1, geocode);
                                Double estimateMoney = getBatchEstimateAmount(serverCarModel, priceList);
                                if (estimateMoney != null) {
                                    orderPrivateCar.setEstimateAmount(estimateMoney);
                                    orderPrivateCar.setOrderMoney(estimateMoney);
                                    orderPrivateCar.setState(7);
                                    orderPrivateCar.setCompanyId(payCompany.getId());
                                    orderPrivateCar.setPaymentMode(1);
                                    baseWarpper.setEstimateAmount(estimateMoney);
                                } else {
                                    orderPrivateCar.setPaymentMode(2);
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                                orderPrivateCar.setPaymentMode(2);
                                orderPrivateCar.setState(1);
                            }
                        } else {
                            orderPrivateCar.setPaymentMode(1);
                        }
                    } else {
                        orderPrivateCar.setPaymentMode(
                                (paymentMode != null && paymentMode.getPrivateType() != null)
                                        ? paymentMode.getPrivateType()
                                        : 2
                        );
                    }
                }
                orderPrivateCar.setInsertTime(new Date());
                orderPrivateCar.setTravelTime(travelTime);
                orderPrivateCar.setOrderType(reservation);
@@ -703,133 +748,120 @@
                JSONArray jsonArray = JSON.parseArray(serverCarModel);
                this.insert(orderPrivateCar);
                for (int i = 0; i < jsonArray.size(); i++) {
                    JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                    Integer serverCarModelId = jsonObject1.getInteger("serverCarModelId");
                    Integer rideType = jsonObject1.getInteger("rideType");
                    if (0 == serverCarModelId) {
                        OrderTaxi orderTaxi = new OrderTaxi();
                        orderTaxi.setId(orderPrivateCar.getId());
                        orderTaxi.setState(1);
                        orderTaxi.setUserId(orderPrivateCar.getUserId());
                        orderTaxi.setStartLon(orderPrivateCar.getStartLon());
                        orderTaxi.setStartLat(orderPrivateCar.getStartLat());
                        orderTaxiService.pushOrder(orderTaxi, 3);
                    }
                    if (rideType != 3) {
                        //推单操作-独享
                        this.pushOrder(orderPrivateCar.getId(), rideType, serverCarModelId, orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat());
                    } else {
                        OrderPrivateCar orderPrivateCar1 = null;
                        OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                        TbSpellOrderRule spellOrderRule = spellOrderRuleService.selectOne(new EntityWrapper<TbSpellOrderRule>().eq("openCityId", openCity.getId()));
                        //判断是否有相同线路的拼车-有直接拼成功,或者推送拼车订单
                        List<OrderPrivateCar> orderList = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("rideType", 3).in("state", "2,3,4").le("totalPeopleNum", 4 - peopleNum));
                        for (OrderPrivateCar order : orderList) {
                            if (spellOrderRule != null) {
                                JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
                                //判断时间
                                if (travelTime.getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && travelTime.getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
                                    //                        Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), order.getStartLon() + "," + order.getStartLat(), 1).get("distance").toString());
                                    //                        Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString());
                                    // TODO: 2023/11/4  已改成计算直线距离
                                    Double dis1 = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), order.getStartLon() + "," + order.getStartLat()).get("WGS84");
                                    Double dis2 = geodesyUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat()).get("WGS84");
                                    //判断距离
                                    if (dis1 <= jsonObject.getInteger("num1") * 1000 && dis2 <= jsonObject.getInteger("num2") * 1000) {
                                        orderPrivateCar1 = order;
                                        break;
                                    }
                                }
                            }
                if (orderPrivateCar.getState() != 7) {
                    for (int i = 0; i < jsonArray.size(); i++) {
                        JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                        Integer serverCarModelId = jsonObject1.getInteger("serverCarModelId");
                        Integer rideType = jsonObject1.getInteger("rideType");
                        if (0 == serverCarModelId) {
                            OrderTaxi orderTaxi = new OrderTaxi();
                            orderTaxi.setId(orderPrivateCar.getId());
                            orderTaxi.setState(1);
                            orderTaxi.setUserId(orderPrivateCar.getUserId());
                            orderTaxi.setStartLon(orderPrivateCar.getStartLon());
                            orderTaxi.setStartLat(orderPrivateCar.getStartLat());
                            orderTaxiService.pushOrder(orderTaxi, 3);
                        }
                        if (orderPrivateCar1 == null) {
                            orderList = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("rideType", 3).eq("state", 5).le("totalPeopleNum", 4 - peopleNum));
                        if (rideType != 3) {
                            //推单操作-独享
                            this.pushOrder(orderPrivateCar.getId(), rideType, serverCarModelId, orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat());
                        } else {
                            OrderPrivateCar orderPrivateCar1 = null;
                            OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                            TbSpellOrderRule spellOrderRule = spellOrderRuleService.selectOne(new EntityWrapper<TbSpellOrderRule>().eq("openCityId", openCity.getId()));
                            //判断是否有相同线路的拼车-有直接拼成功,或者推送拼车订单
                            List<OrderPrivateCar> orderList = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("rideType", 3).in("state", "2,3,4").le("totalPeopleNum", 4 - peopleNum));
                            for (OrderPrivateCar order : orderList) {
                                if (spellOrderRule != null) {
                                    JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
                                    //判断时间
                                    if (travelTime.getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && travelTime.getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
                                        String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(order.getDriverId()));
                                        //                            Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString());
                                        //                            Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString());
                                        // TODO: 2023/11/4  已改成计算直线距离
                                        Double dis1 = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value).get("WGS84");
                                        Double dis1 = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), order.getStartLon() + "," + order.getStartLat()).get("WGS84");
                                        Double dis2 = geodesyUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat()).get("WGS84");
                                        //判断距离
                                        if (dis1 <= jsonObject.getInteger("num3") * 1000 && dis2 <= jsonObject.getInteger("num4") * 1000) {
                                        if (dis1 <= jsonObject.getInteger("num1") * 1000 && dis2 <= jsonObject.getInteger("num2") * 1000) {
                                            orderPrivateCar1 = order;
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                        if (orderPrivateCar1 == null) {
                            this.pushOrder(orderPrivateCar.getId(), rideType, serverCarModelId, orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat());
                        } else {
                            Driver driver = driverService.selectById(orderPrivateCar1.getDriverId());
                            orderPrivateCar.setDriverId(driverId);
                            orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
                                    driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
                            orderPrivateCar.setState(2);
                            orderPrivateCar.setDriverId(driver.getId());
                            orderPrivateCar.setCarId(driver.getCarId());
                            CarService query1 = carServiceMapper.query(1, driver.getCarId());
                            orderPrivateCar.setServerCarModelId(query1.getServerCarModelId());
                            orderPrivateCar.setRideType(3);
                            orderPrivateCar.setSnatchOrderTime(new Date());
                            orderPrivateCar.setTotalPeopleNum(peopleNum + orderPrivateCar1.getTotalPeopleNum());
                            orderPrivateCar.setIsReassign(1);
                            orderPrivateCar.setIsDelete(1);
                            orderPrivateCar.setPid(orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid());
                            Integer promotion1 = isPromotion(orderPrivateCar.getUserId(), driver.getPlaceOfEmployment());
                            if(promotion1!=null){
                                orderPrivateCar.setPromotion(2);
                                Driver driver1 = driverService.selectById(promotion1);
                                orderPrivateCar.setPromotionUser(driver1.getName());
                                orderPrivateCar.setPromotionPhone(driver1.getPhone());
                                orderPrivateCar.setPromotionDriverId(promotion1);
                            }
                            //修改总订单人数
                            OrderPrivateCar orderPrivateCar2 = new OrderPrivateCar();
                            orderPrivateCar2.setSpellSuccess(1);
                            orderPrivateCar2.setTotalPeopleNum(peopleNum + orderPrivateCar1.getTotalPeopleNum());
                            this.update(orderPrivateCar2, new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid()).lt("state", 6));
                            this.update(orderPrivateCar2, new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid()).lt("state", 6));
                            //
                            //调用移动的小号接口
//                            Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
//                            if (String.valueOf(map.get("code")).equals("200")) {
//                                orderPrivateCar.setTelX(map.get("telX"));
//                                orderPrivateCar.setBindId(map.get("bindId"));
//                            }
                            new Thread(new Runnable() {
                                @Override
                                public void run() {
                                    pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0);
                                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 100, 0);
                                    pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1);
                            if (orderPrivateCar1 == null) {
                                orderList = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("rideType", 3).eq("state", 5).le("totalPeopleNum", 4 - peopleNum));
                                for (OrderPrivateCar order : orderList) {
                                    if (spellOrderRule != null) {
                                        JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
                                        if (travelTime.getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && travelTime.getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
                                            String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(order.getDriverId()));
                                            Double dis1 = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value).get("WGS84");
                                            Double dis2 = geodesyUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat()).get("WGS84");
                                            if (dis1 <= jsonObject.getInteger("num3") * 1000 && dis2 <= jsonObject.getInteger("num4") * 1000) {
                                                orderPrivateCar1 = order;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }).start();
                            List<OrderPrivateCar> orderList1 = this.selectList(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid()));
                            for (OrderPrivateCar orderPrivateCar3 : orderList1) {
                            }
                            if (orderPrivateCar1 == null) {
                                this.pushOrder(orderPrivateCar.getId(), rideType, serverCarModelId, orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat());
                            } else {
                                Driver driver = driverService.selectById(orderPrivateCar1.getDriverId());
                                orderPrivateCar.setDriverId(driverId);
                                orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
                                        driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
                                orderPrivateCar.setState(2);
                                orderPrivateCar.setDriverId(driver.getId());
                                orderPrivateCar.setCarId(driver.getCarId());
                                CarService query1 = carServiceMapper.query(1, driver.getCarId());
                                orderPrivateCar.setServerCarModelId(query1.getServerCarModelId());
                                orderPrivateCar.setRideType(3);
                                orderPrivateCar.setSnatchOrderTime(new Date());
                                orderPrivateCar.setTotalPeopleNum(peopleNum + orderPrivateCar1.getTotalPeopleNum());
                                orderPrivateCar.setIsReassign(1);
                                orderPrivateCar.setIsDelete(1);
                                orderPrivateCar.setPid(orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid());
                                Integer promotion1 = isPromotion(orderPrivateCar.getUserId(), driver.getPlaceOfEmployment());
                                if(promotion1!=null){
                                    orderPrivateCar.setPromotion(2);
                                    Driver driver1 = driverService.selectById(promotion1);
                                    orderPrivateCar.setPromotionUser(driver1.getName());
                                    orderPrivateCar.setPromotionPhone(driver1.getPhone());
                                    orderPrivateCar.setPromotionDriverId(promotion1);
                                }
                                OrderPrivateCar orderPrivateCar2 = new OrderPrivateCar();
                                orderPrivateCar2.setSpellSuccess(1);
                                orderPrivateCar2.setTotalPeopleNum(peopleNum + orderPrivateCar1.getTotalPeopleNum());
                                this.update(orderPrivateCar2, new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid()).lt("state", 6));
                                this.update(orderPrivateCar2, new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid()).lt("state", 6));
                                new Thread(new Runnable() {
                                    @Override
                                    public void run() {
                                        pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0);
                                        pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 100, 0);
                                        pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1);
                                    }
                                }).start();
                                List<OrderPrivateCar> orderList1 = this.selectList(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid()));
                                for (OrderPrivateCar orderPrivateCar3 : orderList1) {
                                    pushUtil.pushOrderState(1, orderPrivateCar3.getUserId(), orderPrivateCar3.getId(), 1, 13, 0);
                                }
                                OrderPrivateCar orderPrivateCar3 = this.selectById(orderPrivateCar.getPid());
                                pushUtil.pushOrderState(1, orderPrivateCar3.getUserId(), orderPrivateCar3.getId(), 1, 13, 0);
                            }
                            OrderPrivateCar orderPrivateCar3 = this.selectById(orderPrivateCar.getPid());
                            pushUtil.pushOrderState(1, orderPrivateCar3.getUserId(), orderPrivateCar3.getId(), 1, 13, 0);
                        }
                    }
                }
                
                //添加消息
                systemNoticeService.addSystemNotice(1, "您的快车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
                if (orderPrivateCar.getState() == 7) {
                    systemNoticeService.addSystemNotice(1, "您的快车订单已生成,请先完成支付。", orderPrivateCar.getUserId(), 1);
                } else {
                    systemNoticeService.addSystemNotice(1, "您的快车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
                }
                baseWarpper.setId(orderPrivateCar.getId());
            } catch (Exception e) {
                e.printStackTrace();
@@ -842,6 +874,45 @@
        return ResultUtil.success(baseWarpper);
    }
    private Double getBatchEstimateAmount(String serverCarModel, List<ServerCarModelWarpper> priceList) {
        if (ToolUtil.isEmpty(serverCarModel) || priceList == null || priceList.isEmpty()) {
            return null;
        }
        JSONArray jsonArray = JSON.parseArray(serverCarModel);
        Double minEstimateAmount = null;
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer serverCarModelId = jsonObject.getInteger("serverCarModelId");
            Integer rideType = jsonObject.getInteger("rideType");
            if (serverCarModelId == null || serverCarModelId == 0) {
                continue;
            }
            ServerCarModelWarpper matched = priceList.stream()
                    .filter(item -> item.getId() != null && item.getId().equals(serverCarModelId))
                    .findFirst()
                    .orElse(null);
            if (matched == null) {
                continue;
            }
            Map<String, Object> amountMap;
            if (Integer.valueOf(2).equals(rideType)) {
                amountMap = matched.getBuyNowAmount();
            } else if (Integer.valueOf(3).equals(rideType)) {
                amountMap = matched.getPutTogetherOneAmount();
            } else {
                amountMap = matched.getAmount();
            }
            if (amountMap == null || amountMap.get("zongfeiyong") == null) {
                continue;
            }
            Double estimateAmount = Double.valueOf(amountMap.get("zongfeiyong").toString());
            if (minEstimateAmount == null || estimateAmount < minEstimateAmount) {
                minEstimateAmount = estimateAmount;
            }
        }
        return minEstimateAmount;
    }
    private Integer isPromotion(Integer userId, String code){
        UserInfo userInfo = userInfoService.selectById(userId);
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/BaseWarpper.java
@@ -31,6 +31,34 @@
    @ApiModelProperty("纬度")
    private Double lat;
    /**
     * 预估金额(先付模式下单时计算并存储)
     */
    @ApiModelProperty("预估金额")
    private Double estimateAmount;
    /**
     * 下单时系统支付模式(1=先付,2=后付)
     */
    @ApiModelProperty("下单时系统支付模式(1=先付,2=后付)")
    private Integer paymentMode;
    public Double getEstimateAmount() {
        return estimateAmount;
    }
    public void setEstimateAmount(Double estimateAmount) {
        this.estimateAmount = estimateAmount;
    }
    public Integer getPaymentMode() {
        return paymentMode;
    }
    public void setPaymentMode(Integer paymentMode) {
        this.paymentMode = paymentMode;
    }
    public Integer getId() {
        return id;
    }
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java
@@ -1,8 +1,8 @@
package com.stylefeng.guns.modular.system.warpper;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotations.TableField;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -11,6 +11,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ApiModel("订单详情")
public class OrderInfoWarpper {
@@ -192,6 +193,35 @@
    @ApiModelProperty("是否包车 1是2否")
    private Integer zwNum;
    /**
     * 下单时系统支付模式(1=先付,2=后付)
     */
    @TableField("paymentMode")
    private Integer paymentMode;
    /**
     * 预估金额(先付模式下单时计算并存储)
     */
    @TableField("estimateAmount")
    private Double estimateAmount;
    public Double getEstimateAmount() {
        return estimateAmount;
    }
    public void setEstimateAmount(Double estimateAmount) {
        this.estimateAmount = estimateAmount;
    }
    public Integer getPaymentMode() {
        return paymentMode;
    }
    public void setPaymentMode(Integer paymentMode) {
        this.paymentMode = paymentMode;
    }
    public Integer getZwNum() {
        return zwNum;
@@ -1011,6 +1041,13 @@
    public static OrderInfoWarpper getOrderInfoWarpper(Map<String, Object> map, List<OrderAdditionalFeeWarpper> list){
        OrderInfoWarpper orderInfoWarpper = new OrderInfoWarpper();
        if(null != map){
            Object serverCarModel = map.get("serverCarModel");
            if (Objects.nonNull(serverCarModel)) {
                JSONArray jsonArray = JSONArray.parseArray(serverCarModel.toString());
                if (jsonArray.size() == 1) {
                    map.put("rideType", jsonArray.getJSONObject(0).getIntValue("rideType"));
                }
            }
            orderInfoWarpper.setOrderId(null != map.get("orderId") ? Integer.valueOf(String.valueOf(map.get("orderId"))) : 0);
            orderInfoWarpper.setPid(null != map.get("pid") ? Integer.valueOf(String.valueOf(map.get("pid"))) : 0);
            orderInfoWarpper.setSpellSuccess(null != map.get("spellSuccess") ? Integer.valueOf(String.valueOf(map.get("spellSuccess"))) : 1);
@@ -1087,6 +1124,8 @@
            orderInfoWarpper.setResponsibilityType(null != map.get("responsibilityType") ? map.get("responsibilityType").toString() : null);
            orderInfoWarpper.setCompanyName(null != map.get("companyName") ? map.get("companyName").toString() : null);
            orderInfoWarpper.setZwNum(null != map.get("zwNum") ? Integer.valueOf(map.get("zwNum").toString()) : null);
            orderInfoWarpper.setPaymentMode(null != map.get("paymentMode") ? Integer.valueOf(map.get("paymentMode").toString()) : null);
            orderInfoWarpper.setPaymentMode(null != map.get("paymentMode") ? Integer.valueOf(map.get("paymentMode").toString()) : null);
            orderInfoWarpper.setOrderAdditionalFeeWarpper(list);
        }
        return orderInfoWarpper;
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml
@@ -269,7 +269,9 @@
        a.abnormalIntro,
        a.abnormalImg,
        a.companyId,
        0 as appealButton
        0 as appealButton,
        a.paymentMode,
        a.estimateAmount
        from t_order_taxi a
        left join t_driver b on (a.driverId = b.id)
        left join t_car c on (a.carId = c.id)
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -19,9 +19,9 @@
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.model.vo.UnPayOrderVO;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.service.impl.ServerCarModelServiceImpl;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.system.service.impl.ServerCarModelServiceImpl;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.model.PaymentRecord;
@@ -48,8 +48,6 @@
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -210,6 +208,7 @@
     */
    @Override
    public synchronized ResultUtil<BaseWarpper> taxiOrder(OrderTaxi orderTaxi, Integer uid) throws Exception {
        BaseWarpper baseWarpper = new BaseWarpper();
        //定义用户所属公司
        UserInfo userInfo1 = userInfoService.selectById(uid);
        if (null == userInfo1 || userInfo1.getFlag() == 3) {
@@ -314,6 +313,7 @@
        orderTaxi.setState(1);//待接单
        if (orderTaxi.getOrderSource() != 2) {
            TSysPaymentMode paymentMode = tSysPaymentModeService.selectOne(new EntityWrapper<TSysPaymentMode>().last("LIMIT 1"));
            baseWarpper.setPaymentMode(paymentMode.getTaxiType());
            if (paymentMode != null && Integer.valueOf(1).equals(paymentMode.getTaxiType())) {
                try {
                    Map<String, String> startGeocode = gdMapGeocodingUtil.geocode(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));
@@ -333,6 +333,7 @@
                                orderTaxi.setOrderMoney(estimateAmount);
                                orderTaxi.setPaymentMode(1);
                                orderTaxi.setState(7);
                                baseWarpper.setEstimateAmount(estimateAmount);
                            } else {
                                orderTaxi.setPaymentMode(2);
                            }
@@ -411,12 +412,12 @@
                }
            }
        }).start();
        if (orderTaxi.getState() == 1) {
            //推送司机抢单
            this.pushOrder(orderTaxi, 1);
        }
        //TODO 小程序调试临时关闭
        // if (orderTaxi.getState() == 1) {
        //     //推送司机抢单
        //     this.pushOrder(orderTaxi, 1);
        // }
        //添加消息
        if (orderTaxi.getState() == 7) {
            systemNoticeService.addSystemNotice(1, "您的出租车订单已生成,请先完成支付。", orderTaxi.getUserId(), 1);
@@ -424,7 +425,6 @@
            systemNoticeService.addSystemNotice(1, "您的出租车订单已下单成功,我们正在为您指派司机,请稍后!", orderTaxi.getUserId(), 1);
        }
        
        BaseWarpper baseWarpper = new BaseWarpper();
        baseWarpper.setId(orderTaxi.getId());
        return ResultUtil.success(baseWarpper);
    }
@@ -1365,10 +1365,11 @@
                query.setEndTime(new Date());
                userRedPacketRecordService.updateById(query);
            }
            //添加收入
            Map<String, Object> map = incomeService.saveIncome(orderTaxi.getId(), 2, orderTaxi.getOrderMoney());
            orderTaxi.setSplitAllocation(JSON.toJSONString(map));
            if (Integer.valueOf(2).equals(orderTaxi.getPaymentMode())) {
                //添加收入
                Map<String, Object> map = incomeService.saveIncome(orderTaxi.getId(), 2, orderTaxi.getOrderMoney());
                orderTaxi.setSplitAllocation(JSON.toJSONString(map));
            }
            // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
            new Thread(new Runnable() {
                @Override
@@ -1626,7 +1627,7 @@
                userRedPacketRecordService.updateById(query);
            }
            //非追缴单才添加收入记录
            if(0 == orderTaxi.getRecoveryOrder()){
            if(0 == orderTaxi.getRecoveryOrder() && Integer.valueOf(2).equals(orderTaxi.getPaymentMode())){
                //添加收入
                Double orderMoney1 = (2 == orderTaxi.getAbnormal() && 2 == orderTaxi.getAbnormalStatus() ? orderTaxi.getResponsibilityMoney().doubleValue() : orderTaxi.getOrderMoney());
                Map<String, Object> map = incomeService.saveIncome(orderTaxi.getId(), 2, orderTaxi.getOrderMoney());
@@ -2097,7 +2098,7 @@
            paymentRecordService.updateById(query);
            
            //非追缴单才添加收入记录
            if(0 == orderTaxi.getRecoveryOrder()){
            if(0 == orderTaxi.getRecoveryOrder() && Integer.valueOf(2).equals(orderTaxi.getPaymentMode())){
                //添加收入
                Double orderMoney1 = (2 == orderTaxi.getAbnormal() && 2 == orderTaxi.getAbnormalStatus() ? orderTaxi.getResponsibilityMoney().doubleValue() : orderTaxi.getOrderMoney());
                Map<String, Object> map = incomeService.saveIncome(orderTaxi.getId(), 2, orderMoney1);
UserYKDTravel/guns-admin/src/main/resources/application-dev.yml
@@ -57,7 +57,7 @@
spring:
  datasource:
    url: jdbc:mysql://192.168.110.85:3306/qyttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    url: jdbc:mysql://192.168.110.47:3306/hn_ridingdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    db-name: qyttravel #用来搜集数据库的所有表
@@ -79,8 +79,8 @@
  grantType: authorization_code #填authorization_code
  appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得
  appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
  appletsAppid: wxcc3c9058e2b294db #小程序APPid
  appletsAppSecret: 5610fc6126255ca5f7bd9fa4330338b6 #
  appletsAppid: wx436cde5de45e1ed1 #小程序APPid
  appletsAppSecret: e94f587cfb5c325c13d72b1f5ddbb1e6 #
  mchId: 111 #微信支付分配的商户号
  key: 111 #key为商户平台设置的密钥key: