zwxi 1 year ago
parent
commit
4d86e1831d
6 changed files with 91 additions and 9 deletions
  1. 1 1
      controllers/base_auth.go
  2. 5 5
      models/cygx_mfyx_gzh_user_record.go
  3. 1 1
      models/user.go
  4. 8 0
      models/user_record.go
  5. 14 2
      models/wx_user.go
  6. 62 0
      services/user.go

+ 1 - 1
controllers/base_auth.go

@@ -65,7 +65,7 @@ func (this *BaseAuthController) Prepare() {
 				this.StopRun()
 				return
 			}
-			wxUser, err := services.GetWxUserItemByOpenId(session.UnionId)
+			wxUser, err := services.GetWxUserItemByOpenId2(session.OpenId)
 			if err != nil && err.Error() != utils.ErrNoRow() {
 				this.JSON(models.BaseResponse{Ret: 408, Msg: "信息已变更,请重新登陆!", ErrMsg: "获取信息失败 " + strconv.Itoa(session.UserId)}, false, false)
 				this.StopRun()

+ 5 - 5
models/cygx_mfyx_gzh_user_record.go

@@ -30,7 +30,7 @@ func AddCygxUserRecord(item *CygxMfyxGzhUserRecord) (lastId int64, err error) {
 // 获取数量
 func GetCygxUserRecordCount(openId string) (count int, err error) {
 	o := orm.NewOrm()
-	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_user_record WHERE open_id=? `
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_mfyx_gzh_user_record WHERE open_id=? `
 	err = o.Raw(sqlCount, openId).QueryRow(&count)
 	return
 }
@@ -41,7 +41,7 @@ func GetCygxUserRecordByOpenid(opendId string) (item *CygxMfyxGzhUserRecord, err
 	sql := `SELECT
 			*
 		FROM
-			cygx_user_record 
+			cygx_mfyx_gzh_user_record 
 		WHERE open_id = ?
 			LIMIT 1 `
 	err = o.Raw(sql, opendId).QueryRow(&item)
@@ -51,7 +51,7 @@ func GetCygxUserRecordByOpenid(opendId string) (item *CygxMfyxGzhUserRecord, err
 // 获取列表
 func GetCygxUserRecordyList() (items []*CygxMfyxGzhUserRecord, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM cygx_user_record `
+	sql := `SELECT * FROM cygx_mfyx_gzh_user_record `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -59,7 +59,7 @@ func GetCygxUserRecordyList() (items []*CygxMfyxGzhUserRecord, err error) {
 // 更新关注信息
 func SetUserSubscribeByOpenid(openId string) (err error) {
 	o := orm.NewOrm()
-	sql := ` UPDATE cygx_user_record SET subscribe=1,subscribe_time=NOW() WHERE open_id=? `
+	sql := ` UPDATE cygx_mfyx_gzh_user_record SET subscribe=1,subscribe_time=NOW() WHERE open_id=? `
 	_, err = o.Raw(sql, openId).Exec()
 	return
 }
@@ -67,7 +67,7 @@ func SetUserSubscribeByOpenid(openId string) (err error) {
 // 根据openid解除绑定用户关系
 func UpdateCygxUserRecordMobile(userId int, mobile, openId string) (err error) {
 	o := orm.NewOrm()
-	msql := ` UPDATE cygx_user_record SET cygx_user_id = ?,cygx_bind_account= ? WHERE union_id = ? `
+	msql := ` UPDATE cygx_mfyx_gzh_user_record SET cygx_user_id = ?,cygx_bind_account= ? WHERE union_id = ? `
 	_, err = o.Raw(msql, userId, mobile, openId).Exec()
 	return
 }

+ 1 - 1
models/user.go

@@ -131,7 +131,7 @@ func UserSubscribe(subscribeType, userId int) (err error) {
 
 func CygxUserSubscribe(subscribeType int, unionid string) (err error) {
 	o := orm.NewOrm()
-	sql := `UPDATE cygx_user_record SET subscribe=?,subscribe_time=NOW() WHERE union_id = ? `
+	sql := `UPDATE cygx_mfyx_gzh_user_record SET subscribe=?,subscribe_time=NOW() WHERE union_id = ? `
 	_, err = o.Raw(sql, subscribeType, unionid).Exec()
 	return
 }

+ 8 - 0
models/user_record.go

@@ -69,4 +69,12 @@ func GetUserRecordByOpenId(openId string) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE open_id=? `
 	err = o.Raw(sql, openId).QueryRow(&item)
 	return
+}
+
+// 根据openid解除绑定用户关系
+func UnBindUserRecordByOpenid(openId string) (err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	msql := ` UPDATE user_record SET user_id = 0,bind_account="" WHERE open_id = ? `
+	_, err = o.Raw(msql, openId).Exec()
+	return
 }

+ 14 - 2
models/wx_user.go

@@ -99,17 +99,19 @@ type WxGetUserInfoReq struct {
 }
 
 func GetWxUserItemByUserUnionId(unionId string) (item *WxUserItem, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
 	sql := `SELECT a.*,r.headimgurl as headimgurl_record, 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)
+	err = o.Raw(sql, unionId).QueryRow(&item)
 	return
 }
 
 // 根据用户手机号获取相关信息
 func GetWxUserItemByUserMobile(mobile string) (item *WxUserItem, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
 	sql := `SELECT
 			a.user_id,
 			a.real_name,
@@ -125,7 +127,7 @@ func GetWxUserItemByUserMobile(mobile string) (item *WxUserItem, err error) {
 			a.mobile = ? 
 		GROUP BY
 			a.mobile `
-	err = orm.NewOrm().Raw(sql, mobile).QueryRow(&item)
+	err = o.Raw(sql, mobile).QueryRow(&item)
 	return
 }
 
@@ -136,3 +138,13 @@ func SetUserSubscribeByMobile(mobile string) (err error) {
 	_, err = o.Raw(sql, mobile).Exec()
 	return
 }
+
+// 根据用户ID获取相关信息
+func GetWxUserItemByUserId(userId int) (item *WxUserItem, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT a.*,b.company_name FROM wx_user AS a
+			LEFT JOIN company AS b on a.company_id=b.company_id
+			WHERE a.user_id=? `
+	err = o.Raw(sql, userId).QueryRow(&item)
+	return
+}

+ 62 - 0
services/user.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"errors"
+	"fmt"
 	"hongze/hongze_mfyx_gzh/models"
 	"hongze/hongze_mfyx_gzh/utils"
 )
@@ -44,3 +45,64 @@ func GetWxUserItemByOpenId(unionId string) (item *models.WxUserItem, err error)
 	}
 	return
 }
+
+// 通过openid获取用户信息
+func GetWxUserItemByOpenId2(openid string) (item *models.WxUserItem, err error) {
+	//通过openid获取用户关联信息
+	userRecord, userRecordErr := models.GetUserRecordByOpenId(openid)
+	fmt.Println(userRecordErr)
+	//fmt.Println("userRecordErr", userRecordErr)
+	if userRecordErr != nil {
+		if userRecordErr.Error() == utils.ErrNoRow() {
+			err = ERR_NO_USER_RECORD
+			return
+		} else {
+			err = userRecordErr
+			return
+		}
+	}
+	//该openid在系统中没有关联关系
+	if userRecord == nil {
+		err = ERR_NO_USER_RECORD
+		return
+	}
+
+	//该openid没有绑定用户
+	if userRecord.UserId <= 0 {
+		err = ERR_USER_NOT_BIND
+		item = new(models.WxUserItem)
+		//格式化返回用户数据
+		formatWxUserAndUserRecord(item, userRecord)
+		return
+	}
+	fmt.Println("userRecord.UserId ", userRecord.UserId)
+
+	//获取用户信息
+	item, wxUserErr := models.GetWxUserItemByUserId(userRecord.UserId)
+	//fmt.Println("wxUserErr", wxUserErr)
+	if wxUserErr != nil {
+		err = wxUserErr
+		//如果是找不到数据,那么可能是该用户被删除了,但是user_record没有删除对应的关系
+		if wxUserErr.Error() == utils.ErrNoRow() {
+			//用户被删除了,但是user_record没有删除对应的关系,那么去解除绑定
+			userUnbindErr := models.UnBindUserRecordByOpenid(openid)
+			if userUnbindErr != nil {
+				err = userUnbindErr
+				return
+			}
+			//返回状态为 用户未绑定 逻辑代码
+			err = ERR_USER_NOT_BIND
+			item = new(models.WxUserItem)
+			//格式化返回用户数据
+			formatWxUserAndUserRecord(item, userRecord)
+			return
+		}
+		return
+	}
+	if item.RealName == "" {
+		item.RealName = userRecord.RealName
+	}
+	//格式化返回用户数据
+	formatWxUserAndUserRecord(item, userRecord)
+	return
+}