puzhibing
2023-08-25 dceeb9c3063ff9bbeb408dc14e036427fef6045f
新增加司机端接口
5个文件已修改
154 ■■■■■ 已修改文件
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPriceWarpper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java
@@ -302,4 +302,9 @@
     */
    @TableField("routeRecord")
    private String routeRecord;
    /**
     * 节假日价格
     */
    @TableField("holidayPrice")
    private Double holidayPrice;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
@@ -38,7 +38,7 @@
     */
    ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception;
    Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) throws Exception;
    Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city, Integer branchOfficeId) throws Exception;
    /**
     * 获取大厅订单列表
     * @param uid
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -507,6 +507,9 @@
            locations.forEach(s -> {
                int i=0;
                Driver driver = this.baseMapper.selectById(s.getDriverId());
                if(null == driver){
                    return;
                }
                i = driver.getServerStatus();
                if(driver.getServerStatus()==2){
                    List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("driverId", s.getDriverId()).eq("state", 102));
@@ -627,7 +630,15 @@
        Integer num3 = jsonObject.getInteger("num3");//每小时增加积分
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long start = sdf.parse(sdf1.format(new Date()) + " " + num1 + ":00").getTime();
        long end = sdf.parse(sdf1.format(new Date()) + " " + num2 + ":00").getTime();
        Date e = sdf.parse(sdf1.format(new Date()) + " " + num2 + ":00");
        long end = e.getTime();
        if(start > end){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(e);
            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            end = calendar.getTimeInMillis();
        }
        long l = System.currentTimeMillis();
        if(start <= l && end > l){
            Driver driver = this.selectById(driverId);
@@ -638,24 +649,25 @@
            }
            String today = sdf1.format(new Date());
            String[] s = value.split("_");
            if(!today.equals(s[1])){
                //修改在线时长记录
                DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).eq("DATE_FORMAT(`day`, '%Y-%m-%d')", s[1]));
            DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).last(" and DATE_FORMAT(`day`, '%Y-%m-%d') = DATE_FORMAT(now(), '%Y-%m-%d')"));
                if(null != driverOnlineTime){
                driverOnlineTime.setOnlineTime(driverOnlineTime.getOnlineTime().add(new BigInteger("5")));
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.updateById(driverOnlineTime);
                }else{
                    driverOnlineTime = new DriverOnlineTime();
                    driverOnlineTime.setDriverId(driverId);
                    driverOnlineTime.setDay(sdf1.parse(s[1]));
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                driverOnlineTime.setDay(new Date());
                driverOnlineTime.setOnlineTime(new BigInteger("0"));
                    driverOnlineTimeService.insert(driverOnlineTime);
                }
                driver.setOnlineTime(new BigInteger(s[0]));
                this.updateById(driver);
                redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
                return;
            }
            driver.setOnlineTime(driver.getOnlineTime().add(new BigInteger("5")));
            this.updateById(driver);
            Integer second = Integer.valueOf(s[0]) + 5;
            Integer time = Integer.valueOf(s[2]);
@@ -674,19 +686,6 @@
                driver.setOnlineTime(new BigInteger(s[0]));
                this.updateById(driver);
                time++;
                //修改在线时长记录
                DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).eq("DATE_FORMAT(`day`, '%Y-%m-%d')", s[1]));
                if(null != driverOnlineTime){
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.updateById(driverOnlineTime);
                }else{
                    driverOnlineTime = new DriverOnlineTime();
                    driverOnlineTime.setDriverId(driverId);
                    driverOnlineTime.setDay(sdf1.parse(s[1]));
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.insert(driverOnlineTime);
                }
            }
            redisUtil.setStrValue("ONLINE" + driverId, second + "_" + s[1] + "_" + time);
        }
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -117,6 +117,9 @@
    @Autowired
    private ICompanyFundFlowService companyFundFlowService;
    @Autowired
    private IBranchOfficeService branchOfficeService;
    @Value("${callbackPath}")
    private String callbackPath;//支付回调网关地址
@@ -163,16 +166,15 @@
        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 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(driver.getServerStatus().equals(1)){
            order.setDriverId(driver.getId());
            order.setState(104);
        }else if(driverWork != null && null == order1){
        if(null != driverWork && driver.getServerStatus().equals(1)){
            order.setState(102);
            order.setDriverId(uid);
            driver.setServerStatus(2);
            order.setOrderTakingTime(new Date());
            driver.setServerStatus(2);
        }
        order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5));
        order.setSource(2);
@@ -180,7 +182,6 @@
        if(null != appUser){
            order.setUserId(appUser.getId());
        }
        String startAddress = addOrderWarpper.getStartAddress();
        startAddress = startAddress.replaceAll("& #40;", "(");
@@ -214,14 +215,26 @@
            order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60);
        }
        String city = "";
        District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat());
        Integer branchOfficeId = null;
        District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
        if(null != geocode){
            WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                    .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
            city = null != weatherCity ? weatherCity.getId().toString() : "";
            String districtCode = geocode.getDistrictCode();
            BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode));
            if(null == branchOffice){
                String cityCode = geocode.getCityCode();
                branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode));
                if(null == branchOffice){
                    String provinceCode = geocode.getProvinceCode();
                    branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode));
                }
            }
            if(null == branchOffice){
                return ResultUtil.error("起点暂无企业服务");
            }
            branchOfficeId = branchOffice.getId();
        }
        order.setCreateTime(new Date());
        order = getOrderPrice(1, d, 0, order, city);
        order = getOrderPrice(1, d, 0, order, city, branchOfficeId);
        if(!driver.getServerStatus().equals(1)) {
            order.setState(null == order.getDriverId() ? 101 : 102);
        }
@@ -258,9 +271,9 @@
     * @param city          查询天气的城市
     * @return
     */
    public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) {
    public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city, Integer branchOfficeId) {
        order = getOrderInitialPrice(order);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5).eq("companyId", branchOfficeId));
        if (null == systemConfig) {
            if (type == 1) {//预估金额
                order.setEstimatedPrice(0D);
@@ -361,6 +374,7 @@
        Double num7 = extraCost.getDouble("num7");//恶劣天气超出公里
        Double num8 = extraCost.getDouble("num8");//恶劣天气超出公里单价 X/公里
        Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额
        Double num10 = extraCost.getDouble("num10");//节假日
        //等待费用
        if (waitTime.compareTo(num1 * 60) >= 0) {
@@ -377,13 +391,11 @@
        }
        //恶劣天气
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8));
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8).eq("companyId", branchOfficeId));
        if (null != systemConfig) {
            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) {
@@ -404,8 +416,10 @@
                        }
                    }
                }
            Integer num33 = jsonObject1.getInteger("num3");//节假日
            if (1 == num33) {
                order.setHolidayPrice(num10);
            }
            //计算折扣
            if (null != order.getUserId()) {
@@ -414,7 +428,7 @@
            //计算总金额
            BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() +
                    order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                    order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() + order.getHolidayPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            if (type == 1) {//预估价
                order.setEstimatedPrice(bigDecimal.doubleValue());
@@ -1018,14 +1032,26 @@
                }
                //开始计算费用
                String city = "";
                Integer branchOfficeId = null;
                District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
                if(null != geocode){
                    WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                            .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
                    city = null != weatherCity ? weatherCity.getId().toString() : "";
                    String districtCode = geocode.getDistrictCode();
                    BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode));
                    if(null == branchOffice){
                        String cityCode = geocode.getCityCode();
                        branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode));
                        if(null == branchOffice){
                            String provinceCode = geocode.getProvinceCode();
                            branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode));
                        }
                    }
                    if(null == branchOffice){
                        return ResultUtil.error("起点暂无企业服务");
                    }
                    branchOfficeId = branchOffice.getId();
                }
                try {
                    order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city);
                    order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city, branchOfficeId);
                }catch (Exception e){
                    e.printStackTrace();
                    return ResultUtil.error("计算费用异常");
@@ -1126,6 +1152,9 @@
    @Override
    public void pushOrderInfo(Long orderId){
        Order order = this.selectById(orderId);
        if(null == order){
            return;
        }
        Integer driverId = order.getDriverId();
        String value = redisUtil.getValue("DRIVER" + driverId);
        if(order.getState() == 106 || order.getState() == 301){
@@ -1197,18 +1226,16 @@
                order.setDriverId(driver.getId());
                orderTransfer.setNewDriverId(driver.getId());
            }
            order.setState(104);
//            order.setState(104);
            driver.setServerStatus(2);
            driverService.updateById(driver);
            Driver driver1 = driverService.selectById(oldId);
            driver1.setServerStatus(1);
            driverService.updateById(driver1);
        }else {
            order.setOldState(order.getState());
            order.setState(201);
        }
        order.setOldState(order.getState());
        this.updateById(order);
@@ -1267,13 +1294,25 @@
        order.setEstimatedMileage(d);
        order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60);
        String city = "";
        District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat());
        Integer branchOfficeId = null;
        District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
        if(null != geocode){
            WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                    .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
            city = null != weatherCity ? weatherCity.getId().toString() : "";
            String districtCode = geocode.getDistrictCode();
            BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode));
            if(null == branchOffice){
                String cityCode = geocode.getCityCode();
                branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode));
                if(null == branchOffice){
                    String provinceCode = geocode.getProvinceCode();
                    branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode));
        }
        order = getOrderPrice(1, d, 0, order, city);
            }
            if(null == branchOffice){
                return ResultUtil.error("起点暂无企业服务");
            }
            branchOfficeId = branchOffice.getId();
        }
        order = getOrderPrice(1, d, 0, order, city, branchOfficeId);
        this.updateById(order);
        return ResultUtil.success();
    }
@@ -1396,6 +1435,7 @@
        }
        orderPriceWarpper.setWxCollectionCode(driver.getWxCollectionCode());
        orderPriceWarpper.setZfbCollectionCode(driver.getZfbCollectionCode());
        orderPriceWarpper.setHolidayPrice(order.getHolidayPrice());
        return orderPriceWarpper;
    }
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPriceWarpper.java
@@ -36,6 +36,8 @@
    private Double discountedPrice;
    @ApiModelProperty("恶劣天气费")
    private Double badWeatherPrice;
    @ApiModelProperty("节假日费")
    private Double holidayPrice;
    @ApiModelProperty("支付金额")
    private Double payMoney;
    @ApiModelProperty("微信收款码")