|
@@ -1,6 +1,8 @@
|
|
|
package identity
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
+ "sort"
|
|
|
"strconv"
|
|
|
|
|
|
. "app.yhyue.com/moapp/jybase/common"
|
|
@@ -89,6 +91,7 @@ func SwitchToBest(userId int64, sess *httpsession.Session, mgd *Middleground, mg
|
|
|
if list == nil || len(list) == 0 {
|
|
|
return -1, false
|
|
|
}
|
|
|
+ //选择上次用户身份
|
|
|
if isSelectLast {
|
|
|
if mgoUserId, _ := sess.Get("mgoUserId").(string); mgoUserId != "" {
|
|
|
user, ok := mgo.FindById("user", mgoUserId, `{"login_positionid":1}`)
|
|
@@ -103,6 +106,12 @@ func SwitchToBest(userId int64, sess *httpsession.Session, mgd *Middleground, mg
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 切换至最优付费账户
|
|
|
+ if bestIdentity := getBestChoosePosition(sess, mgd, list); bestIdentity != nil {
|
|
|
+ return bestIdentity.PositionId, NewIdentityInfo(bestIdentity).Switch(sess, mgo)
|
|
|
+ }
|
|
|
+
|
|
|
reqIds := []int64{}
|
|
|
for _, v := range list {
|
|
|
if v.PositionType == 1 {
|
|
@@ -125,3 +134,52 @@ func SwitchToBest(userId int64, sess *httpsession.Session, mgd *Middleground, mg
|
|
|
}
|
|
|
return -1, false
|
|
|
}
|
|
|
+
|
|
|
+// getBestChoosePosition
|
|
|
+// 首次登录身份选择 【p387多个身份都有付费产品权限,则先按照产品优先级进行身份的选择,即大会员>商机管理>超级订阅>省份订阅包,如若多个身份的产品权限一致,则优先选择“服务结束时间”晚的身份。】
|
|
|
+func getBestChoosePosition(sess *httpsession.Session, mgd *Middleground, positionList []*pb.Identity) *pb.Identity {
|
|
|
+ var (
|
|
|
+ appId = "10000"
|
|
|
+ mgoUserId = ObjToString(sess.Get("mgoUserId"))
|
|
|
+ baseUserId = Int64All(sess.Get("base_user_id"))
|
|
|
+
|
|
|
+ scorePositionMap = map[string]*pb.Identity{}
|
|
|
+ scoreArr []string
|
|
|
+ )
|
|
|
+
|
|
|
+ for _, v := range positionList {
|
|
|
+ var (
|
|
|
+ endTime int64
|
|
|
+ flag int64
|
|
|
+ weight string
|
|
|
+ powerRes = mgd.PowerCheckCenter.Check(appId, mgoUserId, baseUserId, v.AccountId, v.EntId, v.PositionType, v.PositionId)
|
|
|
+ )
|
|
|
+
|
|
|
+ if powerRes.Member.Status > 0 {
|
|
|
+ flag, endTime = 9, powerRes.Member.GetEndTime()
|
|
|
+ } else if powerRes.Entniche.Status > 0 {
|
|
|
+ flag, endTime = 8, powerRes.Entniche.GetEndTime()
|
|
|
+ } else if powerRes.Vip.Status > 0 {
|
|
|
+ flag, endTime = 7, powerRes.Vip.GetEndTime()
|
|
|
+ } else if powerRes.Free.PpStatus > 0 {
|
|
|
+ flag, endTime = 6, powerRes.Free.GetPpEndTime()
|
|
|
+ }
|
|
|
+ if flag > 0 {
|
|
|
+ weight = fmt.Sprintf("%d%d", flag, endTime)
|
|
|
+ scoreArr = append(scoreArr, weight)
|
|
|
+ scorePositionMap[weight] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var (
|
|
|
+ sLen = len(scoreArr)
|
|
|
+ pos = sLen - 1
|
|
|
+ )
|
|
|
+ if sLen > 0 {
|
|
|
+ if sLen > 1 { // 当有多个付费身份时;根据权重字符串排序
|
|
|
+ sort.Strings(scoreArr)
|
|
|
+ }
|
|
|
+ return scorePositionMap[scoreArr[pos]]
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|