xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -53,7 +53,7 @@ * @return 用户列表 */ @GetMapping("/inner/xpOperationsUser/queryById") R<XpOperationsUser> queryById(Long id){ R<XpOperationsUser> queryById(@RequestParam Long id){ return R.ok(xpOperationsUserService.getById(id)); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/automatic/OrderMissionClientFallbackFactory.java
@@ -1,7 +1,8 @@ package com.xiaopeng.api.factory.automatic; import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; import com.xiaopeng.api.feignClient.automatic.OrderMissionClient; import com.xiaopeng.api.feignClient.maintenance.XpChargingRecordClient; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; @@ -19,6 +20,10 @@ @Override public OrderMissionClient create(Throwable cause) { return new OrderMissionClient() { @Override public R<Boolean> pushOrder(PushOrderDto dto) { return null; } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/maintenance/XpCheckLocationClientFallbackFactory.java
New file @@ -0,0 +1,31 @@ package com.xiaopeng.api.factory.maintenance; import com.xiaopeng.api.feignClient.maintenance.XpCheckLocationClient; import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; /** * 打卡地址Feign客户端降级工厂 * * @author mitao * @since 2026-02-13 */ @Slf4j @Component public class XpCheckLocationClientFallbackFactory implements FallbackFactory<XpCheckLocationClient> { @Override public XpCheckLocationClient create(Throwable cause) { log.error("打卡地址服务调用失败: {}", cause.getMessage()); return new XpCheckLocationClient() { @Override public R<XpCheckLocation> queryById(Long id) { log.error("远程调用获取检查点位信息异常:{}", cause.getMessage()); return R.fail("远程调用获取检查点位信息异常"); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
@@ -36,7 +36,7 @@ * @return 用户列表 */ @GetMapping("/inner/xpOperationsUser/queryById") R<XpOperationsUser> queryById(Long id); R<XpOperationsUser> queryById(@RequestParam Long id); /** * 根据昵称查询运维用户信息 xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/maintenance/XpCheckLocationClient.java
New file @@ -0,0 +1,24 @@ package com.xiaopeng.api.feignClient.maintenance; import com.xiaopeng.api.factory.maintenance.XpCheckLocationClientFallbackFactory; import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; /** * 打卡地址管理 Feign Client * * @author mitao */ @FeignClient(contextId = "XpCheckLocationClient", value = ServiceNameConstantsEnum.XP_MAINTENANCE_SERVICE, fallbackFactory = XpCheckLocationClientFallbackFactory.class) public interface XpCheckLocationClient { /** * 根据ID查询打卡地址 */ @GetMapping("/inner/check-location/queryById") R<XpCheckLocation> queryById(@RequestParam Long id); } xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -22,4 +22,5 @@ com.xiaopeng.api.factory.pushMessage.XpPushMessageClientFallbackFactory com.xiaopeng.api.factory.account.UserResourcesClientFallbackFactory com.xiaopeng.api.factory.vehicleConvoy.VehicleControlClientFallbackFactory com.xiaopeng.api.factory.automaticPilot.XPUClientFallbackFactory com.xiaopeng.api.factory.automaticPilot.XPUClientFallbackFactory com.xiaopeng.api.factory.maintenance.XpCheckLocationClientFallbackFactory xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationController.java
@@ -9,6 +9,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -29,4 +30,10 @@ public R<List<XpCheckLocation>> getList(){ return R.ok(xpCheckLocationService.lambdaQuery().eq(XpCheckLocation::getStatus, DisabledEnum.YES.getCode()).list()); } @GetMapping("/inner/check-location/queryById") @ApiOperation(value = "根据ID查询打卡地址", tags = {"内部接口"}) public R<XpCheckLocation> queryById(@RequestParam Long id) { return R.ok(xpCheckLocationService.getById(id)); } } xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -5,12 +5,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.dto.account.XpOperationsUserQueryDTO; import com.xiaopeng.api.feignClient.account.XpOperationUserClient; import com.xiaopeng.api.feignClient.maintenance.XpCheckLocationClient; import com.xiaopeng.api.feignClient.operation.XpElectronicClient; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.model.vehicleConvoy.XpFleetOperations; import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle; @@ -66,7 +66,7 @@ private final XpElectronicClient xpElectronicClient; private final XpPointClient xpPointClient; private final XpCheckLocationClient xpCheckLocationClient; @Override public List<XpFleet> listByIds(List<Long> ids) { @@ -250,9 +250,9 @@ // 6. 查询打卡地信息 if (fleet.getLocationId() != null) { R<XpPoint> pointResult = xpPointClient.queryById(fleet.getLocationId()); if (pointResult.getData() != null) { vo.setLocationName(pointResult.getData().getPointName()); R<XpCheckLocation> locationResult = xpCheckLocationClient.queryById(fleet.getLocationId()); if (locationResult.getData() != null) { vo.setLocationName(locationResult.getData().getLocationAddress()); } }