提交 a2ae7f16 authored 作者: 张立波's avatar 张立波

淘特

上级 5d7cc674
......@@ -8,9 +8,7 @@ import (
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/errors/gerror"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/os/gtimer"
"github.com/gogf/gf/util/gconv"
"net/url"
"sort"
......@@ -32,10 +30,6 @@ const Host = "https://open.huoju6.com/openapi/param2/1/com.huoju6.open/"
func New(req *Config) {
server = req
gtimer.Add(time.Hour, func() {
var ctx = gctx.New()
_, _ = server.accessToken(ctx)
})
return
}
......@@ -78,7 +72,7 @@ func sign(method string, req g.Map) (err error) {
}
func (s *Config) Post(ctx context.Context, method string, params g.Map) (str string, err error) {
params["access_token"], err = s.GetAccessToken(ctx)
params["access_token"], err = AccessToken(ctx)
if err != nil {
return
}
......@@ -116,7 +110,7 @@ func Post(ctx context.Context, method string, params g.Map) (str string, err err
}
func (s *Config) Get(ctx context.Context, method string, params g.Map) (str string, err error) {
params["access_token"], err = s.GetAccessToken(ctx)
params["access_token"], err = AccessToken(ctx)
if err != nil {
return
}
......@@ -157,7 +151,7 @@ func Get(ctx context.Context, method string, params g.Map) (str string, err erro
}
func (s *Config) GetAccessToken(ctx context.Context) (res string, err error) {
func AccessToken(ctx context.Context) (res string, err error) {
var conn = g.Redis().Conn()
defer func() {
_ = conn.Close()
......@@ -165,17 +159,19 @@ func (s *Config) GetAccessToken(ctx context.Context) (res string, err error) {
_, _ = conn.DoVar("SELECT", 10)
cache, _ := conn.DoVar("HGETALL", CacheKey)
if cache.IsEmpty() {
err = gerror.New("获取token 失败")
g.Log().Ctx(ctx).Cat(PkgName).Line(true).Info("获取token失败")
err = gerror.New("获取token失败")
return
}
var result *AuthTokenRes
_ = gjson.New(cache).Scan(&result)
if result == nil || result.AccessToken == "" {
err = gerror.New("获取token 失败")
g.Log().Ctx(ctx).Cat(PkgName).Line(true).Info("获取token失败")
err = gerror.New("获取token失败")
return
}
if result.AccessTokenExpireTime < gtime.TimestampMilli() {
result, err = s.accessToken(ctx)
result, err = RefreshToken(ctx)
if err != nil {
return
}
......@@ -184,8 +180,8 @@ func (s *Config) GetAccessToken(ctx context.Context) (res string, err error) {
return
}
//accessToken 刷新
func (s *Config) accessToken(ctx context.Context) (res *AuthTokenRes, err error) {
//RefreshToken 刷新
func RefreshToken(ctx context.Context) (res *AuthTokenRes, err error) {
var conn = g.Redis().Conn()
defer func() {
_ = conn.Close()
......@@ -193,7 +189,8 @@ func (s *Config) accessToken(ctx context.Context) (res *AuthTokenRes, err error)
_, _ = conn.DoVar("SELECT", 10)
cache, _ := conn.DoVar("HGETALL", CacheKey)
if cache.IsEmpty() {
err = gerror.New("获取token 失败")
g.Log().Ctx(ctx).Cat(PkgName).Line(true).Info("获取token失败")
err = gerror.New("获取token失败")
return
}
_ = gjson.New(cache).Scan(&res)
......@@ -205,7 +202,8 @@ func (s *Config) accessToken(ctx context.Context) (res *AuthTokenRes, err error)
return
}
if res.Code != "success" {
err = gerror.New("获取token 失败")
g.Log().Ctx(ctx).Cat(PkgName).Line(true).Info("获取token失败")
err = gerror.New("获取token失败")
return
}
_, _ = conn.Do("HMSET", CacheKey, "accessToken", res.AccessToken, "accessTokenExpireTime", res.AccessTokenExpireTime)
......
......@@ -12,8 +12,14 @@ type logistics struct {
var Logistics = logistics{}
type LogisticsTraceRes struct {
Result struct {
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
ErrCode string `json:"errCode"`
Result []struct {
CompanyList []struct {
BrandCode string `json:"brandCode"`
CompanyName string `json:"companyName"`
} `json:"companyList"`
DetailList []struct {
Action string `json:"action"`
GmtCreate string `json:"gmtCreate"`
......@@ -38,10 +44,6 @@ type LogisticsTraceRes struct {
StatusDesc string `json:"statusDesc"`
} `json:"status"`
} `json:"result"`
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
ErrCode string `json:"errCode"`
} `json:"result"`
}
//Trace 物流轨迹
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论