diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/TerminalClient.java b/tyr-api/src/main/java/cn/axzo/tyr/client/TerminalClient.java new file mode 100644 index 00000000..a48e9a30 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/TerminalClient.java @@ -0,0 +1,11 @@ +package cn.axzo.tyr.client; + +import cn.axzo.framework.auth.domain.TerminalInfo; +import cn.axzo.tyr.client.model.req.GetTerminalInfoReq; + +import java.util.Optional; + +public interface TerminalClient { + + Optional getTerminalInfo(GetTerminalInfoReq param); +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java b/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java new file mode 100644 index 00000000..568de99e --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java @@ -0,0 +1,42 @@ +package cn.axzo.tyr.client.impl; + +import cn.axzo.framework.auth.domain.TerminalInfo; +import cn.axzo.tyr.client.TerminalClient; +import cn.axzo.tyr.client.feign.TerminalApi; +import cn.axzo.tyr.client.model.req.GetTerminalInfoReq; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Optional; +import java.util.concurrent.TimeUnit; + +@Slf4j +@Component +public class TerminalClientImpl implements TerminalClient { + + @Autowired + private TerminalApi terminalApi; + + private LoadingCache> terminalInfoCache = CacheBuilder.newBuilder() + .expireAfterWrite(1, TimeUnit.DAYS) + .maximumSize(100) + .build(new CacheLoader>() { + @Override + public Optional load(String terminalCode) { + + GetTerminalInfoReq getTerminalInfoReq = GetTerminalInfoReq.builder() + .terminalCode(terminalCode) + .build(); + return Optional.ofNullable(terminalApi.getTerminalInfo(getTerminalInfoReq).getData()); + } + }); + + @Override + public Optional getTerminalInfo(GetTerminalInfoReq param) { + return terminalInfoCache.getUnchecked(param.getTerminalCode()); + } +}