longz
2026-06-04 da780b14b8db78043d2c0f27d3bfd73111e6d550
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -5,10 +5,14 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.CharteredCar.server.IOrderCharteredCarService;
import com.stylefeng.guns.modular.account.controller.AppOrderController;
import com.stylefeng.guns.modular.call.server.IOrderCallService;
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.shunfeng.model.Financial;
import com.stylefeng.guns.modular.shunfeng.model.OrderRide;
import com.stylefeng.guns.modular.shunfeng.service.IDriverRideService;
import com.stylefeng.guns.modular.shunfeng.service.IFinancialService;
import com.stylefeng.guns.modular.shunfeng.service.IOrderRideService;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
@@ -118,6 +122,9 @@
    private PayMoneyUtil payMoneyUtil;
    @Autowired
    private CbyzxOrderPayHelper cbyzxOrderPayHelper;
    @Autowired
    private IPaymentRecordService paymentRecordService;
    @Autowired
@@ -160,6 +167,10 @@
    @Autowired
    private IOrderRideService orderRideService;
    @Autowired
    private IFinancialService financialService;
    @Autowired
    private ISystemNoticeService systemNoticeService;
    /*顺风车司机*/
    @Autowired
    private IDriverRideService driverRideService;
@@ -167,6 +178,9 @@
    private IOrderPrivateCarService iOrderPrivateCarService;
    @Autowired
    private IIncomeService incomeService;
    @Autowired
    private AppOrderController appOrderController;
    /**
@@ -1699,7 +1713,51 @@
            e.printStackTrace();
        }
    }
    /**
     * 取消订单微信回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/cbyzxCancelOrderTaxi")
    public Map<String, Object> cbyzxCancelOrderTaxi(HttpServletRequest request, HttpServletResponse response) {
        // 不做处理  退款已同步处理
        return buildCbyzxCallbackResponse(0, "success");
//        try {
//            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
//            if (null != map) {
//                String order_id = map.get("transaction_id");
//                String out_trade_no = map.get("out_trade_no");
//                String result = map.get("result");
//                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
//                    PrintWriter out = response.getWriter();
//                    out.write(result);
//                    out.flush();
//                    out.close();
//
//                    String[] split = out_trade_no.split("_");
//                    Integer id = Integer.valueOf(split[0]);
//                    Integer type = Integer.valueOf(split[1]);
//                    switch (type) {
//                        case 1:
//                            orderPrivateCarService.payCancelOrderPrivateCar(id, order_id, 1);
//                            break;
//                        case 2:
//                            orderTaxiService.payCancelOrderTaxi(id, order_id, 1);
//                            break;
//                        case 3:
//                            orderCrossCityService.payCancelOrderCrossCity(id, order_id, 1);
//                            break;
//                    }
//                }
////                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
//
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
    /**
     * 取消订单支付宝回调
@@ -1771,10 +1829,10 @@
                    Integer type = Integer.valueOf(split[1]);
                    switch (type) {
                        case 1:
                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 1);
                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 1, out_trade_no);
                            break;
                        case 2:
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 1, 0);
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 1, 0, out_trade_no);
                            break;
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 1, null);
@@ -1798,6 +1856,183 @@
        }
    }
    /**
     * 创博优完成订单支付回调。
     * outRequestNo 为平台订单号,用于反解订单id和订单类型;
     * paymentOrderId 为创博优支付流水号,用于标记真实支付流水;
     * paidTime 为支付完成时间,paidAmount 为实付金额。
     */
    @ResponseBody
    @PostMapping("/base/cbyzxPayOrderTaxi")
    public Map<String, Object> cbyzxPayOrderTaxi(@RequestBody String params, HttpServletRequest request) {
        try {
            JSONObject payload = JSONObject.parseObject(params);
            log.error("创博优完成订单支付回调,outRequestNo={}, paymentOrderId={}, paidTime={}, paidAmount={}",
                    cbyzxOrderPayHelper.extractOutRequestNo(payload),
                    cbyzxOrderPayHelper.extractThirdPartyOrderNo(payload),
                    payload == null ? null : payload.getString("paidTime"),
                    payload == null ? null : payload.getString("paidAmount"));
            if (payload == null) {
                return buildCbyzxCallbackResponse(1, "invalid request");
            }
            String outRequestNo = cbyzxOrderPayHelper.extractOutRequestNo(payload);
            if (StringUtils.isBlank(outRequestNo)) {
                return buildCbyzxCallbackResponse(1, "missing outRequestNo");
            }
            String paymentOrderId = cbyzxOrderPayHelper.extractThirdPartyOrderNo(payload);
            if (StringUtils.isBlank(paymentOrderId)) {
                return buildCbyzxCallbackResponse(1, "missing paymentOrderId");
            }
            if (payload.get("paidAmount") == null) {
                return buildCbyzxCallbackResponse(1, "missing paidAmount");
            }
            String[] split = outRequestNo.split("_");
            if (split.length < 2) {
                return buildCbyzxCallbackResponse(1, "invalid outRequestNo");
            }
            String recordCode = StringUtils.defaultIfBlank(cbyzxOrderPayHelper.extractRecordCode(payload), outRequestNo);
            String orderId = paymentOrderId;
            if (StringUtils.isNumeric(split[0])) {
                Integer id = Integer.valueOf(split[0]);
                Integer type = Integer.valueOf(split[1]);
                switch (type) {
                    case 1:
                        orderPrivateCarService.payOrderPrivateCarCallback(id, orderId, 1, recordCode);
                        break;
                    case 2:
                        orderTaxiService.payOrderTaxiCallback(id, orderId, 1, 0, recordCode);
                        break;
                    case 3:
                        orderCrossCityService.payOrderCrossCityCallback(id, orderId, 1, recordCode);
                        break;
                    case 4:
                        orderLogisticsService.payOrderLogisticsCallback(id, orderId, 1);
                        break;
                    case 5:
                        orderLogisticsService.payOrderLogisticsCallback(id, orderId, 1);
                        break;
                    case 8:
                        OrderRide orderRide = orderRideService.selectById(id);
                        if (orderRide == null) {
                            return buildCbyzxCallbackResponse(1, "order not found");
                        }
                        if (orderRide.getState() == null || orderRide.getState() != 2) {
//                            orderRide.setOutNum(orderId);
                            orderRide.setPayTime(new Date());
                            orderRide.setPayType(2);
                            orderRide.setState(2);
                            Financial financial = new Financial();
                            financial.setType(1);
                            financial.setPayType("2");
                            financial.setMoney(orderRide.getMoney());
                            financial.setOrderNum(orderRide.getOrderNum());
                            financial.setLsType(orderId);
                            financial.setAddTime(new Date());
                            financial.setTradeStatus("SUCCESS");
                            financial.setPwType(8);
                            financial.setUserId(orderRide.getUserId());
                            financial.setLx(1);
                            financial.setOrderType(4);
                            financialService.insert(financial);
                            orderRideService.updateById(orderRide);
                            systemNoticeService.addSystemNotice(1, "您成功支付从" + orderRide.getStartName() + "到" + orderRide.getEndName() + "的顺风车订单", orderRide.getUserId(), 1);
                        }
                        break;
                    default:
                        return buildCbyzxCallbackResponse(1, "unsupported orderType");
                }
                return buildCbyzxCallbackResponse(0, "success");
            }
            switch (split[0]) {
                case "CANCEL":
                    if (split.length < 3) {
                        return buildCbyzxCallbackResponse(1, "invalid cancel outRequestNo");
                    }
                    Integer cancelId = Integer.valueOf(split[1]);
                    Integer cancelType = Integer.valueOf(split[2]);
                    switch (cancelType) {
                        case 1:
                            orderPrivateCarService.payCancelOrderPrivateCar(cancelId, orderId, 1);
                            break;
                        case 2:
                            orderTaxiService.payCancelOrderTaxi(cancelId, orderId, 1);
                            break;
                        case 3:
                            orderCrossCityService.payCancelOrderCrossCity(cancelId, orderId, 1);
                            break;
                        default:
                            return buildCbyzxCallbackResponse(1, "unsupported cancel orderType");
                    }
                    break;
                case "THANK":
                    if (split.length < 3) {
                        return buildCbyzxCallbackResponse(1, "invalid thank outRequestNo");
                    }
                    Integer thankId = Integer.valueOf(split[1]);
                    Integer thankType = Integer.valueOf(split[2]);
                    switch (thankType) {
                        case 1:
                            orderPrivateCarService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        case 2:
                            orderTaxiService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        case 3:
                            orderCrossCityService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        case 4:
                            orderLogisticsService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        case 5:
                            orderLogisticsService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        case 6:
                            orderCharteredCarService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        case 7:
                            orderCallService.payThankYouFeeCallback(thankId, orderId, 1);
                            break;
                        default:
                            return buildCbyzxCallbackResponse(1, "unsupported thank orderType");
                    }
                    break;
                case "SPREAD":
                    if (split.length < 3) {
                        return buildCbyzxCallbackResponse(1, "invalid spread outRequestNo");
                    }
                    orderLogisticsService.payOrderLogisticsSpreadCallback(Integer.valueOf(split[1]), orderId, 1);
                    break;
                case "CARD":
                    taxiCardService.payTaxiCardPaymentSpread(Integer.valueOf(split[1]), orderId);
                    break;
                case "BALANCE":
                    if (split.length < 3) {
                        return buildCbyzxCallbackResponse(1, "invalid balance outRequestNo");
                    }
                    Integer uid = Integer.valueOf(split[1]);
                    Integer paymentRecordId = Integer.valueOf(split[2]);
                    PaymentRecord paymentRecord = paymentRecordService.selectById(paymentRecordId);
                    if (paymentRecord == null) {
                        return buildCbyzxCallbackResponse(1, "paymentRecord not found");
                    }
                    if (paymentRecord.getState() == 1) {
                        userInfoService.payCancelUserBalance(uid, orderId, paymentRecordId, 1);
                        appOrderController.createAllocationReqUser(1, uid, 1, paymentRecord.getAmount());
                    }
                    break;
                default:
                    return buildCbyzxCallbackResponse(1, "unsupported scene");
            }
            return buildCbyzxCallbackResponse(0, "success");
        } catch (Exception e) {
            log.error("创博优完成订单支付回调处理失败", e);
            return buildCbyzxCallbackResponse(1, "fail");
        }
    }
    /**
     * 完成订单支付宝支付回调
@@ -1818,10 +2053,10 @@
                    Integer type = Integer.valueOf(split[1]);
                    switch (type) {
                        case 1:
                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 2);
                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 2, out_trade_no);
                            break;
                        case 2:
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 2, 0);
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 2, 0, out_trade_no);
                            break;
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 2, null);
@@ -1845,6 +2080,13 @@
        }
    }
    private Map<String, Object> buildCbyzxCallbackResponse(Integer code, String msg) {
        Map<String, Object> result = new HashMap<>();
        result.put("code", code);
        result.put("msg", msg);
        return result;
    }
    /**
     * 小件物流差价微信支付回调