|
@@ -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
|
|
|
}
|