98 lines
2.1 KiB
Go
98 lines
2.1 KiB
Go
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
|
|
}
|