From 992f39109d9d1d6bb3d7743ace2f1646190843a8 Mon Sep 17 00:00:00 2001 From: yuguojian <18126816215> Date: Wed, 18 Jun 2025 18:06:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96ip=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ip_tool/hua_chen_client.go | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/ip_tool/hua_chen_client.go b/ip_tool/hua_chen_client.go index 833568e..bcfafa0 100644 --- a/ip_tool/hua_chen_client.go +++ b/ip_tool/hua_chen_client.go @@ -19,11 +19,10 @@ type HuaChenIpClient struct { cache ICacheAdapter } -func NewHuaChenIpClient(appCode string, cache ICacheAdapter) *HuaChenIpClient { +func NewHuaChenIpClient(appCode string) *HuaChenIpClient { return &HuaChenIpClient{ AppCode: appCode, Host: "https://c2ba.api.huachen.cn", - cache: cache, } } @@ -90,13 +89,19 @@ func (h *HuaChenIpClient) GetIpInfo(ip string) (res *ApiResult, err error) { return &apiResult, nil } -func (h *HuaChenIpClient) GetIpInfoFormCache(ctx context.Context, ip string, ttl time.Duration) (res *ApiResult, err error) { - getCache, err := h.cache.Get(ctx, h.ipKey(ip)) - if err != nil { - return nil, errors.Wrapf(err, "获取缓存失败,ip:%s", ip) - } - if getCache != nil { - return getCache, nil +func (h *HuaChenIpClient) Set(cache ICacheAdapter) { + h.cache = cache +} + +func (h *HuaChenIpClient) GetIpInfoFormCache(ctx context.Context, ip string, opt ...time.Duration) (res *ApiResult, err error) { + if h.cache != nil { + res, err = h.cache.Get(ctx, h.ipKey(ip)) + if err != nil { + return nil, errors.Wrapf(err, "获取缓存失败,ip:%s", ip) + } + if res != nil { + return res, nil + } } res, err = h.GetIpInfo(ip) if err != nil { @@ -109,9 +114,11 @@ func (h *HuaChenIpClient) GetIpInfoFormCache(ctx context.Context, ip string, ttl return nil, errors.Wrapf(err, "无法将IP信息转换为JSON,ip:%s", ip) } - err = h.cache.Set(ctx, h.ipKey(ip), string(infoJson), ttl) - if err != nil { - return nil, errors.Wrapf(err, "缓存ip:%s信息失败,", ip) + if len(opt) == 0 { + err = h.cache.Set(ctx, h.ipKey(ip), string(infoJson), opt[0]) + if err != nil { + return nil, errors.Wrapf(err, "缓存ip:%s信息失败,", ip) + } } return }