xuhy
2026-04-23 1a787ef055b0928a4dad02fc81e737e21965f70d
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/BootCommonService.java
@@ -1,17 +1,27 @@
package com.xiaopeng.order.service;
import cn.hutool.core.util.StrUtil;
import com.xiaopeng.api.feignClient.operation.XpPricingClient;
import com.xiaopeng.api.feignClient.pushMessage.SubscribeMessageClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.operation.XpPricing;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.pushMessage.SendSubscribeMessageVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.MessageTemplateEnum;
import com.xiaopeng.common.core.enums.OrderStatusEnum;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.redis.service.RedisService;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Service
public class BootCommonService   {
@@ -23,7 +33,12 @@
    @Resource
    @Lazy
    private IXpOrderService xpOrderService;
//    @Override
    @Resource
    private  RedisService redisService;
    @Resource
    private SubscribeMessageClient subscribeMessageClient;
    public XpOrder getXpOrder(Long orderId) {
        XpOrder xpOrder = xpOrderService.getById(orderId);
@@ -32,7 +47,6 @@
        }
        return xpOrder;
    }
//    @Override
    public XpVehicle getXpVehicle(Long vehicleId) {
        R<XpVehicle>  xpVehicleR = xpVehicleClient.queryById(vehicleId);
@@ -41,7 +55,6 @@
        }
        return xpVehicleR.getData();
    }
//    @Override
    public String getVehicleModelId(Long orderId) {
        if(orderId!= null){
            XpOrder xpOrder = getXpOrder(orderId);
@@ -51,7 +64,6 @@
        return null;
    }
//    @Override
    public XpPricing getPricingByCid(Long cityId, String vehicleModelId) {
        R<XpPricing> xpPricingR = xpPricingClient.getPricingByCid(cityId,vehicleModelId);
        if (xpPricingR.getCode() != R.SUCCESS || xpPricingR.getData() == null) {
@@ -60,8 +72,6 @@
        }
        return xpPricingR.getData();
    }
//    @Override
    public XpPricing getXpPricing(Long orderId) {
        if(orderId != null){
            XpOrder xpOrder = getXpOrder(orderId);
@@ -69,8 +79,6 @@
        }
        return null;
    }
//    @Override
    public XpPricing getXpPricing(Long cityId, Long vehicleId) {
        String vehicleModelId = null;
        if(vehicleId != null){
@@ -79,8 +87,6 @@
        }
        return getPricingByCid(cityId, vehicleModelId);
    }
//    @Override
    public XpPricing getXpPricing(Long cityId, Long orderId, Long vehicleId) {
        String vehicleModelId = null;
        if(vehicleId != null ){
@@ -96,6 +102,53 @@
    }
    /**
     * 设置缓存订单状态
     * 并发送微信通知
     * @param xpOrderId 订单id
     * @param order OrderStatusEnum 订单状态
     *  oldStatus 订单旧状态
     */
    public void setCache_orderStatus(Long xpOrderId, XpOrder order ,OrderStatusEnum status) {
        if(order == null){
            order = xpOrderService.getById(xpOrderId);
        }
        redisService.setCacheObject("ORDER_STATUS:" + xpOrderId, status.getCode(), 24L, TimeUnit.HOURS);
        SendSubscribeMessageVo vo = new SendSubscribeMessageVo();
        vo.setUserId(order.getAppUserId());
        String json = null;
        if(order.getStatus() == OrderStatusEnum.PENDING_ORDER.getCode()){
            String plateNumber = null;
                // 查询车辆
            XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
            if(xpVehicle != null){
                plateNumber = xpVehicle.getPlateNumber();
            }
            if(StrUtil.isNotBlank(plateNumber)){
                vo.setTemplateId(MessageTemplateEnum.E.getTemplateId());
                json = MessageTemplateEnum.E.getRemarks();
                json = json.replace("车牌号", plateNumber);
                json = json.replace("报警时间", LocalDateTime.now().toString());
            }
        }else{
            vo.setTemplateId(MessageTemplateEnum.A.getTemplateId());
            json = MessageTemplateEnum.A.getRemarks();
            json = json.replace("订单编号", order.getOrderNumber());
            json = json.replace("订单状态", status.getDesc() );
            json = json.replace("订单状态", OrderStatusEnum.getDescByCode(order.getStatus()));
            json = json.replace("备注", "");
            json = json.replace("时间", LocalDateTime.now().toString());
            vo.setPage("");
        }
        if(StrUtil.isNotBlank(json)){
            vo.setJson(json);
            subscribeMessageClient.sendSubscribeMessage(vo);
        }
    }
}