package com.xiaopeng.api.factory.vehicleConvoy; import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto; import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; import com.xiaopeng.api.vo.operation.VehiclePositionVo; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; /** * 车辆Feign客户端降级工厂 * * @author mitao */ @Slf4j @Component public class XpVehicleClientFallbackFactory implements FallbackFactory { @Override public XpVehicleClient create(Throwable cause) { log.error("车辆服务调用失败: {}", cause.getMessage()); return new XpVehicleClient() { @Override public R> listByIds(List ids) { log.error("批量查询车辆信息失败,原因: {}", cause.getMessage()); // 降级返回空列表 return R.ok(new ArrayList<>()); } @Override public R> listVehicle() { log.error("获取所有车辆信息失败,原因: {}", cause.getMessage()); // 降级返回空列表 return R.ok(new ArrayList<>()); } @Override public R queryById(Long id) { log.error("查询车辆信息失败,原因: {}", cause.getMessage()); return R.ok(null); } @Override public R updateVehicleById(XpVehicle xpVehicle) { return R.fail("修改车辆信息失败:" + cause.getMessage()); } @Override public R> listByPlateNumber(String plateNumber) { log.error("根据车牌号查询车辆信息失败,原因: {}", cause.getMessage()); return R.ok(null); } @Override public R> listByFenceId(Long fenceId) { log.error("根据围栏id查询车辆信息失败,原因: {}", cause.getMessage()); return R.ok(new ArrayList<>()); } @Override public R> queryVehiclePositionByVin(VehiclePositionByVinDto dto) { log.error("查询车辆信息失败,原因: {}", cause.getMessage()); return R.fail(); } @Override public R findByVehicleVin(String vehicleId) { log.error("查询车辆信息失败,原因: {}", cause.getMessage()); return R.fail(); } @Override public R findByVehicleXpuId(String xpuid) { log.error("根据车辆xpuid查询车辆信息,原因: {}", cause.getMessage()); return R.fail(); } @Override public R updateVehicleStatus(UpdateVehicleStateDto updateVehicleStateDto) { log.error("更新车辆状态失败,原因: {}", cause.getMessage()); return R.fail(); } @Override public R findFleetIdByVehicleId(Long vehicleId) { log.error("查询车辆所属车队id失败,原因: {}", cause.getMessage()); return R.fail("查询车辆所属车队id失败"); } }; } }