123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- package wechat
- import (
- "github.com/gin-gonic/gin"
- "hongze/hongze_yb/controller/response"
- response2 "hongze/hongze_yb/models/response"
- userResp "hongze/hongze_yb/models/response/user"
- "hongze/hongze_yb/services/user"
- userService "hongze/hongze_yb/services/user"
- "hongze/hongze_yb/services/wechat"
- "hongze/hongze_yb/services/wx_app"
- "strconv"
- )
- func GetQrCode(c *gin.Context) {
- //wxApp := wx_app.GetWxApp()
- //response.OkData("获取成功", qrCode, c)
- }
- func GetUserInfo(c *gin.Context) {
- openid := `oN0jD1S3P-FVosLhq-YiVOXldtRo`
- userInfo, err := wechat.GetUserInfo(openid)
- if err != nil {
- response.Fail("获取失败,Err:"+err.Error(), c)
- return
- }
- response.OkData("获取成功", userInfo, c)
- }
- func GetUserSession(c *gin.Context) {
- code, _ := c.GetQuery("code")
- //c.Sho
- //fmt.Println(c.Request.)
- userInfo, err := wx_app.GetSession(code)
- if err != nil {
- response.Fail("获取失败,Err:"+err.Error(), c)
- return
- }
- response.OkData("获取成功", userInfo, c)
- }
- // Login 微信登录
- // @Tags 微信相关接口
- // @Summary 微信登录
- // @Description 微信登录
- // @Accept json
- // @Product json
- // @Param code query string true "微信code"
- // @Success 200 {object} response.LoginResp
- // @Router /wechat/login [get]
- func Login(c *gin.Context) {
- //code, _ := c.GetQuery("code")
- code := c.DefaultQuery("code", "")
- wxUserInfo, err := wx_app.GetSession(code)
- if err != nil {
- response.Fail("获取失败,Err:"+err.Error(), c)
- return
- }
- token, userId, isBind, err := user.WxLogin(wx_app.WxPlatform, wxUserInfo)
- if err != nil {
- response.Fail("登录失败,Err:"+err.Error(), c)
- return
- }
- response.OkData("获取成功", response2.LoginResp{
- UserId: userId,
- IsBind: isBind,
- Authorization: token,
- }, c)
- }
- // 消息解密请求参数
- type EncryptReq struct {
- EncryptedData string
- Iv string
- IsBind bool `json:"isBind" description:"是否需要去授权绑定"`
- }
- // GetEncryptInfo 消息解密
- // @Tags 微信相关接口
- // @Summary 消息解密
- // @Description 消息解密
- // @Accept json
- // @Product json
- // @Param encryptedData query string true "加密数据"
- // @Param iv query string true "加密算法初始向量"
- // @Success 200 {string} string "获取成功"
- // @Router /wechat/getEncryptInfo [post]
- func GetEncryptInfo(c *gin.Context) {
- var req EncryptReq
- err := c.ShouldBind(&req)
- if err != nil {
- response.Fail("参数异常", c)
- return
- }
- if req.EncryptedData == "" {
- response.Fail("参数异常:encryptedData", c)
- return
- }
- if req.Iv == "" {
- response.Fail("参数异常:iv", c)
- return
- }
- // 获取登录用户信息
- userInfo := user.GetInfoByClaims(c)
- if userInfo.RecordInfo.SessionKey == "" {
- response.Fail("请重新登录", c)
- return
- }
- decryptData, err := wx_app.GetDecryptInfo(userInfo.RecordInfo.SessionKey, req.EncryptedData, req.Iv)
- if err != nil {
- response.Fail("获取失败,Err:"+err.Error(), c)
- return
- }
- if !req.IsBind {
- response.OkData("获取成功", decryptData, c)
- return
- }
- //如果需要静默授权绑定,那么就去走静默绑定手机号流程
- openId := userInfo.OpenID
- //国际区号
- countryCode, _ := strconv.Atoi(decryptData.CountryCode)
- token, newUserInfo, err, errMsg := userService.BindWxUser(openId, decryptData.PurePhoneNumber, "", "", 3, countryCode, 1)
- if err != nil {
- if errMsg == "" {
- errMsg = "登录失败"
- }
- response.Fail(errMsg, c)
- return
- }
- response.OkData("登录成功", userResp.LoginResp{
- UserID: int(newUserInfo.UserID),
- Token: token,
- Email: newUserInfo.Email,
- Mobile: newUserInfo.Mobile,
- }, c)
- }
- // GetWxJsConf
- // @Title 微信获取签名接口
- // @Description 微信获取签名接口
- // @Param Url query string true "url地址"
- // @Success 200 {string} string "获取成功"
- // @router /getWxJsConf [get]
- func GetWxJsConf(c *gin.Context) {
- getUrl := c.DefaultQuery("Url", "")
- jsConf, err := wechat.GetJsConfig(getUrl)
- if err != nil {
- response.Fail("获取失败,Err:"+err.Error(), c)
- return
- }
- //resp := new(models.WechatSign)
- //resp.AppId = utils.WxAppId
- //resp.NonceStr = nonceString
- //resp.Timestamp = timestamp
- //resp.Url = getUrl
- //resp.Signature = signature
- //jsConf.AppID
- response.OkData("获取成功", jsConf, c)
- }
|