diff --git a/api/controller/v1/weChat.go b/api/controller/v1/weChat.go index dafd55d..128cde6 100644 --- a/api/controller/v1/weChat.go +++ b/api/controller/v1/weChat.go @@ -1,7 +1,7 @@ package v1 import ( - "fmt" + "context" "github.com/gin-gonic/gin" v1 "hospital-open-api/api/requests/v1" "hospital-open-api/api/responses" @@ -53,7 +53,13 @@ func (r *WeChat) GetScheme(c *gin.Context) { envVersion = "release" } - fmt.Println(req.Query) + // 获取缓存 + redisKey := "c:official_account.scheme." + req.Path + "." + req.Query + scheme, _ := global.Redis.Get(context.Background(), redisKey).Result() + if scheme != "" { + responses.OkWithData(scheme, c) + return + } // 构建请求数据 JumpWxaData := &Scheme.GetSchemeJumpWxaRequest{ @@ -66,7 +72,7 @@ func (r *WeChat) GetScheme(c *gin.Context) { JumpWxa: JumpWxaData, ExpireType: 1, ExpireTime: 0, - ExpireInterval: req.ExpireInterval, + ExpireInterval: 10, } openLink, err := GetSchemeRequest.GetScheme(1) diff --git a/api/requests/v1/WeChat.go b/api/requests/v1/WeChat.go index 1167871..b24e240 100644 --- a/api/requests/v1/WeChat.go +++ b/api/requests/v1/WeChat.go @@ -6,7 +6,6 @@ type WeChatRequest struct { // GetScheme 获取页面加密scheme码 type GetScheme struct { - Path string `json:"path" form:"path" validate:"required" label:"页面路径"` - Query string `json:"query" form:"query" validate:"required" label:"参数"` - ExpireInterval int `json:"expire_interval" form:"expire_interval" validate:"required" label:"有效天数"` + Path string `json:"path" form:"path" validate:"required" label:"页面路径"` + Query string `json:"query" form:"query" validate:"required" label:"参数"` } diff --git a/extend/weChat/Scheme/Scheme.go b/extend/weChat/Scheme/Scheme.go index 26129a1..e605ce6 100644 --- a/extend/weChat/Scheme/Scheme.go +++ b/extend/weChat/Scheme/Scheme.go @@ -1,11 +1,14 @@ package Scheme import ( + "context" "encoding/json" "errors" "fmt" "hospital-open-api/extend/weChat" + "hospital-open-api/global" "strings" + "time" ) // GetSchemeJumpWxaRequest 跳转到的目标小程序信息 @@ -74,5 +77,9 @@ func (r *GetSchemeRequest) GetScheme(userType int) (string, error) { return "", errors.New("失败") } + // 加入缓存 + redisKey := "c:official_account.scheme." + r.JumpWxa.Path + "." + r.JumpWxa.Query + global.Redis.Set(context.Background(), redisKey, GetSchemeResponse.OpenLink, 60*60*24*10*time.Second) + return GetSchemeResponse.OpenLink, nil }