package com.xiaopeng.api.factory.order;
|
|
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
|
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
|
import com.xiaopeng.api.feignClient.order.XpOrderClient;
|
import com.xiaopeng.api.model.order.XpOrder;
|
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.math.BigDecimal;
|
import java.util.ArrayList;
|
|
/**
|
* 订单Feign客户端降级工厂
|
*
|
* @author mitao
|
*/
|
@Slf4j
|
@Component
|
public class XpOrderClientFallbackFactory implements FallbackFactory<XpOrderClient> {
|
|
@Override
|
public XpOrderClient create(Throwable cause) {
|
log.error("订单服务调用失败: {}", cause.getMessage());
|
return new XpOrderClient() {
|
@Override
|
public R<OrderStatisticsDTO> getOrderStatistics(StatisticsQueryDTO query) {
|
log.error("获取订单统计数据失败,原因: {}", cause.getMessage());
|
// 降级返回空数据
|
OrderStatisticsDTO dto = new OrderStatisticsDTO();
|
dto.setTotalCount(0L);
|
dto.setNewCount(0L);
|
dto.setTotalMoney(BigDecimal.ZERO);
|
dto.setTotalIncome(BigDecimal.ZERO);
|
dto.setDailyCountList(new ArrayList<>());
|
return R.ok(dto);
|
}
|
|
@Override
|
public R<Long> hasUnPaodOrder(String uid) {
|
log.error("获取进行中订单失败,原因: {}", cause.getMessage());
|
return R.ok(0l);
|
}
|
|
@Override
|
public R<XpOrder> queryOrderById(Long orderId) {
|
log.error("根据订单id查询订单信息查询失败,原因: {}", cause.getMessage());
|
return R.fail("根据订单id查询订单信息查询失败" + cause.getMessage());
|
}
|
|
@Override
|
public R<Long> addOrder(XpOrder xpOrder) {
|
log.error("添加订单失败,原因: {}", cause.getMessage());
|
return R.fail();
|
}
|
|
@Override
|
public R<?> cancelOrder(String orderId) {
|
log.error("取消订单失败,原因: {}", cause.getMessage());
|
return R.fail();
|
}
|
};
|
}
|
}
|