|
@@ -1,15 +1,5 @@
|
|
|
package models
|
|
|
|
|
|
-import (
|
|
|
- "encoding/json"
|
|
|
- "fmt"
|
|
|
- "hongze/hongze_cygxzs/utils"
|
|
|
- "rdluck_tools/http"
|
|
|
- "rdluck_tools/orm"
|
|
|
- "strings"
|
|
|
- "time"
|
|
|
-)
|
|
|
-
|
|
|
type WxLoginReq struct {
|
|
|
Code string `description:"微信code"`
|
|
|
}
|
|
@@ -20,65 +10,19 @@ type WxToken struct {
|
|
|
Id int64
|
|
|
}
|
|
|
|
|
|
-func GetWxAccessToken() (accessTokenStr string, err error) {
|
|
|
- o := orm.NewOrm()
|
|
|
- sql := `SELECT * FROM wx_token LIMIT 1`
|
|
|
- wxToken := new(WxToken)
|
|
|
- err = o.Raw(sql).QueryRow(&wxToken)
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
- return
|
|
|
- }
|
|
|
- //Token不存在
|
|
|
- if wxToken == nil {
|
|
|
- fmt.Println("wxToken is empty")
|
|
|
- accessToken, err := GetWxToken()
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
- if accessToken.AccessToken != "" {
|
|
|
- expiresIn := time.Now().Add(time.Duration(accessToken.ExpiresIn) * time.Second).Unix()
|
|
|
- addSql := "insert into wx_token (access_token,expires_in) values (?,?)"
|
|
|
- _, err = o.Raw(addSql, accessToken.AccessToken, expiresIn).Exec()
|
|
|
- accessTokenStr = accessToken.AccessToken
|
|
|
- }
|
|
|
- return accessTokenStr, err
|
|
|
- } else {
|
|
|
- //判断token是否过期
|
|
|
- if time.Now().Unix() > wxToken.ExpiresIn {
|
|
|
- accessToken, err := GetWxToken()
|
|
|
- fmt.Println(accessToken)
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
- if accessToken.AccessToken != "" {
|
|
|
- expiresIn := time.Now().Add(time.Duration(accessToken.ExpiresIn) * time.Second).Unix()
|
|
|
- updateSql := "update wx_token set access_token = ?,expires_in = ? "
|
|
|
- _, err = o.Raw(updateSql, accessToken.AccessToken, expiresIn).Exec()
|
|
|
- accessTokenStr = accessToken.AccessToken
|
|
|
- fmt.Println("更新 TOKEN:", err)
|
|
|
- }
|
|
|
- return accessTokenStr, err
|
|
|
- } else {
|
|
|
- return wxToken.AccessToken, nil
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
+type WxTicket struct {
|
|
|
+ Errcode int `json:"errcode"`
|
|
|
+ Errmsg string `json:"errmsg"`
|
|
|
+ Ticket string `json:"ticket"`
|
|
|
}
|
|
|
|
|
|
-func GetWxToken() (item *WxAccessToken, err error) {
|
|
|
- getUrl := "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + utils.WxPublicAppId + "&secret=" + utils.WxPublicAppSecret
|
|
|
- result, err := http.Get(getUrl)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- err = json.Unmarshal(result, &item)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("GetWxToken Unmarshal Err:%s", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- if item.Errmsg != "" {
|
|
|
- }
|
|
|
- return
|
|
|
+type WechatSign struct {
|
|
|
+ AppId string
|
|
|
+ NonceStr string
|
|
|
+ Timestamp int64
|
|
|
+ Url string
|
|
|
+ Signature string
|
|
|
+ RawString string
|
|
|
}
|
|
|
|
|
|
type WxAccessToken struct {
|
|
@@ -101,30 +45,6 @@ type WxUsers struct {
|
|
|
NextOpenid string
|
|
|
}
|
|
|
|
|
|
-func WxUsersGet() (openIdStr string) {
|
|
|
- accessToken, err := GetWxAccessToken()
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("GetWxAccessToken Err:%s", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- url := "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + accessToken
|
|
|
- result, err := http.Get(url)
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("GetUser Err:", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- item := new(WxUsers)
|
|
|
- err = json.Unmarshal(result, &item)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("Unmarshal Err:", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- openIdStr = strings.Join(item.Data.Openid, "','")
|
|
|
- openIdStr = "'" + openIdStr + "'"
|
|
|
- utils.FileLog.Info("openIdStr:%s", openIdStr)
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
type WxCheckContentJson struct {
|
|
|
AccessToken string `json:"access_token"`
|
|
|
ExpiresIn int `json:"expires_in"`
|
|
@@ -135,27 +55,3 @@ type WxCheckContentJson struct {
|
|
|
Errcode int `json:"errcode"`
|
|
|
Errmsg string `json:"errmsg"`
|
|
|
}
|
|
|
-
|
|
|
-func WxCheckContent(content string) {
|
|
|
- accessToken, err := GetWxAccessToken()
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("GetWxAccessToken Err:%s", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- url := "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken
|
|
|
- fmt.Println(url)
|
|
|
- result, err := http.Post(url, content)
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("GetUser Err:", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- item := new(WxCheckContentJson)
|
|
|
- err = json.Unmarshal(result, &item)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("Unmarshal Err:", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- fmt.Println(result)
|
|
|
- return
|
|
|
-}
|