新增微信公众平台对接
This commit is contained in:
@@ -10,4 +10,5 @@ type Api struct {
|
||||
// version1 v1版本
|
||||
type version1 struct {
|
||||
UserDoctor v1.UserDoctor // 角色数据
|
||||
WeChat v1.WeChat // 微信数据
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package v1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
v1 "hospital-open-api/api/requests/v1"
|
||||
"hospital-open-api/api/responses"
|
||||
"hospital-open-api/config"
|
||||
"hospital-open-api/extend/weChat/Scheme"
|
||||
"hospital-open-api/global"
|
||||
"hospital-open-api/utils"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type WeChat struct{}
|
||||
|
||||
// GetScheme 获取页面加密scheme码
|
||||
func (r *WeChat) GetScheme(c *gin.Context) {
|
||||
WeChatRequest := v1.WeChatRequest{}
|
||||
req := WeChatRequest.GetScheme
|
||||
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 参数验证
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 验证path参数
|
||||
if strings.Count(req.Path, "/") != 3 || !strings.HasPrefix(req.Path, "/") || strings.HasSuffix(req.Path, "/") {
|
||||
responses.FailWithMessage("path格式错误", c)
|
||||
return
|
||||
}
|
||||
|
||||
// 验证query参数
|
||||
// 定义正则表达式,匹配 k1=v1&k2=v2 这种格式
|
||||
pattern := `^([a-zA-Z0-9_-]+=[a-zA-Z0-9_-]+&)*([a-zA-Z0-9_-]+=[a-zA-Z0-9_-]+)$`
|
||||
reg := regexp.MustCompile(pattern)
|
||||
res := reg.MatchString(req.Query)
|
||||
if !res {
|
||||
responses.FailWithMessage("query格式错误", c)
|
||||
return
|
||||
}
|
||||
|
||||
// 判断环境
|
||||
envVersion := "trial"
|
||||
if config.C.Env == "prod" {
|
||||
envVersion = "release"
|
||||
}
|
||||
|
||||
fmt.Println(req.Query)
|
||||
|
||||
// 构建请求数据
|
||||
JumpWxaData := &Scheme.GetSchemeJumpWxaRequest{
|
||||
Path: req.Path,
|
||||
Query: req.Query,
|
||||
EnvVersion: envVersion,
|
||||
}
|
||||
|
||||
GetSchemeRequest := &Scheme.GetSchemeRequest{
|
||||
JumpWxa: JumpWxaData,
|
||||
ExpireType: 1,
|
||||
ExpireTime: 0,
|
||||
ExpireInterval: req.ExpireInterval,
|
||||
}
|
||||
|
||||
openLink, err := GetSchemeRequest.GetScheme(1)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
responses.OkWithData(openLink, c)
|
||||
}
|
||||
Reference in New Issue
Block a user