|
@@ -1,5 +1,15 @@
|
|
|
package controllers
|
|
|
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "hongze/hongze_clpt/models"
|
|
|
+ "hongze/hongze_clpt/services"
|
|
|
+ "hongze/hongze_clpt/utils"
|
|
|
+ "strconv"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
type WechatController struct {
|
|
|
BaseAuthController
|
|
|
}
|
|
@@ -7,3 +17,163 @@ type WechatController struct {
|
|
|
type WechatCommonController struct {
|
|
|
BaseCommonController
|
|
|
}
|
|
|
+
|
|
|
+// @Title 微信登录小助手接口
|
|
|
+// @Description 微信登录小助手接口
|
|
|
+// @Param Code query string true "微信唯一编码code"
|
|
|
+// @Success 200 {object} models.UserDetailByUserLogin
|
|
|
+// @router /login [get]
|
|
|
+func (this *WechatCommonController) WechatLoginByxzs() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ code := this.GetString("Code")
|
|
|
+ if code == "" {
|
|
|
+ br.Msg = "参数错误"
|
|
|
+ br.ErrMsg = "Code 为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var token string
|
|
|
+ item, err := services.WxGetUserOpenIdByCodeXzs(code)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if item.Errcode != 0 {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取access_token 失败 errcode:" + strconv.Itoa(item.Errcode) + " ;errmsg:" + item.Errmsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openId := item.Openid
|
|
|
+ if openId == "" {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取openid失败,openid:" + item.Openid
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //openId := "oN0jD1QwcA2uRD0BC4mH5zJMo0eg"
|
|
|
+ resp := new(models.UserDetailByUserLogin)
|
|
|
+ accessToken, err := services.GetWxAccessTokenByXzs()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取access_token失败,err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if accessToken == "" {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "access_token 为空,"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ wxUserInfo, err := services.WxGetUserInfo(openId, accessToken)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fmt.Println(wxUserInfo)
|
|
|
+ if wxUserInfo.Errcode != 0 {
|
|
|
+ userInfoJson, _ := json.Marshal(wxUserInfo)
|
|
|
+ br.Msg = "登录失败"
|
|
|
+ br.ErrMsg = "获取用户信息失败,err:" + string(userInfoJson)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ unionId := wxUserInfo.Unionid
|
|
|
+ if unionId == "" {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取unionid失败,unionid:" + wxUserInfo.Unionid
|
|
|
+ return
|
|
|
+ }
|
|
|
+ total, err := models.GetCygxUserRecordCount(openId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "查询数量失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ items := new(models.CygxUserRecord)
|
|
|
+ items.OpenId = openId
|
|
|
+ items.UnionId = unionId
|
|
|
+ items.NickName = wxUserInfo.Nickname
|
|
|
+ items.Sex = wxUserInfo.Sex
|
|
|
+ items.Province = wxUserInfo.Province
|
|
|
+ items.City = wxUserInfo.City
|
|
|
+ items.Country = wxUserInfo.Country
|
|
|
+ items.Headimgurl = wxUserInfo.Headimgurl
|
|
|
+ items.CreateTime = time.Now()
|
|
|
+ if total == 0 {
|
|
|
+ _, err = models.AddCygxUserRecord(items)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "添加openid失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ timeUnix := time.Now().Unix()
|
|
|
+ timeUnixStr := strconv.FormatInt(timeUnix, 10)
|
|
|
+
|
|
|
+ user, err := models.GetWxUserItemByUserUnionId(unionId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取本地用户信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ totalItem, err := models.GetTokenByOpenId(openId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "查询数量失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if totalItem == nil {
|
|
|
+ token := utils.MD5(unionId) + utils.MD5(timeUnixStr)
|
|
|
+ itemsSession := new(models.CygxClptSession)
|
|
|
+ itemsSession.UnionId = unionId
|
|
|
+ itemsSession.OpenId = openId
|
|
|
+ itemsSession.Mobile = user.Mobile
|
|
|
+ itemsSession.AccessToken = token
|
|
|
+ itemsSession.CreatedTime = time.Now()
|
|
|
+ itemsSession.LastUpdatedTime = time.Now()
|
|
|
+ itemsSession.ExpireTime = time.Now().AddDate(0, 3, 0)
|
|
|
+ if user != nil {
|
|
|
+ itemsSession.UserId = user.UserId
|
|
|
+ }
|
|
|
+ err = models.AddCygxClptSession(itemsSession)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "添加Token失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ token = totalItem.AccessToken
|
|
|
+ }
|
|
|
+ if user == nil {
|
|
|
+ resp.HasPermission = 3
|
|
|
+ } else {
|
|
|
+ permissionStr, err := models.GetCompanyPermission(user.CompanyId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取信息失败"
|
|
|
+ br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if permissionStr != "" {
|
|
|
+ resp.Permission = permissionStr
|
|
|
+ resp.Mobile = user.Mobile
|
|
|
+ resp.RealName = user.RealName
|
|
|
+ resp.CompanyName = user.CompanyName
|
|
|
+ resp.HasPermission = 1
|
|
|
+ } else {
|
|
|
+ resp.Mobile = user.Mobile
|
|
|
+ resp.RealName = user.RealName
|
|
|
+ resp.HasPermission = 2
|
|
|
+ }
|
|
|
+ resp.Headimgurl = user.HeadimgurlRecord
|
|
|
+ }
|
|
|
+ if resp.Headimgurl == "" {
|
|
|
+ resp.Headimgurl = utils.DefaultHeadimgurl
|
|
|
+ }
|
|
|
+ resp.Token = token
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|