puzhibing
2023-08-08 d3c3b84382677bf0c8b703912c19d02b9aa2381a
修改功能和bug
8个文件已修改
124 ■■■■ 已修改文件
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.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 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java
@@ -257,4 +257,9 @@
     */
    @TableField("merchantIDCode")
    private String merchantIDCode;
    /**
     * 司机推荐二维码
     */
    @TableField("referralCode")
    private String referralCode;
}
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);
    Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) throws Exception;
    /**
     * 获取大厅订单列表
     * @param uid
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -15,6 +15,7 @@
import com.supersavedriving.driver.modular.system.util.*;
import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.huawei.OBSUtil;
import com.supersavedriving.driver.modular.system.util.mongodb.model.Location;
import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil;
import com.supersavedriving.driver.modular.system.util.weChat.WeChatUtil;
@@ -41,6 +42,7 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
@@ -159,6 +161,10 @@
            }
            driver.setCreateTime(new Date());
            this.insert(driver);
            String s = wechatMiniProgramORCode(driver.getId());
            driver.setReferralCode(s);
            this.updateById(driver);
            //司机邀请注册奖励
            if(null != driver.getInviterId()){
@@ -187,6 +193,16 @@
    }
    //生成小程序二维码
    public String wechatMiniProgramORCode(Integer driverId) throws Exception{
        InputStream release = weChatUtil.getwxacodeunlimit("pages/index/index", "driverId=" + driverId, "release");
        String s = OBSUtil.putObjectToBucket(release, "driver_" + driverId + ".jpg");
        return s;
    }
    /**
     * 组装个人信息
     * @param driver
@@ -195,6 +211,7 @@
     */
    public Driver setDriverParamete(Driver driver, DriverRegisterWarpper driverRegisterWarpper) throws Exception{
        driver.setAvatar(driverRegisterWarpper.getAvatar());
        driver.setName(driverRegisterWarpper.getName());
        driver.setPhone(driverRegisterWarpper.getPhone());
        driver.setEmergencyContact(driverRegisterWarpper.getEmergencyContact());
        driver.setEmergencyPhone(driverRegisterWarpper.getEmergencyPhone());
@@ -287,6 +304,11 @@
            }
        }
        if(ToolUtil.isEmpty(driver.getReferralCode())){
            String s = wechatMiniProgramORCode(driver.getId());
            driver.setReferralCode(s);
            this.updateById(driver);
        }
        return ResultUtil.success(tokenWarpper);
    }
@@ -537,13 +559,19 @@
    @Override
    public PromotionWarpper queryPromotionQRCode(Integer uid) throws Exception {
        PromotionWarpper promotionWarpper = new PromotionWarpper();
        promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid);
        Driver driver1 = this.selectById(uid);
        if(ToolUtil.isEmpty(driver1.getReferralCode())){
            String s = wechatMiniProgramORCode(driver1.getId());
            driver1.setReferralCode(s);
            this.updateById(driver1);
        }
//        promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid);
        promotionWarpper.setUrl(driver1.getReferralCode());
        int user = appUserService.selectCount(new EntityWrapper<AppUser>().eq("inviterType", 2).eq("inviterId", uid).eq("status", 1));
        int driver = this.selectCount(new EntityWrapper<Driver>().eq("inviterType", 2).eq("inviterId", uid).eq("approvalStatus", 2).eq("status", 1));
        promotionWarpper.setTotal(user + driver);
        promotionWarpper.setUser(user);
        promotionWarpper.setDriver(driver);
        Driver driver1 = this.selectById(uid);
        promotionWarpper.setAvatar(driver1.getAvatar());
        promotionWarpper.setName(driver1.getName());
        return promotionWarpper;
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java
@@ -48,7 +48,11 @@
    @Override
    public void saveOrderPosition(DriverPositionWarpper driverPositionWarpper) throws Exception {
        Integer orderId = driverPositionWarpper.getOrderId();
        Integer driverId = driverPositionWarpper.getDriverId();
        Order order = orderService.selectById(orderId);
        if(null == order.getDriverId() || order.getDriverId().compareTo(driverId) != 0){
            return;
        }
        if(order.getState() != 105 && order.getState() != 401){
            return;
        }
@@ -136,7 +140,7 @@
            }
        }
        if(50 >= wgs84 && 3 <= (null == num ? 0 : num)){//20秒(5秒上传一次数据)
        if(50 >= wgs84 && 6 <= (null == num ? 0 : num)){//30秒(5秒上传一次数据)
            Integer integer = map.get(order.getId().toString());
            map.put(order.getId().toString(), null == integer ? 0 : integer + 1);
            //进入等待状态
@@ -152,7 +156,7 @@
                e.printStackTrace();
            }
        }
        if(50 >= wgs84 && 3 > (null == num ? 0 : num)){
        if(50 >= wgs84 && 6 > (null == num ? 0 : num)){
            Integer integer = map.get(order.getId().toString());
            map.put(order.getId().toString(), null == integer ? 0 : integer + 1);
        }
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -247,7 +247,7 @@
     * @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) throws Exception{
        order = getOrderInitialPrice(order);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
        if(null == systemConfig){
@@ -360,6 +360,9 @@
            BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4));
            order.setOutWaitTime(w);//等待时长超出分钟
            order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用
        }else{
            order.setWaitTime(waitTime);//等待时长
            order.setWaitTimePrice(num2);//等待费用
        }
        //恶劣天气
@@ -456,12 +459,12 @@
             *        合适司:积分 > 评分 > 距离
             *      3.司机没有接单直接将订单置入大厅
             */
            boolean lock = redisUtil.lock(5);
            boolean lock = redisUtil.lock(orderId.toString(), 5);
            if(!lock){
                int num1 = 1;
                while (num1 <= 10){
                    Thread.sleep(3000);//等待3秒
                    lock = redisUtil.lock(5);
                    lock = redisUtil.lock(orderId.toString(),5);
                    if(lock){
                        break;
                    }else{
@@ -473,11 +476,12 @@
                order.setHallOrder(1);
                this.updateById(order);
                ExtraPushOrder(order);
                redisUtil.unlock();
                redisUtil.unlock(orderId.toString());
                return;
            }
            SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
            if(null == systemConfig){
                redisUtil.unlock();
                redisUtil.unlock(orderId.toString());
                return;
            }
            JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
@@ -640,10 +644,10 @@
                this.updateById(order);
                ExtraPushOrder(order);
            }
            redisUtil.unlock();
            redisUtil.unlock(orderId.toString());
        }catch (Exception e){
            e.printStackTrace();
            redisUtil.unlock();
            redisUtil.unlock(orderId.toString());
        }
    }
@@ -796,12 +800,12 @@
            if(count > 0){
                return ResultUtil.error("还有未完成的订单");
            }
            boolean lock = redisUtil.lock(5);
            boolean lock = redisUtil.lock(orderId.toString(), 5);
            if(!lock){
                int num1 = 1;
                while (num1 <= 10){
                    Thread.sleep(3000);//等待3秒
                    lock = redisUtil.lock(5);
                    lock = redisUtil.lock(orderId.toString(),5);
                    if(lock){
                        break;
                    }else{
@@ -810,17 +814,18 @@
                }
            }
            if(!lock){
                redisUtil.unlock(orderId.toString());
                return ResultUtil.error("请重试");
            }
            Order order = this.selectById(orderId);
            Integer state = order.getState();
            Integer oldDriverId = order.getDriverId();
            if(state == 301){
                redisUtil.unlock();
                redisUtil.unlock(orderId.toString());
                return ResultUtil.error("订单已被取消");
            }
            if(state != 101 && state != 201){
                redisUtil.unlock();
                redisUtil.unlock(orderId.toString());
                return ResultUtil.error("手速慢了哦");
            }
            order.setDriverId(uid);
@@ -829,7 +834,7 @@
            order.setState(102);
            order.setOrderTakingTime(new Date());
            this.updateById(order);
            redisUtil.unlock();
            redisUtil.unlock(orderId.toString());
            if(null != order.getUserId()){
                AppUser appUser = appUserService.selectById(order.getUserId());
@@ -869,9 +874,10 @@
                    orderTransfer.setSuccessTime(new Date());
                    orderTransferService.insert(orderTransfer);
                }
                pushUtil.pushTransferSuccessful(order.getUserId(), 1, order.getId());
                pushUtil.pushTransferSuccessful(oldDriverId, 2, order.getId());
                if(null != order.getUserId()){
                    pushUtil.pushTransferSuccessful(order.getUserId(), 1, order.getId());
                }
            }
            //推动订单数据
@@ -884,7 +890,7 @@
                pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState());
            }
        }catch (Exception e){
            redisUtil.unlock();
            redisUtil.unlock(orderId.toString());
            e.printStackTrace();
            throw e;
        }
@@ -933,6 +939,7 @@
            Map<String, String> distance1 = MapUtil.getDistance(orderInfoWarpper.getStartLng() + "," + orderInfoWarpper.getStartLat(), value, 0);
            orderInfoWarpper.setPickUpTime(Integer.valueOf(distance1.get("duration")) / 60);
        }
        orderInfoWarpper.setDriverId(order.getDriverId());
        return orderInfoWarpper;
    }
@@ -1000,7 +1007,12 @@
                            .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
                    city = null != weatherCity ? weatherCity.getId().toString() : "";
                }
                order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city);
                try {
                    order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city);
                }catch (Exception e){
                    e.printStackTrace();
                    return ResultUtil.error("计算费用异常");
                }
                Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney());
                if(null != coupon){
                    order.setCouponId(coupon.getId());
@@ -1013,10 +1025,6 @@
                    order.setPayMoney(order.getOrderMoney());
                }
                //修改司机状态和积分
                Driver driver = driverService.selectById(order.getDriverId());
                driver.setServerStatus(1);
                driverService.updateById(driver);
                saveIntegral(order);
                redisUtil.delSetValue("orderService", order.getId().toString());
                break;
@@ -1257,6 +1265,9 @@
    @Override
    public ResultUtil driverCancelOrder(Integer uid, Long orderId, String cause) throws Exception {
        Order order = this.selectById(orderId);
        if(null == order){
            return ResultUtil.error("订单数据异常");
        }
        if(uid.compareTo(order.getDriverId()) != 0){
            return ResultUtil.error("无法取消订单");
        }
@@ -1310,11 +1321,13 @@
            orderPriceWarpper.setOverDriveDistance(order.getOverDriveDistance());
            orderPriceWarpper.setMileageFee(order.getOverDrivePrice());
        }else{
            String[] split = order.getLongDistance().split("-");
            orderPriceWarpper.setStartPrice(order.getLongDistancePrice());
            orderPriceWarpper.setStartDistance(Double.valueOf(split[1]));
            orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance());
            orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice());
            if(order.getLongDistance().indexOf("-") >= 0){
                String[] split = order.getLongDistance().split("-");
                orderPriceWarpper.setStartPrice(order.getLongDistancePrice());
                orderPriceWarpper.setStartDistance(Double.valueOf(split[1]));
                orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance());
                orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice());
            }
        }
        Integer waitTime = order.getWaitTime() + order.getOutWaitTime();
        Integer s = waitTime % 60;
@@ -1430,6 +1443,13 @@
            }
            this.updateById(order);
            if((payType == 1 && state == 107) || (payType == 2 && state == 108)){
                //修改司机状态和积分
                Driver driver = driverService.selectById(order.getDriverId());
                driver.setServerStatus(1);
                driverService.updateById(driver);
            }
            if(payType == 2 && state == 108){//计算抽成
                saveRevenue(order);
            }
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java
@@ -188,7 +188,6 @@
                timer.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        System.err.println("定时任务启动");
                        Jedis resource = jedisPool.getResource();
                        resource.setex(finalKey, time, value);
                        resource.close();
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java
@@ -14,8 +14,10 @@
public class DriverRegisterWarpper {
    @ApiModelProperty(value = "注册区域code", required = true, dataType = "string")
    private String code;
    @ApiModelProperty(value = "头像", required = true, dataType = "string")
    @ApiModelProperty(value = "头像", required = false, dataType = "string")
    private String avatar;
    @ApiModelProperty(value = "姓名", required = false, dataType = "string")
    private String name;
    @ApiModelProperty(value = "手机号码", required = true, dataType = "string")
    private String phone;
    @ApiModelProperty(value = "紧急联系人", required = true, dataType = "string")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java
@@ -17,6 +17,8 @@
    private String userName;
    @ApiModelProperty("用户电话")
    private String userPhone;
    @ApiModelProperty("司机id")
    private Integer driverId;
    @ApiModelProperty("用户余额")
    private Double balance;
    @ApiModelProperty("下单次数")