puzhibing
2026-05-19 2d0312de30b3783ecf254d146dc6322d74690762
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -16,6 +16,7 @@
import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
import com.xiaopeng.api.dto.vehicleConvoy.BleInfoResponseDto;
import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
import com.xiaopeng.api.feignClient.frdXfipEvent.XpFrdXfipEventClient;
import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient;
import com.xiaopeng.api.feignClient.operation.XpWhiteListClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.BluetoothUnlockClient;
@@ -24,6 +25,7 @@
import com.xiaopeng.api.model.operation.XpOfficialPartner;
import com.xiaopeng.api.model.operation.XpSystemSetting;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.account.LoginUser;
@@ -40,13 +42,11 @@
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.order.config.BluetoothDebugConfig;
import com.xiaopeng.order.dto.OrderNavigationDto;
import com.xiaopeng.order.model.dto.*;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
@@ -57,6 +57,7 @@
import com.xiaopeng.order.model.query.XpHistoryOrderListQuery;
import com.xiaopeng.order.model.query.XpOrderExcelQuery;
import com.xiaopeng.order.model.query.XpOrderPageQuery;
import com.xiaopeng.order.model.vo.CreditPayCallVo;
import com.xiaopeng.order.model.vo.XpOrderDetailVO;
import com.xiaopeng.order.model.vo.XpOrderHistoryVO;
import com.xiaopeng.order.model.vo.XpOrderPageVO;
@@ -116,8 +117,6 @@
    @Resource
    private  VehicleMacClient vehicleMacClient;
    @Resource
    private SysGroupMenuClient groupMenuClient;
    @Resource
    private XpWhiteListClient xpWhiteListClient;
@@ -164,6 +163,23 @@
        }
        return R.ok(0L);
    }
    /**
     * 查询是否有未支付订单
     * 返回0 可以下单,非0为未支付订单ID
     */
    @PostMapping("/logan/inner/order/has-unpay-order")
    @ApiOperation(value = "查询是否有未支付订单", tags = {"内部接口"})
    public R<Long> hasUnPayOrder(String uid) {
        XpOrder order = xpOrderService.getOne(new LambdaQueryWrapper<XpOrder>()
                .eq(XpOrder::getAppUserId, Long.parseLong(uid))
                .eq(XpOrder::getStatus, 8)
                .last("LIMIT 1"));
        if (order != null) {
            return R.ok(order.getId());
        }
        return R.ok(0L);
    }
    /**
@@ -1011,6 +1027,7 @@
    }
    /**
     * 将订单推单状态还原重新推单
     * @param orderId
@@ -1028,4 +1045,62 @@
        }
        return R.ok();
    }
    /**
     * 信用支付下单回调
     */
    @PostMapping("/base/v1/mini-program/order/creditPayCall")
    @ApiOperation(value = "信用支付下单回调", tags = {"小程序-发起支付"}, response = CreditPayCallVo.class)
    public CreditPayCallVo creditPayCall(@RequestBody CreditPayCallDto dto) {
        CreditPayCallVo vo = new CreditPayCallVo();
        vo.setRetCode("0");
        vo.setRetMsg("成功");
        if (dto == null || (StringUtils.isBlank(dto.getAuthOrderId()) || StringUtils.isBlank(dto.getBusinessOrderId()))) {
            return vo;
        }
        LambdaQueryWrapper<XpOrder> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(XpOrder::getAuthOrderId, dto.getAuthOrderId());
        XpOrder order = xpOrderService.getOne(wrapper.last("LIMIT 1"));
        if (order == null) {
            return vo;
        }
        if ("SUCCESS".equals(dto.getCreditOrderStatus())) {
            // 发起扣款
            xpOrderService.creditPayCall(order);
        }
        return vo;
    }
    /**
     * 信用扣款回调
     */
    @PostMapping("/base/v1/mini-program/order/creditPaySuccessCall")
    @ApiOperation(value = "信用扣款回调", tags = {"小程序-发起支付"}, response = CreditPayCallVo.class)
    public CreditPayCallVo creditPaySuccessCall(@RequestBody CreditPaySuccessCallDto dto) {
        LambdaQueryWrapper<XpOrder> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(XpOrder::getAuthOrderId, dto.getAuthOrderId());
        XpOrder order = xpOrderService.getOne(wrapper.last("LIMIT 1"));
        if(dto.getPayStatus()==1){
            order.setStatus(9);
            order.setAppUserId(null);
            xpOrderService.updateById(order);
            CreditPayCallVo vo = new CreditPayCallVo();
            vo.setRetCode("0");
            vo.setRetMsg("成功");
            // 对接财务
            xpOrderService.xpFrdXfipEventPush(order,dto.getPayFee(),dto.getOrderId());
            return vo;
        }
        return null;
    }
}