package com.xiaopeng.api.factory.account; import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO; import com.xiaopeng.api.dto.statistics.UserStatisticsDTO; import com.xiaopeng.api.feignClient.account.XpAppUserClient; import com.xiaopeng.api.model.account.XpAppUser; 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 XpAppUserClientFallbackFactory implements FallbackFactory { @Override public XpAppUserClient create(Throwable cause) { log.error("用户服务调用失败: {}", cause.getMessage()); return new XpAppUserClient() { @Override public R getUserStatistics(StatisticsQueryDTO query) { log.error("获取用户统计数据失败,原因: {}", cause.getMessage()); // 降级返回空数据 UserStatisticsDTO dto = new UserStatisticsDTO(); dto.setTotalCount(0L); dto.setNewCount(0L); dto.setDailyCountList(new ArrayList<>()); return R.ok(dto); } @Override public R> listByIds(List ids) { log.error("批量查询用户信息失败,原因: {}", cause.getMessage()); // 降级返回空列表 return R.ok(new ArrayList<>()); } @Override public R queryOperationsUserById(Long id) { log.error("根据ID查询用户信息失败,原因: {}", cause.getMessage()); return R.fail("根据ID查询用户信息失败,"+cause.getMessage()); } }; } }