瀏覽代碼

用户登录对应权限的判断

xingzai 3 年之前
父節點
當前提交
14c4bdf3af
共有 4 個文件被更改,包括 89 次插入11 次删除
  1. 41 2
      controllers/wechat.go
  2. 22 7
      models/user.go
  3. 10 0
      models/wx_user.go
  4. 16 2
      services/wechat.go

+ 41 - 2
controllers/wechat.go

@@ -1,8 +1,10 @@
 package controllers
 
 import (
+	"fmt"
 	"hongze/hongze_cygxzs/models"
 	"hongze/hongze_cygxzs/services"
+	"hongze/hongze_cygxzs/utils"
 	"strconv"
 	"time"
 )
@@ -18,7 +20,7 @@ type WechatCommonController struct {
 // @Title 微信登录小助手接口
 // @Description 微信登录小助手接口
 // @Param   Code   query   string  true       "微信唯一编码code"
-// @Success 200 {object}
+// @Success 200 {object}  models.UserDetailByUserLogin
 // @router /loginByxzs [get]
 func (this *WechatCommonController) WechatLoginByxzs() {
 	br := new(models.BaseResponse).Init()
@@ -73,8 +75,45 @@ func (this *WechatCommonController) WechatLoginByxzs() {
 			return
 		}
 	}
+	accessToken := item.AccessToken
+	fmt.Println(item)
+	resp := new(models.UserDetailByUserLogin)
+	itemWx, err := services.WxGetUserInfo(openId, accessToken)
+	if err != nil {
+		br.Msg = "获取用户信息失败"
+		br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
+		return
+	}
+	user, err := models.GetWxUserItemByUserUnionId(item.Unionid)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取用户信息失败"
+		br.ErrMsg = "获取本地用户信息失败,Err:" + err.Error()
+		return
+	}
+	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 = itemWx.Headimgurl
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
-	br.Data = item
+	br.Data = resp
 }

+ 22 - 7
models/user.go

@@ -133,8 +133,6 @@ type CheckStatusResp struct {
 	PermissionName string `description:"拥有权限分类,多个用英文逗号分隔"`
 }
 
-
-
 type ApplyTryReq struct {
 	BusinessCardUrl string `description:"名片地址"`
 	RealName        string `description:"姓名"`
@@ -154,8 +152,6 @@ type CountryCodeItem struct {
 	CountryCode string `description:"区号"`
 }
 
-
-
 //修改外呼手机号
 type OutboundMobileItem struct {
 	OutboundMobile      string `description:"外呼手机号"`
@@ -163,9 +159,6 @@ type OutboundMobileItem struct {
 	ActivityId          int    `description:"活动ID"`
 }
 
-
-
-
 type UserWhiteList struct {
 	Mobile      string `description:"手机号码"`
 	RealName    string `description:"用户实际名称"`
@@ -181,4 +174,26 @@ type UserWhiteListRep struct {
 	List []*UserWhiteList
 }
 
+type UserDetailByUserLogin struct {
+	Headimgurl    string `description:"头像"`
+	Mobile        string `description:"手机号码"`
+	RealName      string `description:"用户实际名称"`
+	CompanyName   string `description:"公司名称"`
+	Permission    string `description:"拥有权限分类,多个用英文逗号分隔"`
+	HasPermission int    `description:"1:有该行业权限,正常展示,2:无权限,非潜在客户,3:未在小程序授权用户信息 等"`
+}
 
+func GetCompanyPermission(companyId int) (permission string, err error) {
+	sql := ` SELECT GROUP_CONCAT(DISTINCT b.chart_permission_name  ORDER BY b.sort ASC SEPARATOR ',') AS permission
+			FROM company_report_permission AS a
+			INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
+			INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
+			WHERE  a.company_id=?
+			AND c.is_suspend=0
+            AND b.cygx_auth=1
+			AND c.status IN('正式','试用','永续')
+			AND a.status IN('正式','试用','永续') `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId).QueryRow(&permission)
+	return
+}

+ 10 - 0
models/wx_user.go

@@ -250,3 +250,13 @@ func UPdateUserCountryCode(item *WxUserItem) (err error) {
 
 	return
 }
+
+func GetWxUserItemByUserUnionId(unionId string) (item *WxUserItem, err error) {
+	sql := `SELECT a.*,b.company_name FROM wx_user AS a
+			INNER JOIN company AS b on a.company_id=b.company_id
+			INNER JOIN user_record  as  r ON r.user_id = a.user_id 
+			WHERE r.union_id=?
+			GROUP BY a.user_id`
+	err = orm.NewOrm().Raw(sql, unionId).QueryRow(&item)
+	return
+}

+ 16 - 2
services/wechat.go

@@ -94,14 +94,28 @@ type WxUserInfo struct {
 	SessionKey     string `json:"session_key"`
 }
 
+//func WxGetUserInfo(openId, accessToken string) (item *WxUserInfo, err error) {
+//	requestUrl := `https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s`
+//	requestUrl = fmt.Sprintf(requestUrl, accessToken, openId)
+//	result, err := http.Get(requestUrl)
+//	if err != nil {
+//		return
+//	}
+//	fmt.Println("result:", string(result))
+//	err = json.Unmarshal(result, &item)
+//	return
+//}
+
 func WxGetUserInfo(openId, accessToken string) (item *WxUserInfo, err error) {
-	requestUrl := `https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s`
+	requestUrl := `https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN`
 	requestUrl = fmt.Sprintf(requestUrl, accessToken, openId)
 	result, err := http.Get(requestUrl)
+	fmt.Println(requestUrl)
 	if err != nil {
 		return
 	}
-	fmt.Println("result:", string(result))
+	utils.FileLog.Info("WxGetUserInfo:%s openId:%s,accessToken:%s ", string(result), openId, accessToken)
+	utils.FileLog.Info("WxGetUserInfo Result:%s ", string(result))
 	err = json.Unmarshal(result, &item)
 	return
 }