liujie
2026-05-07 ea86cc455053b205e1b8ca88de4e91e6c64ec298
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -21,6 +21,9 @@
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.dto.order.*;
import com.xiaopeng.api.dto.payFront.CreditOrderCreateDto;
import com.xiaopeng.api.dto.payFront.CreditPaySignQueryDto;
import com.xiaopeng.api.dto.payFront.CreditPrecreateDto;
import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
import com.xiaopeng.api.dto.statistics.DailyCountDTO;
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
@@ -36,6 +39,7 @@
import com.xiaopeng.api.feignClient.map.XpMapClient;
import com.xiaopeng.api.feignClient.operation.*;
import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient;
import com.xiaopeng.api.feignClient.payFront.XpPayFrontClient;
import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.*;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
@@ -55,6 +59,8 @@
import com.xiaopeng.api.vo.operation.NearestNextVo;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.order.*;
import com.xiaopeng.api.vo.payFront.CreditOrderCreateVo;
import com.xiaopeng.api.vo.payFront.CreditPaySignQueryVo;
import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
import com.xiaopeng.api.vo.vehicleConvoy.BluetoothDeliverVo;
import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo;
@@ -196,6 +202,9 @@
    @Resource
    private OfficialPartnerUtil officialPartnerUtil;
    @Resource
    private XpPayFrontClient xpPayFrontClient;
    @Value("${robotaxi.appId:xp_robotaxi_api}")
    private String appid;
@@ -3218,27 +3227,90 @@
    @Override
    public R payment(XpOrderPayDto dto, String uid) {
        // mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
        XpOrder order = this.getById(dto.getOrderId());
        order.setStatus(9);
        order.setAppUserId(null);
        if (order.getCouponId() != null) {
            UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
            useUserCouponDto.setUserCouponId(order.getCouponId());
            R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
            if (decimalR.getCode() == 200) {
                order.setCouponMoney(decimalR.getData());
                if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
                    order.setPayMoney(BigDecimal.ZERO);
                    order.setCouponMoney(order.getOrderMoney());
                } else {
                    order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
                }
        // 1.0 免密  //查询是否开通免密
        // 1先查用户是否申请  申请了拿到通过的businessOrderId
        boolean signed = false;
        CreditPaySignQueryDto creditPaySignQueryDto = new CreditPaySignQueryDto();
        creditPaySignQueryDto.setUid(Long.valueOf(uid));
        creditPaySignQueryDto.setBusinessId(appid);
        creditPaySignQueryDto.setCategory("xp_robotaxi_api");
        creditPaySignQueryDto.setBusinessOrderId("");
        R<CreditPaySignQueryVo> creditPaySignQueryVoR = xpPayFrontClient.queryCreditPaySign(creditPaySignQueryDto);
        if (creditPaySignQueryVoR.getCode()==200) {
            CreditPaySignQueryVo data = creditPaySignQueryVoR.getData();
            // 查看是否有签约的
            long count = data.getSignList().stream().filter(e -> e.getStatus().equals("VALID")).count();
            if (count > 0){
                signed = true;
            }
        }
        baseMapper.updateById(order);
        bootCommonService.setCache_orderStatus(order.getId(), order, null);
        return R.ok();
        if(signed){
            // y已签约 1.信用下单
            CreditOrderCreateDto creditOrderCreateDto = new CreditOrderCreateDto();
            creditOrderCreateDto.setUid(Long.valueOf(uid));
            creditOrderCreateDto.setBusinessId(appid);
            creditOrderCreateDto.setCategory("xp_robotaxi_api");
            creditOrderCreateDto.setBusinessOrderId("");
            creditOrderCreateDto.setSubject("信用下单");
            creditOrderCreateDto.setPayType("13");
            // 信用下单
            ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1);
            CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
            postPayment.setName("收费标准");
            postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
            postPayments.add(postPayment);
            creditOrderCreateDto.setPostPayments(postPayments);
            R<CreditOrderCreateVo> creditOrderCreateVoR = xpPayFrontClient.createCreditOrder(creditOrderCreateDto);
            if(creditOrderCreateVoR.getCode()==200){
                CreditOrderCreateVo data = creditOrderCreateVoR.getData();
                return R.ok(data.getPackageValue());
            }
        }else {
            // 未签约
            // 调用预下单接口
            XpOrder order = this.getById(dto.getOrderId());
            CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto();
            creditPrecreateDto.setUid(uid);
            creditPrecreateDto.setBizId(appid);
            creditPrecreateDto.setBizOrderId("");
            creditPrecreateDto.setPayScene(99);
            creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue());
            creditPrecreateDto.setCategory("信用下单");
            creditPrecreateDto.setTitle("信用下单");
            creditPrecreateDto.setDetail("信用下单");
        }
        // mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
//        XpOrder order = this.getById(dto.getOrderId());
//        order.setStatus(9);
//        order.setAppUserId(null);
//        if (order.getCouponId() != null) {
//            UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
//            useUserCouponDto.setUserCouponId(order.getCouponId());
//            R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
//            if (decimalR.getCode() == 200) {
//                order.setCouponMoney(decimalR.getData());
//                if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
//                    order.setPayMoney(BigDecimal.ZERO);
//                    order.setCouponMoney(order.getOrderMoney());
//                } else {
//                    order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
//                }
//            }
//        }
//        baseMapper.updateById(order);
//        bootCommonService.setCache_orderStatus(order.getId(), order, null);
        return R.fail();
    }
    /**