package com.yami.trading.init.cache; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yami.trading.bean.model.RiskClient; import com.yami.trading.service.user.RiskClientService; import com.yami.trading.security.common.util.RiskClientUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * 系统启动时,加载风控配置信息到内存 * * @author caster * @since 2023/12/04 **/ @Service @Slf4j public class LoadRiskClientCache { @Autowired private RiskClientService riskClientService; public void loadData() { log.info("------> LoadRiskClientCache.loadData 开始将风控配置数据加载到缓存..."); int pageNum = 1; int pageSize = 100; try { Map allRiskClientMap = new ConcurrentHashMap<>(); while (true) { Page pageData = riskClientService.pageListRiskClient(1, pageNum, pageSize); List pageList = pageData.getRecords(); if (CollectionUtil.isEmpty(pageList)) { break; } for (RiskClient oneRiskClient : pageList) { if (oneRiskClient.getStatus() != 1) { continue; } allRiskClientMap.put(oneRiskClient.getType() + ":" + oneRiskClient.getClientType() + ":" + oneRiskClient.getClientKey(), oneRiskClient); } pageNum++; } RiskClientUtil.initCache(allRiskClientMap); log.info("------> LoadRiskClientCache.loadData 完成风控配置的加载"); } catch (Exception e) { log.error("------> LoadRiskClientCache.loadData 执行 loadData 方法报错: ", e); } } }