package com.yanzuoguang.log;

import com.yanzuoguang.util.base.CollectionString;
import com.yanzuoguang.util.base.ColorUtils;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 日志默认处理服务
 *
 * @author 颜佐光
 */
@Component
public class LogFeignDefault implements LogFeignBase {
    /**
     * 保存日志对象
     *
     * @param log 需要保存的日志对象
     */
    @Override
    public void save(LogInfoVo log) {
    }

    @Override
    public void notifyNotHandle(List<LogInfoVo> notHandles) {
    }

    @Override
    public void notifyTodayCount(LogCountResult todayResult) {
        // 打印日志
        String tag = todayResult.getTodayTime() + "执行次数:";
        String collectionString = CollectionString.getCollectionString(tag, todayResult.getList(), new CollectionString.Handle<LogUrlCountVo>() {
            @Override
            public void start(StringBuilder sb, LogUrlCountVo row) {
                if (row.getLevel() == -1 || row.getLevel() >= 5000) {
                    sb.append(ColorUtils.Color.RED);
                } else if (row.getLevel() >= 1000) {
                    sb.append(ColorUtils.Color.YELLOW);
                } else if (row.getLevel() < 100) {
                    sb.append(ColorUtils.Color.GREEN);
                }
            }

            @Override
            public void end(StringBuilder sb, LogUrlCountVo row) {
                if (row.getLevel() == -1 || row.getLevel() >= 5000) {
                    sb.append(ColorUtils.Color.RESET);
                } else if (row.getLevel() >= 1000) {
                    sb.append(ColorUtils.Color.RESET);
                } else if (row.getLevel() < 100) {
                    sb.append(ColorUtils.Color.RESET);
                }
            }

            @Override
            public String columnName(StringBuilder sb, String name) {
                return name;
            }

            @Override
            public String columnValue(StringBuilder sb, LogUrlCountVo row, String name, String value) {
                return value;
            }
        });
        System.out.println(collectionString);
    }
}