package friend import ( "fmt" "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) { var ( self *pb.DBFriend ) //在线玩家 cu, err := this.moduleFriend.ModuleUser.UserOnlineList() if err != nil { code = pb.ErrorCode_DBError return } // 只随机选择5个在线玩家 // var randOnlineUsers []string if len(cu) > 5 { fmt.Println(utils.Numbers(0, len(cu), 5)) } // 当前玩家好友数据 self = this.moduleFriend.modelFriend.GetFriend(session.GetUserId()) if self == nil { code = pb.ErrorCode_FriendSelfNoData return } var userList []*pb.FriendBase for _, v := range cu { // 将自己从在线玩家中过滤掉 if v.Uid == session.GetUserId() { continue } // 将自己的好友从在线玩家中过滤掉 if _, ok := utils.Findx(self.FriendIds, v.Uid); ok { continue } // 判断当前在线好友是否在自己的申请列表中,如果存在也过滤掉 target := this.moduleFriend.modelFriend.GetFriend(v.Uid) if target == nil { continue } // 获取在线好友的信息 user := this.moduleFriend.ModuleUser.GetUser(v.Uid) if user == nil { continue } base := &pb.FriendBase{ UserId: user.Uid, NickName: user.Name, Level: user.Lv, OfflineTime: user.Offlinetime, } // 申请过的在线好友,设置申请状态 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 }