puzhibing
2023-06-24 36695821ea10197d7758babc7bc2b5dfb66dd88e
修改bug
7个文件已修改
110 ■■■■■ 已修改文件
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | 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/OrderServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml
@@ -111,7 +111,7 @@
        a.estimatedMileage,
        a.estimatedTime,
        a.startPrice,
        a.waitTime,
        a.waitTime + a.outWaitTime as waitTime,
        a.actualMileage,
        a.state,
        (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(a.startTime)) / 60 as travelTime
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);
    /**
     * 获取大厅订单列表
     * @param uid
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -228,8 +228,6 @@
     * @return
     */
    public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){
        distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue();
        waitTime = new BigDecimal(waitTime).setScale(0, BigDecimal.ROUND_UP).intValue();
        order = getOrderInitialPrice(order);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
        if(null == systemConfig){
@@ -289,12 +287,14 @@
                    order.setStartDistance(distance);//起步里程
                    order.setStartPrice(num4);//起步价
                }else{
                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程
                    BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN);
                    BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                    Double distance1 = distance;//原始里程
                    order.setStartDistance(num3);//起步里程
                    order.setStartPrice(num4);//起步价
                    order.setOverDriveDistance(subtract.doubleValue());//超出起步里程
                    order.setOverDriveDistance(new BigDecimal(distance1 - num3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出起步里程
                    distance = new BigDecimal(distance).setScale(0, RoundingMode.UP).doubleValue();//向上取整
                    BigDecimal divide = new BigDecimal(distance - num3).divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN);
                    BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                    order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费
                    //计算长途费(超出长途起始公里,费用开始按照长途规则计算。)
@@ -309,10 +309,10 @@
                    }
                    //计算长途里程超出的部分
                    if(distance.compareTo(num8) > 0){
                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN);
                        order.setOverLongDistance(new BigDecimal(distance1 - num8).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出长途里程
                        BigDecimal divide1 = new BigDecimal(distance - num8).divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN);
                        BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11));
                        order.setOverLongDistance(subtract1.doubleValue());//超出长途里程
                        order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费
                    }
                }
@@ -333,10 +333,10 @@
        //等待费用
        if(waitTime.compareTo(num1 * 60) >= 0){
            order.setWaitTime(num1);//等待时长
            order.setWaitTime(num1 * 60);//等待时长
            order.setWaitTimePrice(num2);//等待费用
            Integer w = waitTime - (num3 * 60);
            Integer w = waitTime - (num1 * 60);
            BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4));
            order.setOutWaitTime(w);//等待时长超出分钟
            order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用
@@ -858,6 +858,9 @@
    }
    /**
     * 获取订单详情
     * @param orderId
@@ -876,7 +879,7 @@
        int m = Double.valueOf(wait / 60).intValue();
        orderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s));
        Double actualMileage = orderInfoWarpper.getActualMileage();
        orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage).divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN).doubleValue());
        orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
        if(orderInfoWarpper.getTravelTime() == null){
            orderInfoWarpper.setTravelTime(0);
@@ -956,7 +959,7 @@
                            .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);
                order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city);
                //修改司机状态和积分
                Driver driver = driverService.selectById(order.getDriverId());
driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
@@ -6,6 +6,7 @@
//import com.supersavedriving.driver.modular.system.model.Order;
//import com.supersavedriving.driver.modular.system.model.WeatherCity;
//import com.supersavedriving.driver.modular.system.service.*;
//import com.supersavedriving.driver.modular.system.service.impl.OrderServiceImpl;
//import com.supersavedriving.driver.modular.system.util.ResultUtil;
//import com.supersavedriving.driver.modular.system.util.juhe.WeatherCityInfo;
//import com.supersavedriving.driver.modular.system.util.juhe.WeatherUtil;
@@ -38,29 +39,7 @@
//
//    @Test
//    public void test() throws Exception {
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        Date date = sdf.parse("2023-06-15 01:00:00");
//        Integer hour1 = 22;
//        Integer hour2 = 6;
//
//        Calendar s = Calendar.getInstance();
//        s.setTime(date);
//        s.set(Calendar.HOUR_OF_DAY, hour1);
//        s.set(Calendar.SECOND, 0);
//
//        Calendar e = Calendar.getInstance();
//        e.setTime(date);
//        e.set(Calendar.HOUR_OF_DAY, hour2);
//        e.set(Calendar.SECOND, 0);
//
//        if(hour1 > hour2){
//            if(s.getTimeInMillis() > date.getTime()){
//                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1);
//            }else{
//                e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1);
//            }
//        }
//        System.err.println(sdf.format(s.getTime()));
//        System.err.println(sdf.format(e.getTime()));
//        Order order = orderService.selectById(1066);
//        orderService.getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, null);
//    }
//}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
@@ -75,9 +75,7 @@
                                <input class="control-label" id="num12" name="num12" value="${ExtraCost.num1}" type="number"  min="0" style="height: 30px;width: 80px">
                                <span class="control-label" >分钟,收取</span>
                                <input class="control-label" id="num13" name="num13" value="${ExtraCost.num2}" type="number" min="0" style="height: 30px;width: 80px">
                                <span class="control-label" >元,超出</span>
                                <input class="control-label" id="num14" name="num14" value="${ExtraCost.num3}" type="number" min="0" style="height: 30px;width: 80px">
                                <span class="control-label" >分钟,收取</span>
                                <span class="control-label" >元,超出收取</span>
                                <input class="control-label" id="num15" name="num15" value="${ExtraCost.num4}" type="number"  min="0" style="height: 30px;width: 80px">
                                <span class="control-label" >元/分钟</span>
                            </div>
zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java
@@ -45,7 +45,7 @@
     * @param msg
     * @author TaoNingBo
     */
    public void JudgeOperation(ChannelHandlerContext ctx, String msg) {
    public synchronized void JudgeOperation(ChannelHandlerContext ctx, String msg) {
        try {
            // 验证即时通讯命令是否正确有效
            if (SinataUtil.isEmpty(msg)) {
zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java
@@ -57,7 +57,7 @@
     * @param msg
     * @author TaoNingBo
     */
    public void JudgeOperation(ChannelHandlerContext ctx, Object msg) {
    public synchronized void JudgeOperation(ChannelHandlerContext ctx, Object msg) {
        try {
            // ByteBuf转String
            ByteBuf byteBuf = (ByteBuf) msg;
@@ -112,12 +112,12 @@
                                if(b){
                                    NettyChannelMap.remove_(data_);
                                }
//                                new Timer().schedule(new TimerTask() {
//                                    @Override
//                                    public void run() {
//                                        NettyChannelMap.remove_(data_);
//                                    }
//                                }, 5000);
                                new Timer().schedule(new TimerTask() {
                                    @Override
                                    public void run() {
                                        NettyChannelMap.remove_(data_);
                                    }
                                }, 5000);
                            }
                            NettyChannelMap.update_(token.substring(token.length() - 16), ctx);
                            NettyChannelMap.update("USER" + userId1, ctx);
@@ -131,21 +131,21 @@
                    }else{
                        //确保账号在单个设备上登录
                        if(StringUtil.isNotEmpty(token)){//APP端登录的操作
//                            String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据
//                            if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据
//                                ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(token_.length() - 16));
//                                if(null != data_){
//                                    JSONObject msg_ = new JSONObject();
//                                    msg_.put("code", 200);
//                                    msg_.put("msg", "SUCCESS");
//                                    msg_.put("method", "OFFLINE");
//                                    msg_.put("data", new Object());
//                                    boolean b = this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息
//                                    if(b){
//                                        NettyChannelMap.remove_(data_);
//                                    }
//                                }
//                            }
                            String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据
                            if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据
                                ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(token_.length() - 16));
                                if(null != data_){
                                    JSONObject msg_ = new JSONObject();
                                    msg_.put("code", 200);
                                    msg_.put("msg", "SUCCESS");
                                    msg_.put("method", "OFFLINE");
                                    msg_.put("data", new Object());
                                    boolean b = this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息
                                    if(b){
                                        NettyChannelMap.remove_(data_);
                                    }
                                }
                            }
                            NettyChannelMap.update("DRIVER" + userId1, ctx);
                            NettyChannelMap.update_(token.substring(token.length() - 16), ctx);
                            redisUtil.setStrValue("DRIVER_" + userId1, token);