package com.bonus.system.api.factory;

import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.api.domain.SysLogsVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import com.bonus.common.core.domain.R;
import com.bonus.system.api.RemoteLogService;
import com.bonus.system.api.domain.SysLogininfor;
import com.bonus.system.api.domain.SysOperLog;

import java.util.HashMap;
import java.util.Map;

/**
 * 日志服务降级处理
 * 
 * @author bonus
 */
@Component
public class RemoteLogFallbackFactory implements FallbackFactory<RemoteLogService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);

    @Override
    public RemoteLogService create(Throwable throwable)
    {
        log.error("日志服务调用失败:{}", throwable.getMessage());
        return new RemoteLogService()
        {
//            @Override
//            public R<Boolean> saveLog(SysOperLog sysOperLog, String source)
//            {
//                return R.fail("保存操作日志失败:" + throwable.getMessage());
//            }

            @Override
            public R<Boolean> addLogs(SysLogsVo sysLogsVo, String source) throws Exception {
                return R.fail("保存操作日志失败:" + throwable.getMessage());
            }

            @Override
            public Map<String,String> getLogsModule(SysLogsVo sysLogsVo, String source) throws Exception {
                Map<String,String> map= Maps.newHashMap();
                map.put("code","400");
                map.put("mgs","查询日志失败:throwable.getMessage()");
                return map;
            }

            @Override
            public R<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source)
            {
                return R.fail("保存登录日志失败:" + throwable.getMessage());
            }
        };

    }
}
