瀏覽代碼

记录身份

wangchuanjin 2 年之前
父節點
當前提交
0b9ec88ed9
共有 1 個文件被更改,包括 16 次插入9 次删除
  1. 16 9
      identity/identity.go

+ 16 - 9
identity/identity.go

@@ -75,15 +75,22 @@ func (i *IdentityInfo) Switch(sess *httpsession.Session, mgo *MongodbSim) bool {
 }
 
 //切换到最优身份
-func SwitchToBest(userId int64, sess *httpsession.Session, mgd *Middleground, mgo *MongodbSim) bool {
+func SwitchToBest(userId int64, sess *httpsession.Session, mgd *Middleground, mgo *MongodbSim, isSelectLast bool) (int64, bool) {
 	list := mgd.UserCenter.IdentityList(userId)
 	if list == nil || len(list) == 0 {
-		return false
+		return -1, false
 	}
-	if beforePositionId := Int64All(sess.Get("beforePositionId")); beforePositionId > 0 {
-		for _, v := range list {
-			if v.PositionId == beforePositionId {
-				return NewIdentityInfo(v).Switch(sess, mgo)
+	if isSelectLast {
+		if mgoUserId, _ := sess.Get("mgoUserId").(string); mgoUserId != "" {
+			user, ok := mgo.FindById("user", mgoUserId, `{"login_positionid":1}`)
+			if ok && user != nil && len(*user) > 0 {
+				if login_positionid := Int64All((*user)["login_positionid"]); login_positionid > 0 {
+					for _, v := range list {
+						if v.PositionId == login_positionid {
+							return v.PositionId, NewIdentityInfo(v).Switch(sess, mgo)
+						}
+					}
+				}
 			}
 		}
 	}
@@ -97,15 +104,15 @@ func SwitchToBest(userId int64, sess *httpsession.Session, mgd *Middleground, mg
 		if resp := mgd.EntManageApplication.EmpowerUserIds(reqIds); len(resp.Ids) > 0 {
 			for _, v := range list {
 				if v.PositionType == 1 && v.EntUserId == resp.Ids[0] {
-					return NewIdentityInfo(v).Switch(sess, mgo)
+					return v.PositionId, NewIdentityInfo(v).Switch(sess, mgo)
 				}
 			}
 		}
 	}
 	for _, v := range list {
 		if v.PositionType == 0 {
-			return NewIdentityInfo(v).Switch(sess, mgo)
+			return v.PositionId, NewIdentityInfo(v).Switch(sess, mgo)
 		}
 	}
-	return false
+	return -1, false
 }