package friend import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/utils" "google.golang.org/protobuf/proto" ) func (this *apiComp) RandlistCheck(session comm.IUserSession, req *pb.FriendRandlistReq) (code pb.ErrorCode) { return } func (this *apiComp) Randlist(session comm.IUserSession, req *pb.FriendRandlistReq) (code pb.ErrorCode, data proto.Message) { // 当前玩家好友数据 self := this.moduleFriend.modelFriend.GetFriend(session.GetUserId()) if self == nil { code = pb.ErrorCode_FriendSelfNoData return } //在线玩家列表 cuList, err := this.moduleFriend.ModuleUser.UserOnlineList() if err != nil { code = pb.ErrorCode_DBError return } //过滤 var newList []*pb.CacheUser for _, v := range cuList { // 将自己从在线玩家中过滤掉 if v.Uid == session.GetUserId() { continue } // 将自己的好友从在线玩家中过滤掉 if _, ok := utils.Findx(self.FriendIds, v.Uid); ok { continue } newList = append(newList, v) } // 只随机选择5个在线玩家 var randOnlineUsers []string if len(newList) > 5 { randArr := utils.Numbers(0, len(newList), 5) for _, v := range randArr { if newList[v] != nil { randOnlineUsers = append(randOnlineUsers, newList[v].Uid) } } } else { for _, v := range newList { randOnlineUsers = append(randOnlineUsers, v.Uid) } } var userList []*pb.FriendBase for _, uid := range randOnlineUsers { target := this.moduleFriend.modelFriend.GetFriend(uid) if target == nil { continue } // // 获取在线好友的信息 // user := this.moduleFriend.ModuleUser.GetUser(uid) // if user == nil { // continue // } base := this.setDefaultFriendUserBaseInfo(uid) if base == nil { continue } // 申请过的在线好友,设置申请状态 if _, ok := utils.Findx(target.ApplyIds, self.Uid); ok { base.IsApplied = true } userList = append(userList, base) } rsp := &pb.FriendRandlistResp{ List: userList, } if err := session.SendMsg(string(this.moduleFriend.GetType()), FriendSubTypeRandList, rsp); err != nil { code = pb.ErrorCode_SystemError return } return }