package com.xiaopeng.operation.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.feignClient.map.XpMapClient; import com.xiaopeng.api.vo.map.XpDistanceAndDurationVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.operation.mapper.XpPricingMapper; import com.xiaopeng.api.model.operation.XpPricing; import com.xiaopeng.operation.service.XpPricingService; import com.xiaopeng.operation.utils.XpPricingUtil; import com.xiaopeng.api.vo.operation.RouteAndFareVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** *

* 定价管理 服务实现类 *

* * @author liu * @since 2026-02-03 */ @Service public class XpPricingServiceImpl extends ServiceImpl implements XpPricingService { @Resource private XpPricingUtil xpPricingUtil; @Resource private XpMapClient xpMapClient; @Override public RouteAndFareVo getRouteAndFare(RouteAndFareDto routeAndFareDto) { XpPricing xpPricing = this.baseMapper.selectOne(new LambdaQueryWrapper().eq(XpPricing::getCityId, routeAndFareDto.getOpenCityId())); if(xpPricing==null){ // 抛出异常 throw new RuntimeException("当前区域未开通服务"); } // 判断2个点是否在同一个经营区域 R r = xpMapClient.diagnosisArea(routeAndFareDto); if(r.getCode()!=R.SUCCESS){ // 抛出异常 throw new RuntimeException(r.getMsg()); } if(!r.getData()){ // 抛出异常 throw new RuntimeException("当前区域未开通服务"); } // 调用地图 R distanceAndDuration = xpMapClient.getDistanceAndDuration(routeAndFareDto); // xpPricingUtil.calculationPrice(xpPricing.getBasicPricingJson(), xpPricing.getStartingFareJson(),1,1, 0, 0); return null; } }