123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package controllers
- import (
- "encoding/json"
- "eta/eta_mini_api/models"
- "eta/eta_mini_api/models/request"
- "eta/eta_mini_api/models/response"
- "eta/eta_mini_api/services/wx_app"
- "eta/eta_mini_api/utils"
- "fmt"
- "strconv"
- "time"
- )
- type WechatController struct {
- BaseCommonController
- }
- // Login
- // @Title 微信登录
- // @Description 微信登录
- // @Param request body models.LoginReq true "type json string"
- // @Success 200 {object} models.LoginResp
- // @router /login [post]
- func (this *WechatController) Login() {
- br := new(models.BaseResponse).Init()
- defer func() {
- if err := recover(); err != nil {
- fmt.Println(err)
- }
- this.Data["json"] = br
- this.ServeJSON()
- }()
- var req request.WeChatLoginReq
- err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
- if err != nil {
- br.Msg = "参数解析失败"
- br.ErrMsg = "参数解析失败,Err:" + err.Error()
- return
- }
- if req.Code == "" {
- br.Msg = "授权码不存在"
- return
- }
- userInfo, err := wx_app.GetSession(req.Code)
- if err != nil {
- br.Msg = "登录失败,请重新尝试"
- br.ErrMsg = "用户信息获取失败,系统错误,Err:" + err.Error()
- return
- }
- session, err := models.GetWxSessionByOpenId(userInfo.OpenID)
- if err != nil && err.Error() != utils.ErrNoRow() {
- br.Msg = "登录失败,请重新尝试"
- br.ErrMsg = "用户信息获取失败,系统错误,Err:" + err.Error()
- return
- }
- if session == nil {
- session = &models.WxSession{
- OpenId: userInfo.OpenID,
- UnionId: userInfo.UnionID,
- CreateTime: time.Now(),
- }
- insertId, er := session.Insert()
- session.WxSessionId = int(insertId)
- if er != nil {
- br.Msg = "用户登录失败"
- br.ErrMsg = "用户登录获取失败,系统错误,Err:" + er.Error()
- return
- }
- }
- var token string
- timeUnix := time.Now().Unix()
- timeUnixStr := strconv.FormatInt(timeUnix, 10)
- token = utils.MD5(session.OpenId) + utils.MD5(timeUnixStr)
- session.AccessToken = token
- session.LastUpdateTime = time.Now()
- err = session.Update([]string{"access_token", "last_update_time"})
- if err != nil {
- br.Msg = "微信登录失败"
- br.ErrMsg = "微信登录失败,更新用户信息失败:" + err.Error()
- return
- }
- token = session.AccessToken
- resp := new(response.WeChatLoginResp)
- resp.Authorization = token
- br.Data = resp
- br.Msg = "登录成功"
- br.Success = true
- br.Ret = 200
- }
|