Przeglądaj źródła

登录逻辑改写

xingzai 2 lat temu
rodzic
commit
a6e9339c0d
4 zmienionych plików z 65 dodań i 2 usunięć
  1. 2 2
      controllers/base_auth.go
  2. 8 0
      models/user_record.go
  3. 25 0
      models/wx_user.go
  4. 30 0
      services/user.go

+ 2 - 2
controllers/base_auth.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"fmt"
 	beego "github.com/beego/beego/v2/adapter"
+	"hongze/hongze_cygxzs/services"
 	"net/http"
 	"net/url"
 	"strconv"
@@ -64,8 +65,7 @@ func (this *BaseAuthController) Prepare() {
 				this.StopRun()
 				return
 			}
-			//wxUser, err := models.GetWxUserItemByUserId(session.UserId)
-			wxUser, err := models.GetWxUserAouthByUnionId(session.UnionId)
+			wxUser, err := services.GetWxUserItemByOpenId(session.UnionId)
 			if err != nil && err.Error() != utils.ErrNoRow() {
 				this.JSON(models.BaseResponse{Ret: 408, Msg: "信息已变更,请重新登陆!", ErrMsg: "获取信息失败 " + strconv.Itoa(session.UserId)}, false, false)
 				this.StopRun()

+ 8 - 0
models/user_record.go

@@ -31,6 +31,14 @@ func GetUserRecordByOpenId(openId string) (item *UserRecord, err error) {
 	return
 }
 
+//根据openid获取用户关系
+//4是查研观向   create_platform
+func GetUserRecordByUnionId(unionId string) (item *UserRecord, err error) {
+	sql := `SELECT * FROM user_record WHERE union_id=? AND create_platform = 4  `
+	err = orm.NewOrm().Raw(sql, unionId).QueryRow(&item)
+	return
+}
+
 //根据openid解除绑定用户关系
 func UnBindUserRecordByOpenid(openId string) (err error) {
 	o := orm.NewOrm()

+ 25 - 0
models/wx_user.go

@@ -135,3 +135,28 @@ func GetWxUserAouthByUnionId(UnionId string) (item *WxUserItem, err error) {
 	err = orm.NewOrm().Raw(sql, UnionId).QueryRow(&item)
 	return
 }
+
+//根据用户手机号获取相关信息
+func GetWxUserItemByUserMobile(mobile string) (item *WxUserItem, err error) {
+	sql := `SELECT
+			a.user_id,
+			a.real_name,
+			a.headimgurl,
+			a.company_id,
+			a.mobile,
+			a.email,
+			c.union_id,
+			c.open_id,
+			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.bind_account = a.mobile
+			INNER JOIN cygx_user_record AS c ON c.union_id = r.union_id 
+		WHERE
+			a.mobile = ? 
+		GROUP BY
+			a.mobile `
+	err = orm.NewOrm().Raw(sql, mobile).QueryRow(&item)
+	return
+}

+ 30 - 0
services/user.go

@@ -1,9 +1,14 @@
 package services
 
 import (
+	"errors"
 	"hongze/hongze_cygxzs/models"
+	"hongze/hongze_cygxzs/utils"
 )
 
+var ERR_NO_USER_RECORD = errors.New("用户关系没有入库")
+var ERR_USER_NOT_BIND = errors.New("用户没有绑定")
+
 //通过用户 关系表记录  和  用户记录  格式化返回 用户数据
 func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.UserRecord) {
 	wxUser.OpenId = userRecord.OpenId
@@ -14,3 +19,28 @@ func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.Use
 	wxUser.Headimgurl = userRecord.Headimgurl
 	wxUser.SessionKey = userRecord.SessionKey
 }
+
+func GetWxUserItemByOpenId(unionId string) (item *models.WxUserItem, err error) {
+	//通过openid获取用户关联信息
+	item = new(models.WxUserItem)
+	item.UnionId = unionId // 先写入 unionId
+	userRecord, userRecordErr := models.GetUserRecordByUnionId(unionId)
+	if userRecordErr != nil && userRecordErr.Error() != utils.ErrNoRow() {
+		err = userRecordErr
+		return
+	}
+	//如果 userRecord 表中的手机号不为空,那么就通过手机号来获取详情
+	if userRecord != nil {
+		if userRecord.BindAccount != "" {
+			user, userErr := models.GetWxUserItemByUserMobile(userRecord.BindAccount)
+			if userErr != nil && userErr.Error() != utils.ErrNoRow() {
+				err = userErr
+				return
+			}
+			if user != nil {
+				item = user
+			}
+		}
+	}
+	return
+}