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
- }
- 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, "登录成功")
- }
- 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{
-
-
-
- Openid: wxInfo.OpenID,
- Unionid: wxInfo.UnionID,
-
- 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, "登录成功")
- }
|