package com.xiaopeng.order.service; import com.xiaopeng.api.feignClient.operation.XpPricingClient; 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.common.core.domain.R; import com.xiaopeng.common.core.exception.ServiceException; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class BootCommonService { @Resource private XpPricingClient xpPricingClient; @Resource private XpVehicleClient xpVehicleClient; @Resource @Lazy private IXpOrderService xpOrderService; // @Override public XpOrder getXpOrder(Long orderId) { XpOrder xpOrder = xpOrderService.getById(orderId); if (xpOrder == null) { throw new ServiceException("订单不存在"); } return xpOrder; } // @Override public XpVehicle getXpVehicle(Long vehicleId) { R xpVehicleR = xpVehicleClient.queryById(vehicleId); if (xpVehicleR.getCode() != R.SUCCESS || xpVehicleR.getData() == null) { throw new ServiceException("车型不存在"); } return xpVehicleR.getData(); } // @Override public String getVehicleModelId(Long orderId) { if(orderId!= null){ XpOrder xpOrder = getXpOrder(orderId); XpVehicle xpVehicle = getXpVehicle(xpOrder.getVehicleId()); return xpVehicle.getVehicleModel(); } return null; } // @Override public XpPricing getPricingByCid(Long cityId, String vehicleModelId) { R xpPricingR = xpPricingClient.getPricingByCid(cityId,vehicleModelId); if (xpPricingR.getCode() != R.SUCCESS || xpPricingR.getData() == null) { throw new ServiceException("当前城市未配置定价规则"); // throw new ServiceException("当前区域未开通服务"); } return xpPricingR.getData(); } // @Override public XpPricing getXpPricing(Long orderId) { if(orderId != null){ XpOrder xpOrder = getXpOrder(orderId); return getXpPricing(xpOrder.getCityId(),xpOrder.getVehicleId()); } return null; } // @Override public XpPricing getXpPricing(Long cityId, Long vehicleId) { String vehicleModelId = null; if(vehicleId != null){ XpVehicle xpVehicle = getXpVehicle(vehicleId); vehicleModelId = xpVehicle.getVehicleModel(); } return getPricingByCid(cityId, vehicleModelId); } // @Override public XpPricing getXpPricing(Long cityId, Long orderId, Long vehicleId) { String vehicleModelId = null; if(vehicleId != null ){ XpVehicle xpVehicle = getXpVehicle(vehicleId); vehicleModelId = xpVehicle.getVehicleModel(); } if(vehicleModelId != null){ if(orderId != null ){ vehicleModelId = getVehicleModelId(orderId); } } return getPricingByCid(cityId, vehicleModelId); } }