Bläddra i källkod

增加身份切换

wangchuanjin 2 år sedan
förälder
incheckning
4c9ee32179

+ 1 - 1
src/config.yaml

@@ -1,4 +1,4 @@
 etcd:
   hosts:
-  - 192.168.3.206:2379
+  - 127.0.0.1:2379
 userCenterKey: "usercenter.rpc" #用户中台rpc

+ 2 - 2
src/go.mod

@@ -4,8 +4,8 @@ go 1.18
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467
-	app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb
-	bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230104094847-fcff4cb37001
+	app.yhyue.com/moapp/jypkg v0.0.0-20230106052209-eac08caf4909
+	bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230106055052-2d0ef74d88df
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
 	github.com/dchest/captcha v1.0.0
 	github.com/fsnotify/fsnotify v1.6.0

+ 4 - 4
src/go.sum

@@ -4,12 +4,12 @@ app.yhyue.com/moapp/jyPoints v1.1.1/go.mod h1:SvP8p5L3jGrejHiH2LXfgCg/NPlFiKBC5Y
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467 h1:MTZBSIzrqrwieb1gLhls3Wjz0Q2u75n+O2jfPw40iEA=
 app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb h1:EpO8FAT6xsnaZW3TuLVz8RrDff1c7eXwgGqmlBtUUyQ=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb/go.mod h1:CkGGBvyteATKUfm7n0SqAm1LlCftmiWwlFGR80YEkWo=
+app.yhyue.com/moapp/jypkg v0.0.0-20230106052209-eac08caf4909 h1:O5sFspDefzt8MCYHRgX3UsOI0yOOFcj3QH4xO9QqeEk=
+app.yhyue.com/moapp/jypkg v0.0.0-20230106052209-eac08caf4909/go.mod h1:CkGGBvyteATKUfm7n0SqAm1LlCftmiWwlFGR80YEkWo=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c h1:CrcvbsXZ4aQkNikBi7FUUQZNnY8hKsNo2LLe/SqeXs8=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
-bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230104094847-fcff4cb37001 h1:WkAsidnmT4TSfN6BA4NlL2NLHNerjn2+qbe5qzd4rEY=
-bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230104094847-fcff4cb37001/go.mod h1:w4/29SqTHYIEeZSKOelOB9AAZLSh3d/QzI3swWc3B8E=
+bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230106055052-2d0ef74d88df h1:Y3CYTqp/faiQIwKku5xEzegHloIgexmrcT/BDmbLeLs=
+bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20230106055052-2d0ef74d88df/go.mod h1:w4/29SqTHYIEeZSKOelOB9AAZLSh3d/QzI3swWc3B8E=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=

+ 0 - 78
src/jfw/filter/baseuserfilter.go

@@ -1,78 +0,0 @@
-package filter
-
-import (
-	"jy/src/jfw/config"
-	"log"
-	"net/http"
-
-	"app.yhyue.com/moapp/jybase/usercenter"
-
-	"app.yhyue.com/moapp/jypkg/public"
-
-	util "app.yhyue.com/moapp/jybase/common"
-
-	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
-)
-
-type baseUserFilter struct {
-	W          http.ResponseWriter
-	R          *http.Request
-	Session    *httpsession.Session
-	GetSession map[string]interface{}
-}
-
-//判断session中是否存在base_user_id 不存在则更新
-
-func (this *baseUserFilter) Do() bool {
-	if flag, _ := config.Sysconfig["baseUserFilterFlag"].(bool); !flag {
-		return true
-	}
-	if this.R.Method == "POST" {
-		return true
-	}
-	if uid := this.GetSession["userId"]; uid != nil && uid != "" {
-		baseUserId := this.GetSession["base_user_id"]
-		if baseUserId == nil || baseUserId == 0 {
-			data, ok := public.MQFW.FindById("user", util.ObjToString(uid), `{"base_user_id":1}`)
-			if data != nil && ok && len(*data) > 0 {
-				if base_user_id := util.Int64All((*data)["base_user_id"]); base_user_id > 0 {
-					baseUserId = base_user_id
-					this.Session.Set("base_user_id", (*data)["base_user_id"])
-				} else {
-					log.Printf("%s用户暂无base_user_id", uid)
-				}
-			}
-		}
-		personId := this.GetSession["personId"]
-		if personId == nil || personId == 0 {
-			//获取自然人id,个人账户id,企业账户id,企业雇员职位id,企业雇员账户id,个人职位id
-			ck := &http.Cookie{}
-			entId := util.Int64All(this.GetSession["entId"])
-			identity := usercenter.GetUserIdentity(util.ObjToString(config.Sysconfig["userCenterApi"]), util.ObjToString(uid), util.Int64All(baseUserId), entId, ck)
-			if identity != nil {
-				if identity.PersonId > 0 {
-					this.Session.Set("personId", identity.PersonId)
-				}
-				if identity.UserName != "" {
-					this.Session.Set("userName", identity.UserName)
-				}
-				if identity.PersonId > 0 {
-					this.Session.Set("userAccountId", identity.PersonId)
-				}
-				if identity.EntAccountId > 0 {
-					this.Session.Set("entAccountId", identity.EntAccountId)
-				}
-				if identity.EntUserAccountId > 0 {
-					this.Session.Set("entUserAccountId", identity.EntUserAccountId)
-				}
-				if identity.UserPositionId > 0 {
-					this.Session.Set("userPositionId", identity.UserPositionId)
-				}
-				if identity.EntUserPositionId > 0 {
-					this.Session.Set("entUserPositionId", identity.EntUserPositionId)
-				}
-			}
-		}
-	}
-	return true
-}

+ 3 - 4
src/jfw/filter/filter.go

@@ -39,7 +39,9 @@ type Filter struct {
 func (f *Filter) Do(w http.ResponseWriter, r *http.Request) bool {
 	session := xweb.RootApp().SessionManager.Session(r, w)
 	getSession := session.GetMultiple()
-	//session.Set("userId", "61ea6adf2295bbfea3416a75")
+	if getSession["userId"] != nil && getSession["mgoUserId"] == nil && util.Int64All(getSession["positionType"]) == 0 {
+		session.Set("mgoUserId", getSession["userId"])
+	}
 	if !(&logFilter{w, r, session, getSession, make(map[string]interface{})}).Do() {
 		return false
 	}
@@ -55,9 +57,6 @@ func (f *Filter) Do(w http.ResponseWriter, r *http.Request) bool {
 	if !(&pcFilter{w, r, session, getSession}).Do() {
 		return false
 	}
-	if !(&baseUserFilter{w, r, session, getSession}).Do() {
-		return false
-	}
 	if !(&salesFilter{w, r, session, getSession}).Do() {
 		return false
 	}

+ 33 - 7
src/jfw/front/front.go

@@ -20,10 +20,12 @@ import (
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+	"app.yhyue.com/moapp/jypkg/identity"
 	"app.yhyue.com/moapp/jypkg/public"
 
-	elastic "app.yhyue.com/moapp/jybase/esv1"
+	. "jy/src/jfw/grpc"
 
+	elastic "app.yhyue.com/moapp/jybase/esv1"
 	"app.yhyue.com/moapp/jybase/redis"
 
 	mgdb "app.yhyue.com/moapp/jybase/mongodb"
@@ -616,18 +618,19 @@ func (f *Front) Login(key string) error {
 
 //用户是否登录
 func (f *Front) HasSign() error {
-	if userId, _ := f.GetSession("userId").(string); userId != "" {
+	sessVal := f.Session().GetMultiple()
+	if userId, _ := sessVal["userId"].(string); userId != "" {
 		//微信昵称>手机号>剑鱼昵称
-		nickname := util.ObjToString(f.GetSession("s_nickname"))
-		phone, _ := f.GetSession("phone").(string)
-		jyname := util.ObjToString(f.GetSession("s_jyname"))
+		nickname := util.ObjToString(sessVal["s_nickname"])
+		phone, _ := sessVal["phone"].(string)
+		jyname := util.ObjToString(sessVal["s_jyname"])
 		if nickname == "" && phone != "" {
 			nickname = string(phone[0:3]) + "****" + string(phone[(len(phone)-4):])
 		}
 		m := map[string]interface{}{
 			"result":      "ok",
 			"s_nickname":  util.If(nickname != "", nickname, jyname), //昵称:dev4.6.4
-			"s_headimage": f.GetSession("s_avatar"),                  //详细见:jyutil.go - GetSessionVal()
+			"s_headimage": sessVal["s_avatar"],                       //详细见:jyutil.go - GetSessionVal()
 			"encryptId":   se.EncodeString(userId),
 		}
 		//是否需要重新登录,企业基础架构给虚拟账号重置密码后,需要重新登录
@@ -636,9 +639,32 @@ func (f *Front) HasSign() error {
 			redis.Del("session", f.Session().Id())
 			m["resetpwd"] = resetpwd
 		}
-		if openid, _ := f.GetSession("s_m_openid").(string); openid != "" {
+		if openid, _ := sessVal["s_m_openid"].(string); openid != "" {
 			m["openid"] = se.EncodeString(openid)
 		}
+		if base_user_id := util.Int64All(sessVal["base_user_id"]); base_user_id > 0 {
+			identitys := []map[string]interface{}{}
+			for _, v := range UserCenter.IdentityList(base_user_id) {
+				identitys = append(identitys, map[string]interface{}{
+					"name":  v.Name,
+					"entId": encrypt.SE.Encode2HexByCheck(fmt.Sprint(v.EntId)),
+					"type":  v.PositionType,
+					"token": identity.Encode(&identity.Identity{
+						Name:         v.Name,
+						PersonId:     v.PersonId,
+						UserName:     v.UserName,
+						AccountId:    v.AccountId,
+						EntAccountId: v.EntAccountId,
+						PositionId:   v.PositionId,
+						PositionType: v.PositionType,
+						EntId:        v.EntId,
+						EntUserId:    v.EntUserId,
+						EntUserName:  v.EntUserName,
+					}),
+				})
+			}
+			m["identitys"] = identitys
+		}
 		f.ServeJson(m)
 	}
 	return nil

+ 4 - 0
src/jfw/grpc/usercenter.go

@@ -32,5 +32,9 @@ func (u *userCenter) IdentityList(userId int64) []*pb.Identity {
 	resp, err := usercenter.NewUserCenter(client).IdentityList(context.Background(), &pb.IdentityReq{
 		UserId: userId,
 	})
+	if err != nil {
+		log.Println(err)
+		return nil
+	}
 	return resp.Identitys
 }

+ 1 - 1
src/jfw/modules/bigmember/src/service/report/report.go

@@ -572,7 +572,7 @@ func isFree(userId string) bool {
 
 //
 func getQuery(sess *httpsession.Session) (string, string, interface{}) {
-	sessMap := sess.GetMultiple("userId", "entUserId")
+	sessMap := sess.GetMultiple()
 	userId := util.ObjToString(sessMap["userId"])
 	user, ok := Mgo.FindById("user", userId, `{"s_phone":1,"s_m_phone":1}`)
 	if !ok || user == nil {

+ 1 - 1
src/jfw/modules/subscribepay/src/report/report.go

@@ -500,7 +500,7 @@ func getColl(referer, t string, flag bool) string {
 
 //
 func getQuery(sess *httpsession.Session) (string, string, interface{}) {
-	sessMap := sess.GetMultiple("userId", "entUserId")
+	sessMap := sess.GetMultiple()
 	userId := qutil.ObjToString(sessMap["userId"])
 	user, ok := util.MQFW.FindById("user", userId, `{"s_phone":1,"s_m_phone":1}`)
 	if !ok || user == nil {