package com.ruoyi.account.api.factory; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.dto.VinManagementQueryDTO; import com.ruoyi.account.api.feignClient.VinManagementClient; import com.ruoyi.account.api.model.TVinManagement; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.List; /** * VIN 管理服务降级处理 */ @Component public class VinManagementFallbackFactory implements FallbackFactory { private static final Logger log = LoggerFactory.getLogger(VinManagementFallbackFactory.class); @Override public VinManagementClient create(Throwable throwable) { log.error("VIN 管理服务调用失败:{}", throwable.getMessage()); return new VinManagementClient() { @Override public R> getVinIdsByAppUserId(Long appUserId) { return R.fail("VIN 管理服务调用失败:" + throwable.getMessage()); } @Override public R getVinByCode(String vin) { return R.fail("根据VIN码查询记录失败:" + throwable.getMessage()); } @Override public R> getVinByIds(List ids) { return R.fail("根据ID批量查询VIN记录失败:" + throwable.getMessage()); } @Override public R> getVinPageByFleet(VinManagementQueryDTO query) { return R.fail("按车队分页查询VIN记录失败:" + throwable.getMessage()); } @Override public R> listByCompany(Integer companyId) { return R.fail("按公司查询VIN记录失败:" + throwable.getMessage()); } @Override public R lockBalance(Long vinId, BigDecimal amount) { return R.fail("锁定VIN余额失败:" + throwable.getMessage()); } @Override public R settleBalance(Long vinId, BigDecimal lockedAmount, BigDecimal actualAmount) { return R.fail("结算VIN余额失败:" + throwable.getMessage()); } @Override public R unlockBalance(Long vinId, BigDecimal amount) { return R.fail("释放VIN锁定金额失败:" + throwable.getMessage()); } }; } }