liujie
2026-04-20 af1bdf94021985a93f7e95854915653b6a2e9580
update
7个文件已修改
177 ■■■■■ 已修改文件
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
@@ -97,6 +97,15 @@
                orderCrossCityService.payOrderCrossCityCallback(Integer.valueOf(split[0]), orderId, 1);
                return buildCbyzxCallbackResponse(0, "success");
            }
            if (outTradeNo.startsWith("onBehalf_")) {
                String legacyOutTradeNo = outTradeNo.substring("onBehalf_".length());
                String[] split = legacyOutTradeNo.split("_");
                if (split.length < 2) {
                    return buildCbyzxCallbackResponse(1, "invalid onBehalf out_trade_no");
                }
                orderCrossCityService.payOrderCrossCityCallback(Integer.valueOf(split[0]), orderId, 1);
                return buildCbyzxCallbackResponse(0, "success");
            }
            if (outTradeNo.startsWith("reassign_")) {
                String legacyOutTradeNo = outTradeNo.substring("reassign_".length());
                reassignService.payReassign(legacyOutTradeNo, orderId, 1);
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -510,13 +510,13 @@
    @ResponseBody
    @RequestMapping(value = "/api/lineSite/queryDriver", method = RequestMethod.POST)
    @RequestMapping(value = "/api/lineSite/queryDriverList", method = RequestMethod.POST)
    @ApiOperation(value = "根据线路id获取其他线路排班数据", tags = {"司机端-跨城"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单", name = "orderId", required = true, dataType = "String"),
            @ApiImplicitParam(value = "查询天(2020-09-03)", name = "day", required = true, dataType = "string")
    })
    public ResultUtil<List<LineSiteWarpper>> queryDriver(String orderId){
    public ResultUtil<List<LineSiteWarpper>> queryDriverList(String orderId){
        try {
            List<Map<String, Object>> list = reassignService.queryDriver(orderId);
            return ResultUtil.success(LineSiteWarpper.getLineSiteWarppers(list));
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
@@ -84,7 +84,6 @@
    private String adminUrl;
    /**
     * 获取服务中页面订单详情
     * @param orderId
@@ -97,11 +96,11 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<OrderWarpper> queryOrderInfo(Integer orderId){
    public ResultUtil<OrderWarpper> queryOrderInfo(Integer orderId) {
        try {
            Map<String, Object> map = orderCrossCityService.queryOrderInfo(orderId);
            return ResultUtil.success(OrderWarpper.getOrderWarpper(map));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -125,16 +124,16 @@
            @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil reassignOrderCrossCityReassign(Reassign reassign, String orderIds, HttpServletRequest request){
    public ResultUtil reassignOrderCrossCityReassign(Reassign reassign, String orderIds, HttpServletRequest request) {
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            return reassignService.saveData_(reassign, orderIds, uid, null);
        }catch (SystemException s){
        } catch (SystemException s) {
            return ResultUtil.error(s.getMsg());
        } catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -153,11 +152,11 @@
            @ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<OrderCrossCityInfoWrapper> queryOrderCrossCityInfo(Integer orderId){
    public ResultUtil<OrderCrossCityInfoWrapper> queryOrderCrossCityInfo(Integer orderId) {
        try {
            Map<String, Object> map = orderCrossCityService.queryOrderCrossCityInfo(orderId);
            return ResultUtil.success(OrderCrossCityInfoWrapper.getOrderInfoWarpper(map));
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -175,11 +174,11 @@
            @ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil setOrderCrossCitySort(Integer orderId){
    public ResultUtil setOrderCrossCitySort(Integer orderId) {
        try {
            orderCrossCityService.setOrderCrossCitySort(orderId);
            return ResultUtil.success();
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
@@ -198,21 +197,20 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, HttpServletRequest request){
    public ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, HttpServletRequest request) {
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            return orderCrossCityService.orderCrossCity(orderCrossCityWarpper, uid);
        }catch (SystemException se){
        } catch (SystemException se) {
            return ResultUtil.error(se.getMessage());
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
@@ -222,7 +220,7 @@
     */
    @ResponseBody
    @PostMapping("/base/order/generatePay")
    public void generatePay(HttpServletRequest request, HttpServletResponse response){
    public void generatePay(HttpServletRequest request, HttpServletResponse response) {
        try {
//            Map<String, String> map = icbcPayUtil.generatePayCallback(request);
//            if(null != map){
@@ -247,11 +245,10 @@
//                    }
//                }
//            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
@@ -272,23 +269,22 @@
            @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request){
    public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request) {
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            switch (orderType){
            switch (orderType) {
                case 3:
                    return orderCrossCityService.payCrossCityOrder(payType, orderId, couponId, type);
            }
            return ResultUtil.success(new Object());
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
@@ -297,16 +293,16 @@
     */
    @ResponseBody
    @PostMapping("/base/wxPayCrossCity")
    public void wxPayCrossCity(HttpServletRequest request, HttpServletResponse response){
    public void wxPayCrossCity(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
            if (null != map) {
                System.err.println(JSON.toJSONString(map));
                String out_trade_no = map.get("out_trade_no");
                String transaction_id = map.get("transaction_id");
                String result = map.get("result");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(transaction_id)){
                    System.out.println("完成订单微信支付回调"+map);
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(transaction_id)) {
                    System.out.println("完成订单微信支付回调" + map);
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -322,14 +318,14 @@
//                        throw new RuntimeException("该订单不存在");
//                    }
//                    cloudPay(orderCrossCity.getDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
                    switch (type){
                    switch (type) {
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, transaction_id, 1);
                            break;
                    }
                }
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -337,25 +333,25 @@
    @ResponseBody
    @PostMapping("/base/aliPayCrossCity")
    public void aliPayCrossCity(HttpServletRequest request, HttpServletResponse response){
    public void aliPayCrossCity(HttpServletRequest request, HttpServletResponse response) {
        try {
            System.err.println("支付宝回调----->");
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            System.err.println(JSON.toJSONString(map));
            if(null != map){
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String trade_no = map.get("trade_no");
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(trade_no)){
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(trade_no)) {
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    switch (type){
                    switch (type) {
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, trade_no, 2);
                            break;
                    }
                    String uid = map.get("passback_params");
                    System.out.println("完成订单支付宝支付回调"+map);
                    System.out.println("完成订单支付宝支付回调" + map);
                    // TODO 司机云闪付 跨城出行支付宝回调支付充值
//                    OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id);
//                    if(Objects.isNull(orderCrossCity)){
@@ -369,7 +365,7 @@
                    out.close();
                }
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -430,7 +426,7 @@
            post.form("file", file);
            HttpResponse execute = post.execute();
            int status = execute.getStatus();
            if(200 != status){
            if (200 != status) {
                throw new RuntimeException("上传图片异常");
            }
            // 6. 返回结果
@@ -477,4 +473,31 @@
    }
    /**
     * 代客下单支付
     */
    @ResponseBody
    @PostMapping("/api/orderCrossCity/orderOnBehalfPay")
    @ApiOperation(value = "【202601】代客下单支付", tags = {"司机端-服务中"}, notes = "代客下单支付")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
            @ApiImplicitParam(value = "crossCityOrderId", name = "crossCityOrderId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "1微信支付 2乘客 3线下", name = "type", required = true, dataType = "int")
    })
    public ResultUtil orderOnBehalfPay(int crossCityOrderId,int type, HttpServletRequest request) {
        try {
            // 1. 验证Token获取司机ID
            Integer driverId = driverService.getUserIdFormRedis(request);
            if (null == driverId) {
                return ResultUtil.tokenErr();
            }
            return orderCrossCityService.orderOnBehalfPay(crossCityOrderId,type,driverId);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
}
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
@@ -177,4 +177,13 @@
     * @throws Exception
     */
    ResultUtil<BaseWarpper> orderCrossCityOnBehalf(OrderCrossCityOnBehalfWarpper warpper, Integer driverId) throws Exception;
    /**
     * 代客下单支付
     * @param crossCityOrderId
     * @param type
     * @return
     */
    ResultUtil orderOnBehalfPay(int crossCityOrderId, int type,Integer driverId) throws Exception;
}
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -1541,4 +1541,55 @@
        baseWarpper.setId(orderCrossCity.getId());
        return ResultUtil.success(baseWarpper);
    }
    @Override
    public ResultUtil orderOnBehalfPay(int crossCityOrderId, int type, Integer driverId) throws Exception {
        OrderCrossCity order = orderCrossCityMapper.selectById(crossCityOrderId);
        if (order == null) {
            return ResultUtil.error("订单不存在");
        }
        if (!order.getDriverId().equals(driverId)) {
            return ResultUtil.error("您没有权限支付此订单");
        }
        if (order.getState() != 7) {
            return ResultUtil.error("订单不在待支付,无法完成订单");
        }
        if (type == 1) {
            UserInfo userInfo = userInfoMapper.selectById(order.getUserId());
            if (userInfo == null) {
                return ResultUtil.error("乘客不存在");
            }
            if (ToolUtil.isEmpty(userInfo.getAppletsOpenId())) {
                return ResultUtil.errorOpenId("乘客未绑定微信小程序openid,无法发起微信支付");
            }
            String outTradeNo = buildCbyzxOnBehalfOutTradeNo(crossCityOrderId);
            JSONObject response = cbyzxOrderPayHelper.createOrder(
                    order.getUserId(),
                    userInfo.getAppletsOpenId(),
                    outTradeNo,
                    order.getOrderMoney()
            );
            if (!cbyzxOrderPayHelper.isCreateSuccess(response)) {
                return ResultUtil.error(cbyzxOrderPayHelper.extractMessage(response), response);
            }
            paymentRecordService.saveData(1, order.getDriverId(), 2, crossCityOrderId, 3, 1, order.getOrderMoney(), outTradeNo, 1);
            return ResultUtil.success(response);
        } else if (type == 3) {
            order.setState(2);
            orderCrossCityMapper.updateById(order);
            //添加交易明细
            transactionDetailsService.saveData(driverId, "跨城出行订单", order.getOrderMoney(), 2, 1, 2, 3, order.getId());
            return ResultUtil.success();
        }
        return ResultUtil.error("支付失败");
    }
    /**
     * 创博优代客支付单号,增加业务前缀便于统一回调路由。
     */
    private String buildCbyzxOnBehalfOutTradeNo(Integer orderId) throws Exception {
        return "onBehalf_" + orderId + "_3_" + UUIDUtil.getRandomCode(5);
    }
}
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityOnBehalfWarpper.java
@@ -49,7 +49,10 @@
    @ApiModelProperty(value = "下车点地址", required = true, dataType = "string")
    private String endAddress;
    @ApiModelProperty(value = "其他费用(远程费、高速费、等待费等),>=0,保留两位小数", required = false, dataType = "BigDecimal")
    @ApiModelProperty(value = "最终费用(2.0改 不传则接口获取 传则使用这个金额)(远程费、高速费、等待费等),>=0,保留两位小数", required = false, dataType = "BigDecimal")
    private BigDecimal otherFee;
    @ApiModelProperty(value = "座位编号(1,3,4)", required = true, dataType = "string")
    private String seatNumber;
}
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java
@@ -6,6 +6,7 @@
public interface IPaymentRecordService extends IService<PaymentRecord> {
    /**
     * 添加数据
     * @param orderId       订单id
@@ -18,7 +19,6 @@
     */
    void saveData(Integer category, Integer userId, Integer type, Integer orderId, Integer orderType, Integer payType,
                  Double amount, String code, Integer state) throws Exception;
    /**
     * 获取数据