Pu Zhibing
2025-04-25 42490ec10cb18dd38deba7b400935dd91c976065
修改bug
6个文件已修改
180 ■■■■■ 已修改文件
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 131 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/OrderTaxiController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -455,63 +455,7 @@
                orderTaxi.setGetoffAddress(address);
                orderTaxi.setGetoffTime(new Date());
                orderTaxi.setEndServiceTime(new Date());
                if(orderTaxi.getPayManner()==3){
                    orderTaxi.setState(9);
                    Driver driver = driverService.selectById(orderTaxi.getDriverId());
                    Company company = companyService.selectById(driver.getFranchiseeId());
                    if(Objects.isNull(company)){
                        company = companyService.selectById(driver.getCompanyId());
                    }
                    TransactionDetails transactionDetails = new TransactionDetails();
                    driver.setBalance(driver.getBalance() - company.getFixedDeduction());
                    transactionDetails.setMoney(company.getFixedDeduction());
                    // 新增扣除使用费记录
                    transactionDetails.setUserId(driver.getId());
                    transactionDetails.setInsertTime(new Date());
                    transactionDetails.setRemark("软件使用费");
                    transactionDetails.setState(2);
                    transactionDetails.setType(1);
                    transactionDetails.setUserType(2);
                    transactionDetails.setOrderType(6);
                    transactionDetails.setOrderId(orderTaxi.getId());
                    transactionDetailsMapper.insert(transactionDetails);
                    driverService.updateById(driver);
                }
                //打表计费,直接订单完成支付,
                if(orderTaxi.getPayManner()==2){
                    orderTaxi = this.setMoney2(orderTaxi, 0D, 0D);
                    //在线上计费的基础上随机加0.01-1的金额
                    Double orderMoney = orderTaxi.getOrderMoney() + (new BigDecimal(Math.random()).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());
                    orderTaxi.setState(8);
                    orderTaxi.setOrderMoney(orderMoney);
                    orderTaxi.setPayMoney(orderMoney);
                    Driver driver = driverService.selectById(orderTaxi.getDriverId());
                    Company company = companyService.selectById(driver.getFranchiseeId());
                    if(Objects.isNull(company)){
                        company = companyService.selectById(driver.getCompanyId());
                    }
                    TransactionDetails transactionDetails = new TransactionDetails();
                    driver.setBalance(driver.getBalance() - company.getMeterPrintingFee());
                    transactionDetails.setMoney(company.getMeterPrintingFee());
                    // 新增扣除使用费记录
                    transactionDetails.setUserId(driver.getId());
                    transactionDetails.setInsertTime(new Date());
                    transactionDetails.setRemark("软件使用费");
                    transactionDetails.setState(2);
                    transactionDetails.setType(1);
                    transactionDetails.setUserType(2);
                    transactionDetails.setOrderType(6);
                    transactionDetails.setOrderId(orderTaxi.getId());
                    transactionDetailsMapper.insert(transactionDetails);
                    driverService.updateById(driver);
                }
                //线上计费,计算费用后修改为待支付
                if(orderTaxi.getPayManner()==1){
                    orderTaxi = this.setMoney2(orderTaxi, 0D, 0D);
                    orderTaxi.setState(7);
                }
                orderTaxi.setState(6);
                //回滚司机状态为空闲
                Driver driver = driverService.selectById(orderTaxi.getDriverId());
                driver.setState(2);
@@ -550,21 +494,72 @@
    public ResultUtil confirmFees(Integer orderId, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception {
        OrderTaxi orderTaxi = this.selectById(orderId);
        orderTaxi.setPayManner(type);
        if(type == 2){//其他支付,不需要操作,直接完成订单
            orderTaxi = this.setMoney1(orderTaxi, travelFee, parkingFee, crossingFee);
            orderTaxi.setState(7);
        }else if (type == 1){
        if(orderTaxi.getPayManner()==3){
            orderTaxi.setState(9);
            Driver driver = driverService.selectById(orderTaxi.getDriverId());
            Company company = companyService.selectById(driver.getFranchiseeId());
            if(Objects.isNull(company)){
                company = companyService.selectById(driver.getCompanyId());
            }
            TransactionDetails transactionDetails = new TransactionDetails();
            driver.setBalance(driver.getBalance() - company.getFixedDeduction());
            transactionDetails.setMoney(company.getFixedDeduction());
            // 新增扣除使用费记录
            transactionDetails.setUserId(driver.getId());
            transactionDetails.setInsertTime(new Date());
            transactionDetails.setRemark("软件使用费");
            transactionDetails.setState(2);
            transactionDetails.setType(1);
            transactionDetails.setUserType(2);
            transactionDetails.setOrderType(6);
            transactionDetails.setOrderId(orderTaxi.getId());
            transactionDetailsMapper.insert(transactionDetails);
            driverService.updateById(driver);
        }
        //打表计费,直接订单完成支付,
        if(orderTaxi.getPayManner()==2){
            orderTaxi = this.setMoney2(orderTaxi, parkingFee, crossingFee);
            orderTaxi.setState(7);
        }else {
            //在线上计费的基础上随机加0.01-1的金额
            Double orderMoney = orderTaxi.getOrderMoney() + (new BigDecimal(Math.random()).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());
            orderTaxi.setState(8);
            orderTaxi.setOrderMoney(orderMoney);
            orderTaxi.setPayMoney(orderMoney);
            Driver driver = driverService.selectById(orderTaxi.getDriverId());
            Company company = companyService.selectById(driver.getFranchiseeId());
            if(Objects.isNull(company)){
                company = companyService.selectById(driver.getCompanyId());
            }
            TransactionDetails transactionDetails = new TransactionDetails();
            Double meterPrintingFee = company.getMeterPrintingFee();
            Double laveBusinessMoney = driver.getLaveBusinessMoney();
            Double laveActivityMoney = driver.getLaveActivityMoney();
            if(null != laveBusinessMoney && laveBusinessMoney.compareTo(meterPrintingFee) >= 0){
                driver.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(meterPrintingFee)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            }else if(null != laveActivityMoney && laveActivityMoney.compareTo(meterPrintingFee) >= 0){
                driver.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(meterPrintingFee)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            }
            driver.setBalance(driver.getBalance() - meterPrintingFee);
            transactionDetails.setMoney(meterPrintingFee);
            // 新增扣除使用费记录
            transactionDetails.setUserId(driver.getId());
            transactionDetails.setInsertTime(new Date());
            transactionDetails.setRemark("软件使用费");
            transactionDetails.setState(2);
            transactionDetails.setType(1);
            transactionDetails.setUserType(2);
            transactionDetails.setOrderType(6);
            transactionDetails.setOrderId(orderTaxi.getId());
            transactionDetailsMapper.insert(transactionDetails);
            driverService.updateById(driver);
        }
        //线上计费,计算费用后修改为待支付
        if(orderTaxi.getPayManner()==1){
            orderTaxi = this.setMoney2(orderTaxi, crossingFee, crossingFee);
            orderTaxi.setState(7);
        }
        this.updateById(orderTaxi);
        //回滚司机状态为空闲
        Driver driver = driverService.selectById(orderTaxi.getDriverId());
        driver.setState(2);
        driverService.updateById(driver);
        OrderTaxi finalOrderTaxi = orderTaxi;
        new Thread(new Runnable() {
DriverOKTravel/guns-admin/src/main/resources/application.yml
@@ -51,9 +51,9 @@
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/xianning_1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: XianNing@2024!
    password: 123456
#    url: jdbc:mysql://127.0.0.1:3306/jk_fitness?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: root
#    password: root
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -88,6 +88,31 @@
            System.err.println(jsonObject1.getString("msg"));
        }
    }
    public void pushSystemMessage(Integer type, Integer uid, String message){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", 200);
        jsonObject.put("msg", message);
        jsonObject.put("method", "SYSTEM_MESSAGE");
        //调用推送
        HttpHeaders headers = new HttpHeaders();
        // 以表单的方式提交
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        //将请求头部和参数合成一个请求
        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
        params.add("msg", jsonObject.toJSONString());
        params.add("id", String.valueOf(uid));
        params.add("type", String.valueOf(type));
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
        String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class);
        JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
        if(jsonObject1.getIntValue("code") != 200){
            System.err.println(jsonObject1.getString("msg"));
        }
    }
    public void pushOrderStateVedio(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state, Integer time,String url){
        JSONObject jsonObject = new JSONObject();
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/OrderTaxiController.java
@@ -71,7 +71,7 @@
    
    
    @ResponseBody
    @GetMapping("/api/taxi/getForecastPrice")
    @PostMapping("/api/taxi/getForecastPrice")
    @ApiOperation(value = "出租车获取预估费用【1.1】", tags = {"用户端-出租车"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
@@ -84,7 +84,7 @@
    
    
    @ResponseBody
    @GetMapping("/api/taxi/getAllForecastPrice")
    @PostMapping("/api/taxi/getAllForecastPrice")
    @ApiOperation(value = "出租车获取两种计费预估费用【1.1】", tags = {"用户端-出租车"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -353,8 +353,8 @@
            if(null == query){
                return ResultUtil.error("获取企业失败");
            }
            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(warpper.getStartLon() + "," + warpper.getStartLat(),
                    warpper.getEndLon() + "," + warpper.getEndLat(), 1);
            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(warpper.getStartLat() + "," + warpper.getStartLon() ,
                    warpper.getEndLat() + "," + warpper.getEndLon(), 1);
            if(null == distance){
                return ResultUtil.error("计算行驶距离失败");
            }
@@ -923,7 +923,7 @@
            }else{
                appletsOpenId = userInfo.getAppletsOpenId();
            }
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId);
//            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId);
            String app = type == 1 ? "APP" : "JSAPI";
            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
            paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, "", 1);//添加预支付数据
@@ -1039,6 +1039,7 @@
                public void run() {
                    pushUtil.pushOrderState(1, orderTaxi.getUserId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
                    pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
                    pushUtil.pushSystemMessage(2, orderTaxi.getDriverId(), "用户已线上完成支付");
                }
            }).start();
@@ -1055,6 +1056,8 @@
                redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString());
            }
            systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1);
            //添加司机消息提醒
            systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1);
        }
        this.updateAllColumnById(orderTaxi);
@@ -1517,6 +1520,7 @@
                public void run() {
                    pushUtil.pushOrderState(1, orderTaxi.getUserId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
                    pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
                    pushUtil.pushSystemMessage(2, orderTaxi.getDriverId(), "用户已线上完成支付");
                }
            }).start();
@@ -1537,8 +1541,6 @@
            systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderTaxi.getUserId(), 1);
            //添加司机消息提醒
            systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1);
            //推送状态,让司机端播报语音
            pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
        }else{
            System.err.println("预支付数据异常(orderId = "  + id + ")");
        }
UserOKTravel/guns-admin/src/main/resources/application.yml
@@ -61,9 +61,9 @@
#    url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: root
#    password: 123456
    url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/xianning_1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: XianNing@2024!
    password: 123456
    db-name: guns #用来搜集数据库的所有表
    filters: wall,mergeStat