Merge branch 'meixiongfeng' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev

This commit is contained in:
meixiongfeng 2022-10-24 16:50:53 +08:00
commit 983750153e
3 changed files with 29 additions and 12 deletions

View File

@ -160,5 +160,11 @@
"open": true, "open": true,
"routrules": "~/worker", "routrules": "~/worker",
"describe": "好友助战英雄列表" "describe": "好友助战英雄列表"
},
{
"msgid": "gourmet.getranduser",
"open": true,
"routrules": "~/worker",
"describe": "获取在线玩家数据"
} }
] ]

View File

@ -5,7 +5,9 @@ import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/db"
"go_dreamfactory/utils" "go_dreamfactory/utils"
"time"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
@ -32,8 +34,9 @@ func (this *apiComp) GetRandUser(session comm.IUserSession, req *pb.GourmetGetRa
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回 return // 参数校验失败直接返回
} }
// 获取在线玩家信息 // 获取在线玩家信息
onlineList, err := this.module.ModuleUser.CrossUserOnlineList() onlineList, err := this.module.ModuleUser.UserOnlineList()
if err != nil { if err != nil {
code = pb.ErrorCode_DBError code = pb.ErrorCode_DBError
return return
@ -61,15 +64,21 @@ func (this *apiComp) GetRandUser(session comm.IUserSession, req *pb.GourmetGetRa
} }
left := int(req.People) - len(mapUser) left := int(req.People) - len(mapUser)
if left > 0 { // 一个人也没有 那就从db 中随机取 if left > 0 { // 一个人也没有 那就从db 中随机取
if _data, err1 := this.module.modelGourmet.DB.Find(core.SqlTable(comm.TableUser), bson.M{}, options.Find().SetSort(bson.M{"lv": -1}).SetLimit(int64(req.People))); err1 == nil { tag, _, b := utils.UIdSplit(session.GetUserId())
for _data.Next(context.TODO()) { if b {
temp := &pb.DBUser{} if conn, err := db.ServerDBConn(tag); err == nil {
if err = _data.Decode(temp); err == nil { dbModel := db.NewDBModel(comm.TableHero, time.Hour, conn)
if len(mapUser) >= int(req.People) { if _data, err1 := dbModel.DB.Find(core.SqlTable(comm.TableUser), bson.M{}, options.Find().SetSort(bson.M{"lv": -1}).SetLimit(int64(req.People))); err1 == nil {
break for _data.Next(context.TODO()) {
} temp := &pb.DBUser{}
if _, ok := mapUser[temp.Uid]; !ok { if err = _data.Decode(temp); err == nil {
szDbUser = append(szDbUser, temp) if len(mapUser) >= int(req.People) {
break
}
if _, ok := mapUser[temp.Uid]; !ok {
szDbUser = append(szDbUser, temp)
}
}
} }
} }
} }

View File

@ -111,7 +111,9 @@ func (this *User) GetUserSession(uid string) *pb.CacheUser {
// 清除session // 清除session
func (this *User) CleanSession(session comm.IUserSession) { func (this *User) CleanSession(session comm.IUserSession) {
this.modelUser.updateOfflineTime(session.GetUserId()) if !this.IsCross() {
this.modelUser.updateOfflineTime(session.GetUserId())
}
sId := fmt.Sprintf("%s-%s", comm.RDS_SESSION, session.GetUserId()) sId := fmt.Sprintf("%s-%s", comm.RDS_SESSION, session.GetUserId())
this.modelSession.Del(sId, db.SetDBMgoLog(false)) this.modelSession.Del(sId, db.SetDBMgoLog(false))
this.modelSession.DelListlds(comm.RDS_SESSION, session.GetUserId()) this.modelSession.DelListlds(comm.RDS_SESSION, session.GetUserId())
@ -355,7 +357,7 @@ func (this *User) getUserFromRemoteDb(uid string, rsp *pb.DBUser) error {
return errors.New("sid split error") return errors.New("sid split error")
} }
conn, err := db.ServerDBConn(sid) conn, err := db.ServerDBConn(sid)
if err != nil { if err != nil {
return err return err
} }
model := db.NewDBModel(comm.TableUser, 0, conn) model := db.NewDBModel(comm.TableUser, 0, conn)