xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPricingClient.java
@@ -22,7 +22,7 @@ // 根据开通城市 获取定价 @GetMapping("/logan/inner/v1/getPricingByCid") R<XpPricing> getPricingByCid(@RequestParam Long cityId,@RequestParam(required = false) String vehicleModelId); R<XpPricing> getPricingByCid(@RequestParam(value = "cityId") Long cityId,@RequestParam(value = "vehicleModelId",required = false) String vehicleModelId); /** * 保存XpGeoQueryEntity xp-robotaxi-api/src/main/java/com/xiaopeng/api/service/BootCommonService.java
File was deleted xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/BootCommonService.java
New file @@ -0,0 +1,99 @@ package com.xiaopeng.itinerary.service; import com.xiaopeng.api.feignClient.operation.XpPricingClient; import com.xiaopeng.api.feignClient.order.XpOrderClient; 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.stereotype.Service; import javax.annotation.Resource; @Service public class BootCommonService { @Resource private XpPricingClient xpPricingClient; @Resource private XpVehicleClient xpVehicleClient; @Resource private XpOrderClient xpOrderClient; // @Override 测试 public XpOrder getXpOrder(Long orderId) { R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(orderId); if (xpOrderR.getCode() != R.SUCCESS || xpOrderR.getData() == null) { throw new ServiceException("订单不存在"); } return xpOrderR.getData(); } // @Override public XpVehicle getXpVehicle(Long vehicleId) { R<XpVehicle> 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<XpPricing> 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); } } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -22,16 +22,8 @@ import com.xiaopeng.api.model.account.XpUserRoutePlanRule; import com.xiaopeng.api.model.operation.*; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.service.BootCommonService; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.api.vo.operation.FareVo; import com.xiaopeng.api.vo.operation.MultiRouteAndFareVo; import com.xiaopeng.api.vo.operation.RouteAndFareVo; import com.xiaopeng.api.vo.operation.RouteOptionVo; import com.xiaopeng.api.vo.operation.RoutePreferenceItemVo; import com.xiaopeng.api.vo.operation.RouteStaleCheckVo; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.operation.*; import com.xiaopeng.api.vo.order.XpPricingCardVo; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.domain.R; @@ -40,16 +32,17 @@ import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.itinerary.constant.I18nKeyConstant; import com.xiaopeng.itinerary.dto.XpOrderDto; import com.xiaopeng.itinerary.navigation.MultiRouteSnapshotPayload; import com.xiaopeng.itinerary.mapper.*; import com.xiaopeng.itinerary.navigation.MultiRouteSnapshotPayload; import com.xiaopeng.itinerary.service.BootCommonService; import com.xiaopeng.itinerary.service.IXpGeoQueryEntityService; import com.xiaopeng.itinerary.service.XpPointService; import com.xiaopeng.itinerary.service.XpPricingService; import com.xiaopeng.itinerary.vo.QueueStatusVo; import com.xiaopeng.itinerary.utils.XpPricingUtil; import com.xiaopeng.itinerary.utils.holiday.HolidayUtil; import com.xiaopeng.itinerary.utils.map.FastDistanceCalculator; import com.xiaopeng.itinerary.utils.map.GDMapGeocodingUtil; import com.xiaopeng.itinerary.vo.QueueStatusVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -217,7 +210,7 @@ if(vehicleModel != null){ queryWrapper.eq(XpPricing::getVehicleModel, vehicleModel); } return super.getOne(queryWrapper,true); return super.getOne(queryWrapper); } @@ -245,17 +238,12 @@ if (openCities == null ) { throw new ServiceException("获取城市信息失败", I18nKeyConstant.CITY_NOT_FOUND); } routeAndFareDto.setOpenCityId(openCities.getId()); //根据订单获取车型 获取定价策略 String vehicleModel = bootCommonService.getVehicleModelId(routeAndFareDto.getOrderId()); XpPricing xpPricing = this.getInfo(routeAndFareDto.getOpenCityId(),vehicleModel); XpPricing xpPricing = bootCommonService.getXpPricing(routeAndFareDto.getOpenCityId(), routeAndFareDto.getOrderId(), null); if (xpPricing == null) { throw new ServiceException("当前区域未开通服务", I18nKeyConstant.NO_CURRENT_REGION); } XpOpenCity xpOpenCity = openCities; routeAndFareDto.setOpenCityId(xpOpenCity.getId()); List<XpRoutePlan> xpRoutePlan = xpRoutePlanMapper.selectList(new LambdaQueryWrapper<XpRoutePlan>().eq(XpRoutePlan::getAuditStatus, 2).eq(XpRoutePlan::getCityCode, cityCode)); // 找出用户偏好 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPricingController.java
@@ -80,8 +80,9 @@ } // 根据开通城市 获取定价 @GetMapping("/logan/inner/v1/getPricingByCid") public R<XpPricing> getPricingByCid(@RequestParam Long cityId,@RequestParam(required = false) String vehicleModelId) { public R<XpPricing> getPricingByCid(@RequestParam("cityId") Long cityId,@RequestParam(value = "vehicleModelId", required = false) String vehicleModelId) { LambdaQueryWrapper<XpPricing> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(XpPricing::getDeleted, 0); queryWrapper.eq(XpPricing::getCityId, cityId); if(null != vehicleModelId){ queryWrapper.eq(XpPricing::getVehicleModel, vehicleModelId); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/OrderApplication.java
@@ -7,6 +7,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/BootCommonService.java
New file @@ -0,0 +1,101 @@ 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<XpVehicle> 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<XpPricing> 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); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -3,8 +3,8 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -35,13 +35,15 @@ import com.xiaopeng.api.feignClient.map.XpMapClient; import com.xiaopeng.api.feignClient.operation.*; import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient; import com.xiaopeng.api.feignClient.vehicleConvoy.*; import com.xiaopeng.api.feignClient.vehicleConvoy.UserVehicleClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetVehicleClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.maintenance.XpTaskRule; import com.xiaopeng.api.model.operation.*; import com.xiaopeng.api.model.order.*; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.service.BootCommonService; import com.xiaopeng.api.vo.OrderType; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; @@ -87,8 +89,8 @@ import com.xiaopeng.order.model.vo.*; import com.xiaopeng.order.service.*; import com.xiaopeng.order.utils.GDMapGeocodingUtil; import com.xiaopeng.order.utils.TaxiPricingDemoService; import com.xiaopeng.order.utils.RegionCodeFilterUtil; import com.xiaopeng.order.utils.TaxiPricingDemoService; import com.xiaopeng.order.utils.XpPricingUtil; import com.xiaopeng.order.utils.holiday.HolidayUtil; import com.xiaopeng.order.vo.OrderDetailVo; @@ -162,6 +164,7 @@ @Resource private XpRoutePlanClient xpRoutePlanClient; @Resource @Lazy private BootCommonService bootCommonService; @@ -2042,7 +2045,6 @@ if (pricing == null) { throw new ServiceException("当前城市未配置定价规则", I18nKeyConstant.ORDER_PRICING_NOT_EXISTS); } // 费用 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -29,7 +29,6 @@ import com.xiaopeng.api.model.order.*; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.service.BootCommonService; import com.xiaopeng.api.vo.OrderType; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType; @@ -60,10 +59,7 @@ import com.xiaopeng.order.model.vo.AddTestOrderVo; import com.xiaopeng.order.model.vo.XpTestOrderDetailVO; import com.xiaopeng.order.model.vo.XpTestOrderPageVO; import com.xiaopeng.order.service.IXpOrderEvaluateService; import com.xiaopeng.order.service.IXpOrderReassignService; import com.xiaopeng.order.service.IXpTestOrderCancelService; import com.xiaopeng.order.service.IXpTestOrderService; import com.xiaopeng.order.service.*; import com.xiaopeng.order.utils.GDMapGeocodingUtil; import com.xiaopeng.order.utils.TaxiPricingDemoService; import com.xiaopeng.order.utils.XpPricingUtil;