liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.xiaopeng.api.factory.vehicleConvoy;
 
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
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.api.vo.vehicleConvoy.VehicleDoorStatusVo;
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.Collections;
import java.util.List;
 
/**
 * 车辆Feign客户端降级工厂
 *
 * @author mitao
 */
@Slf4j
@Component
public class XpVehicleClientFallbackFactory implements FallbackFactory<XpVehicleClient> {
 
    @Override
    public XpVehicleClient create(Throwable cause) {
        log.error("车辆服务调用失败: {}", cause.getMessage());
        return new XpVehicleClient() {
            @Override
            public R<List<XpVehicle>> listByIds(List<Long> ids) {
                log.error("批量查询车辆信息失败,原因: {}", cause.getMessage());
                // 降级返回空列表
                return R.ok(new ArrayList<>());
            }
 
            @Override
            public R<List<XpVehicle>> listVehicle() {
                log.error("获取所有车辆信息失败,原因: {}", cause.getMessage());
                // 降级返回空列表
                return R.ok(new ArrayList<>());
            }
 
            @Override
            public R<XpVehicle> queryById(Long id) {
                log.error("查询车辆信息失败,原因: {}", cause.getMessage());
                return R.ok(null);
            }
 
            @Override
            public R<String> updateVehicleById(XpVehicle xpVehicle) {
                return R.fail("修改车辆信息失败:" + cause.getMessage());
            }
 
            @Override
            public R<List<XpVehicle>> listByPlateNumber(String plateNumber) {
                log.error("根据车牌号查询车辆信息失败,原因: {}", cause.getMessage());
                return R.ok(null);
            }
 
            @Override
            public R<List<XpVehicle>> listByFenceId(Long fenceId) {
                log.error("根据围栏id查询车辆信息失败,原因: {}", cause.getMessage());
                return R.ok(new ArrayList<>());
            }
 
            @Override
            public R<List<XpVehicle>> listAllByFenceId(Long fenceId) {
                log.error("根据围栏id查询所有车辆信息失败,原因: {}", cause.getMessage());
                return R.ok(new ArrayList<>());
            }
 
            @Override
            public R<List<String>> queryVehiclePositionByVin(VehiclePositionByVinDto dto) {
                log.error("查询车辆信息失败,原因: {}", cause.getMessage());
                return R.fail();
            }
 
            @Override
            public R<XpVehicle> findByVehicleVin(String vehicleId) {
                log.error("查询车辆信息失败,原因: {}", cause.getMessage());
                return R.fail();
            }
 
            @Override
            public R<XpVehicle> 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<Long> findFleetIdByVehicleId(Long vehicleId) {
                log.error("查询车辆所属车队id失败,原因: {}", cause.getMessage());
                return R.fail("查询车辆所属车队id失败");
            }
 
 
            @Override
            public R<Boolean> getVehicleTrunkOpenStatus(Long uid, Long id) {
                log.error("获取车辆后备箱开关状态失败,原因: {}", cause.getMessage());
                return R.fail("获取车辆后备箱开关状态失败:" + cause.getMessage());
            }
 
            @Override
            public R<List<XpVehicle>> getServiceVehicleList(ServiceVehicleListDto dto) {
                log.error("获取服务车辆列表失败,原因: {}", cause.getMessage());
                return R.fail("获取服务车辆列表失败:" + cause.getMessage());
            }
 
 
            @Override
            public R<VehicleDoorStatusVo> getVehicleDoorStatus(Long orderId) {
                log.error("获取车辆四门三盖状态失败,原因: {}", cause.getMessage());
                return R.fail("获取车辆四门三盖状态失败:" + cause.getMessage());
            }
 
            @Override
            public R<XpVehicle> getVehicleByPlateNumber(String plateNumber, Integer officialPartnerId) {
                log.error("根据车牌号查询车辆信息失败,原因: {}", cause.getMessage());
                return R.fail("根据车牌号查询车辆信息失败:" + cause.getMessage());
            }
        };
    }
}