longz
2026-05-11 631311fdd5a2c33cf6833af0938e57853aa5f7a6
fix bugs
6个文件已修改
139 ■■■■■ 已修改文件
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysPaymentModeController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSysPaymentModeServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysPaymentMode.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysPaymentModeController.java
@@ -30,7 +30,7 @@
    public Object setUp(Integer privateType, Integer taxiType) {
        TSysPaymentMode paymentMode = sysPaymentModeService.getPaymentMode();
        paymentMode.setPrivateType(privateType);
        paymentMode.setTaxiType(taxiType);
        paymentMode.setTaxiType(2);
        sysPaymentModeService.updatePaymentMode(paymentMode);
        return SUCCESS_TIP;
    }
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSysPaymentModeServiceImpl.java
@@ -16,8 +16,11 @@
        if (paymentMode == null) {
            paymentMode = new TSysPaymentMode();
            paymentMode.setPrivateType(1);
            paymentMode.setTaxiType(1);
            paymentMode.setTaxiType(2);
            insert(paymentMode);
        } else if (paymentMode.getTaxiType() == null || paymentMode.getTaxiType() != 2) {
            paymentMode.setTaxiType(2);
            updateById(paymentMode);
        }
        return paymentMode;
    }
ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysPaymentMode.html
@@ -66,19 +66,12 @@
                                    <label class="col-sm-2 control-label">出租车:</label>
                                    <div class="col-sm-10">
                                        <div class="radio radio-danger">
                                            <input type="radio" name="taxiType" id="taxiType1" value="1"
                                                   ${isNotEmpty(paymentMode) && 1 == paymentMode.taxiType  ? 'checked=checked' : 'checked=checked'}>
                                            <label for="taxiType1">
                                                预付模式
                                            </label>
                                        </div>
                                        <div class="radio radio-danger">
                                            <input type="radio" name="taxiType" id="taxiType2" value="2"
                                                   ${isNotEmpty(paymentMode) && 2 == paymentMode.taxiType  ? 'checked=checked' : ''}>
                                            <input type="radio" name="taxiType" id="taxiType2" value="2" checked="checked" disabled="disabled">
                                            <label for="taxiType2">
                                                后付模式
                                            </label>
                                        </div>
                                        <input type="hidden" name="taxiTypeLocked" id="taxiTypeLocked" value="2"/>
                                    </div>
                                </div>
                                <div class="row btn-group-m-t">
@@ -97,7 +90,7 @@
<script>
    function setUp() {
        var privateType = $ ("input[name='privateType']:checked").val();
        var taxiType = $ ("input[name='taxiType']:checked").val();
        var taxiType = $("#taxiTypeLocked").val();
        var ajax = new $ax(Feng.ctxPath + "/tSysPaymentMode/setUp", function(data){
            Feng.success("操作成功!");
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -1135,25 +1135,8 @@
        if (orderPrivateCar.getState() >= 5 && orderPrivateCar.getState() != 11 && orderPrivateCar.getCancelType() ==2) {
            return ResultUtil.error("订单已取消,请刷新页面");
        }
        if (!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isNotEmpty(orderPrivateCar.getPrepaySecondPayNo())) {
            ResultUtil refundResult = handlePrivateCarPrepayCancelRefund(orderPrivateCar, reason, remark, uid);
            if (refundResult != null) {
                if (!ResultUtil.SUCCESS.equals(refundResult.getCode())) {
                    return refundResult;
                }
                Map<String, Object> map = new HashMap<>();
                map.put("id", null);
//                return ResultUtil.success(map);
            }
        }else if(!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isEmpty(orderPrivateCar.getPrepaySecondPayNo())){
            if (orderPrivateCar.getPayMoney() != null){
                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                userInfo.setBalance(userInfo.getBalance() + orderPrivateCar.getPayMoney());
                userInfoService.updateById(userInfo);
            }
        if (!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode())) {
            handlePrivateCarPrepayCancelRefund(orderPrivateCar,reason);
        }
        Integer number1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
        Integer number2 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
@@ -2895,6 +2878,55 @@
        return orderPrivateCar != null && Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode());
    }
    private void handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason) throws Exception {
        if (!isPrivateCarPrepayMode(orderPrivateCar)) {
            return;
        }
        if (Integer.valueOf(3).equals(orderPrivateCar.getPayType())) {
            Double refundAmount = orderPrivateCar.getPayMoney();
            if (refundAmount == null || refundAmount <= 0) {
                throw new RuntimeException("余额先付订单退款金额异常");
            }
            UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
            if (userInfo == null) {
                throw new RuntimeException("用户信息不存在,无法退款");
            }
            userInfo.setBalance(new BigDecimal(null != userInfo.getBalance() ? userInfo.getBalance() : 0)
                    .add(new BigDecimal(refundAmount)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            userInfoService.updateById(userInfo);
            restorePrivateCarBenefits(orderPrivateCar);
            transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId());
            orderPrivateCar.setState(10);
            orderPrivateCar.setPrepayStage(5);
            orderPrivateCar.setPrepayRefundNo("BALANCE_REFUND_1_" + orderPrivateCar.getId() + "_" + ToolUtil.getRandomString(5));
            orderPrivateCar.setPrepayRefundAmount(refundAmount);
            orderPrivateCar.setPrepayRefundTime(new Date());
            this.updateById(orderPrivateCar);
            systemNoticeService.addSystemNotice(1, "您的快车余额先付订单已取消,退款已退回账户余额,请注意查收。", orderPrivateCar.getUserId(), 1);
        } else {
            String outRequestNo = orderPrivateCar.getPrepaySecondPayNo();
            if (ToolUtil.isEmpty(outRequestNo)) {
                throw new RuntimeException("微信先付订单缺少支付单号,无法关闭支付单");
            }
            Double refundAmount = orderPrivateCar.getPayMoney();
            if (refundAmount == null || refundAmount <= 0) {
                throw new RuntimeException("微信先付订单退款金额异常");
            }
            CbyzxPayUtil.ClosePayOrderRequest request = new CbyzxPayUtil.ClosePayOrderRequest();
            request.setOutRequestNo(outRequestNo);
            request.setRefundOutRequestNo(buildPrepayRefundOutNo(orderPrivateCar.getId()));
            request.setRefundAmount(toFen(refundAmount));
            request.setRefundDesc(ToolUtil.isNotEmpty(reason) ? reason : "快车订单取消退款");
            JSONObject response = CbyzxPayUtil.closePayOrder(request);
            if (!isPrivateCarPrepayRefundSuccess(response)) {
                throw new RuntimeException(extractPrivateCarRefundMessage(response));
            }
            restorePrivateCarBenefits(orderPrivateCar);
            transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId());
            systemNoticeService.addSystemNotice(1, "您的快车微信先付订单已取消,退款已原路退回,请注意查收。", orderPrivateCar.getUserId(), 1);
        }
    }
    private ResultUtil handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason, String remark, Integer uid) throws Exception {
        System.out.println("快车退款!!!!");
        if (!isPrivateCarPrepayMode(orderPrivateCar)) {
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java
@@ -1141,6 +1141,7 @@
            orderInfoWarpper.setPaymentMode(null != map.get("paymentMode") ? Integer.valueOf(map.get("paymentMode").toString()) : null);
            orderInfoWarpper.setOrderAdditionalFeeWarpper(list);
            orderInfoWarpper.setCancelType(null != map.get("cancelType") ? Integer.valueOf(map.get("cancelType").toString()) : 1);
            orderInfoWarpper.setOrderMoney(null != map.get("estimateAmount") ? Double.valueOf(String.valueOf(map.get("estimateAmount"))) : 0);
        }
        return orderInfoWarpper;
    }
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -1854,8 +1854,8 @@
    @Override
    public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception {
        Map<String, Object> map = orderTaxiMapper.queryOrderInfo(orderId);
        OrderTaxi orderTaxi = this.selectById(orderId);
        if (null != map && null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2) {//如果订单有改派提醒,则查询后重置为未提醒
            OrderTaxi orderTaxi = this.selectById(orderId);
            orderTaxi.setReassignNotice(0);
            this.updateById(orderTaxi);
        }
@@ -1867,9 +1867,53 @@
        String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId"));
        map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1);
        map.put("orderType", 2);
        fillTaxiPrepayDisplayMoney(this.selectById(orderId), map);
        if (Objects.equals(orderTaxi.getPaymentMode(), 1)) {
            System.out.println("预付价格871");
            fillTaxiPrepayDisplayMoney(orderTaxi, map);
        } else {
            System.out.println("计算价格874");
            taxiPreAmountCalculate(orderTaxi, map);
        }
        return map;
    }
    private void taxiPreAmountCalculate(OrderTaxi orderTaxi, Map<String, Object> map) {
        try {
            Map<String, String> startGeocode = gdMapGeocodingUtil.geocode(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));
            Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));
            if (orderTaxi.getEndLon() != null && orderTaxi.getEndLat() != null && startGeocode != null) {
                Map<String, String> distance = gdMapElectricFenceUtil.getDistance(
                        orderTaxi.getStartLon() + "," + orderTaxi.getStartLat(),
                        orderTaxi.getEndLon() + "," + orderTaxi.getEndLat(),
                        1
                );
                System.out.println("距离获取890");
                if (distance != null) {
                    double distanceMeters = Double.parseDouble(distance.get("distance"));
                    long durationSeconds = Long.parseLong(distance.get("duration"));
                    ServerCarModelWarpper textPrice = serverCarModelService.getTextPrice(query.getId(), distanceMeters, durationSeconds, 0, 2, startGeocode);
                    System.out.println("费用计算895");
                    if (textPrice != null && textPrice.getAmount() != null && textPrice.getAmount().get("zongfeiyong") != null) {
                        Double estimateAmount = Double.valueOf(textPrice.getAmount().get("zongfeiyong").toString());
                        map.put("orderMoney", estimateAmount);
                        map.put("estimateAmount", estimateAmount);
                    } else {
                        map.put("orderMoney", 0);
                        map.put("estimateAmount", 0);
                    }
                } else {
                    map.put("orderMoney", 0);
                    map.put("estimateAmount", 0);
                }
            } else {
                map.put("orderMoney", 0);
                map.put("estimateAmount", 0);
            }
        } catch (Exception ignore) {
            map.put("orderMoney", 0);
            map.put("estimateAmount", 0);
        }
    }
    
    
    /**