123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- package controllers
- import (
- "encoding/json"
- "fmt"
- "github.com/medivhzhan/weapp/v2"
- adminResp "hongze/hongze_mobile_admin/models/response/admin"
- "hongze/hongze_mobile_admin/models/response/wechat"
- "hongze/hongze_mobile_admin/services"
- "hongze/hongze_mobile_admin/utils"
- "strconv"
- )
- type WeChatCommon struct {
- BaseNotAuth
- }
- // WeChatLogin
- // @Title 微信登录接口
- // @Description 微信登录接口
- // @Param Code query string true "微信唯一编码code"
- // @Success 200 {object} wechat.WxLoginResp
- // @router /login [get]
- func (c *WeChatCommon) WeChatLogin() {
- code := c.GetString("Code")
- fmt.Println("code:", code)
- utils.FileLog.Info("WechatLogin code:%s", code)
- item, err := services.WxGetUserOpenIdByCode(code)
- if err != nil {
- c.FailWithMessage(fmt.Sprintf("%v", err), fmt.Sprintf("%v", err))
- return
- }
- if item.Errcode != 0 {
- c.FailWithMessage("获取用户信息失败", "获取access_token 失败 errCode:"+strconv.Itoa(item.Errcode)+" ;errMsg:"+item.Errmsg)
- }
- openId := item.Openid
- if openId == "" {
- c.FailWithMessage("获取用户信息失败", "获取openid失败,openid:"+item.Openid)
- }
- accessToken, err := services.WxGetAccessToken()
- if err != nil {
- c.FailWithMessage("获取用户信息失败", "获取access_token失败,err:"+err.Error())
- }
- //获取用户信息
- wxUserInfo, err := services.WxGetUserInfo(openId, accessToken)
- if err != nil {
- c.FailWithMessage("获取用户信息失败", "获取微信用户信息失败,Err:"+err.Error())
- }
- if wxUserInfo.Errcode != 0 {
- userInfoJson, _ := json.Marshal(wxUserInfo)
- c.FailWithMessage("登录失败", "获取用户信息失败,err:"+string(userInfoJson))
- return
- }
- token, adminWx, err := services.WxLogin(utils.WxPlatform, item, wxUserInfo)
- if err != nil {
- c.FailWithMessage("微信登录失败", "微信登录失败,err:"+err.Error())
- return
- }
- userInfo := adminResp.LoginResp{
- RealName: adminWx.RealName,
- AdminName: adminWx.AdminName,
- RoleName: adminWx.RoleName,
- RoleTypeCode: adminWx.RoleTypeCode,
- AdminId: adminWx.AdminId,
- DepartmentName: adminWx.DepartmentName,
- GroupName: adminWx.GroupName,
- }
- userInfo.AdminId = adminWx.AdminId
- var productName string
- productId := services.GetProductId(adminWx.RoleTypeCode)
- if productId == 1 {
- productName = utils.COMPANY_PRODUCT_FICC_NAME
- } else if productId == 2 {
- productName = utils.COMPANY_PRODUCT_RAI_NAME
- } else {
- productName = "admin"
- }
- userInfo.ProductName = productName
- userInfo.Authority = adminWx.Authority
- resp := wechat.WxLoginResp{
- AdminId: adminWx.AdminId,
- Code: 0,
- Authorization: token,
- Headimgurl: adminWx.Headimgurl,
- RealName: adminWx.RealName,
- UserInfo: userInfo,
- }
- //登录日志
- {
- returnResult, err := json.Marshal(resp)
- if err != nil {
- utils.FileLog.Info(c.Ctx.Input.URI() + " Err:%s" + err.Error())
- }
- utils.FileLog.Info(c.Ctx.Input.URI()+" code: %s , return data: %s", code, string(returnResult))
- }
- c.OkDetailed(resp, "登录成功")
- }
- // WxAppLogin
- // @Title 微信登录接口
- // @Description 微信登录接口
- // @Param Code query string true "微信唯一编码code"
- // @Success 200 {object} wechat.WxLoginResp
- // @router /wxapp/login [get]
- func (c *WeChatCommon) WxAppLogin() {
- code := c.GetString("Code")
- if code == "" {
- c.FailWithMessage("参数错误", "Code 为空")
- return
- }
- wxInfo, err := weapp.Login(utils.WxAppId2, utils.WxAppSecret2, code)
- if err != nil {
- c.FailWithMessage("获取用户信息失败", "获取用户信息失败,Err:"+err.Error())
- return
- }
- if err = wxInfo.GetResponseError(); err != nil {
- c.FailWithMessage("获取用户信息失败", "获取用户信息失败,code:"+strconv.Itoa(wxInfo.ErrCode)+",msg:"+wxInfo.ErrMSG)
- return
- }
- item := &services.WxAccessToken{
- //AccessToken :wxInfo.
- //ExpiresIn :wxInfo.,
- //RefreshToken : wxInfo,
- Openid: wxInfo.OpenID,
- Unionid: wxInfo.UnionID,
- //Scope :wxInfo,
- Errcode: wxInfo.ErrCode,
- Errmsg: wxInfo.ErrMSG,
- }
- wxUserInfo := new(services.WxUserInfo)
- wxUserInfo.Unionid = wxInfo.UnionID
- wxUserInfo.Openid = wxInfo.OpenID
- wxUserInfo.Unionid = wxInfo.UnionID
- wxUserInfo.Errcode = wxInfo.ErrCode
- wxUserInfo.Errmsg = wxInfo.ErrMSG
- wxUserInfo.SessionKey = wxInfo.SessionKey
- fmt.Println("openId", wxInfo.OpenID)
- fmt.Println("unionId", wxInfo.UnionID)
- token, adminWx, err := services.WxLogin(utils.WxPlatform2, item, wxUserInfo)
- if err != nil {
- c.FailWithMessage("微信登录失败", "微信登录失败,err:"+err.Error())
- return
- }
- userInfo := adminResp.LoginResp{
- RealName: adminWx.RealName,
- AdminName: adminWx.AdminName,
- RoleName: adminWx.RoleName,
- RoleTypeCode: adminWx.RoleTypeCode,
- AdminId: adminWx.AdminId,
- DepartmentName: adminWx.DepartmentName,
- GroupName: adminWx.GroupName,
- }
- userInfo.AdminId = adminWx.AdminId
- var productName string
- productId := services.GetProductId(adminWx.RoleTypeCode)
- if productId == 1 {
- productName = utils.COMPANY_PRODUCT_FICC_NAME
- } else if productId == 2 {
- productName = utils.COMPANY_PRODUCT_RAI_NAME
- } else {
- productName = "admin"
- }
- userInfo.ProductName = productName
- userInfo.Authority = adminWx.Authority
- resp := wechat.WxLoginResp{
- AdminId: adminWx.AdminId,
- Code: 0,
- Authorization: token,
- Headimgurl: adminWx.Headimgurl,
- RealName: adminWx.RealName,
- UserInfo: userInfo,
- }
- //登录日志
- {
- returnResult, err := json.Marshal(resp)
- if err != nil {
- utils.FileLog.Info(c.Ctx.Input.URI() + " Err:%s" + err.Error())
- }
- utils.FileLog.Info(c.Ctx.Input.URI()+" code: %s , return data: %s", code, string(returnResult))
- }
- c.OkDetailed(resp, "登录成功")
- }
- // @Title 小程序获取用户信息
- // @Description 小程序获取用户信息接口(需要登录)
- // @Param request body models.WxGetUserInfoReq true "type json string"
- // @Success 200 {object} models.WxGetUserInfoResp
- // @router /getUserInfo [post]
- //func (c *WechatController) GetUserInfo() {
- // br := new(models.BaseResponse).Init()
- // defer func() {
- // c.Data["json"] = br
- // c.ServeJSON()
- // }()
- // var req models.WxGetUserInfoReq
- // err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- // if err != nil {
- // br.Msg = "参数解析异常!"
- // br.ErrMsg = "参数解析失败,Err:" + err.Error()
- // return
- // }
- // if req.RawData == "" || req.EncryptedData == "" || req.Signature == "" || req.Iv == "" {
- // br.Msg = "参数错误"
- // return
- // }
- // user := c.User
- // if user == nil {
- // br.Msg = "请登陆"
- // br.Ret = 408
- // return
- // }
- // userId := user.UserId
- // sessionKey := user.SessionKey
- // fmt.Println("sessionKey:", sessionKey)
- // fmt.Println(sessionKey, req.RawData, req.EncryptedData, req.Signature, req.Iv)
- // userInfo, err := weapp.DecryptUserInfo(sessionKey, req.RawData, req.EncryptedData, req.Signature, req.Iv)
- // fmt.Println("weapp.DecryptUserInfo ", err)
- //
- // if err != nil {
- // br.Msg = "解析用户信息失败"
- // br.ErrMsg = "解析用户信息失败,DecryptUserInfo Err:" + err.Error()
- // return
- // }
- // //修改用户微信信息
- // err = models.ModifyUserRecordByDetail(userInfo.OpenID, userInfo.UnionID, userInfo.Nickname, userInfo.Avatar, userInfo.City, userInfo.Province, userInfo.Country, userInfo.Gender, userId)
- // if err != nil {
- // br.Msg = "授权失败"
- // br.ErrMsg = "授权失败,修改用户信息失败:" + err.Error()
- // return
- // }
- // var token string
- // tokenItem, err := models.GetTokenByOpenId(userInfo.OpenID)
- // if err != nil && err.Error() != utils.ErrNoRow() {
- // br.Msg = "授权失败"
- // br.ErrMsg = "授权失败,获取token失败:" + err.Error()
- // return
- // }
- //
- // if tokenItem == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
- // timeUnix := time.Now().Unix()
- // timeUnixStr := strconv.FormatInt(timeUnix, 10)
- // token = utils.MD5(userInfo.OpenID) + utils.MD5(timeUnixStr)
- // //新增session
- // {
- // session := new(models.CygxSession)
- // session.OpenId = userInfo.OpenID
- // session.UnionId = userInfo.UnionID
- // session.UserId = userId
- // session.CreatedTime = time.Now()
- // session.LastUpdatedTime = time.Now()
- // session.ExpireTime = time.Now().AddDate(0, 3, 0)
- // session.AccessToken = token
- // err = models.AddSession(session)
- // if err != nil {
- // br.Msg = "授权失败"
- // br.ErrMsg = "授权失败,新增用户session信息失败:" + err.Error()
- // return
- // }
- // }
- // } else {
- // token = tokenItem.AccessToken
- // }
- // resp := new(models.WxGetUserInfoResp)
- // resp.Authorization = token
- // br.Msg = "获取成功!"
- // br.Ret = 200
- // br.Success = true
- //}
|