package friend import ( "context" "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/pb" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" ) //好友列表 func (this *apiComp) RefreshAssistHeroCheck(session comm.IUserSession, req *pb.FriendRefreshAssistHeroReq) (errdata *pb.ErrorData) { return } func (this *apiComp) RefreshAssistHero(session comm.IUserSession, req *pb.FriendRefreshAssistHeroReq) (errdata *pb.ErrorData) { var ( self *pb.DBFriend err error ahero []*pb.DBHero // 助战英雄列表 list *pb.DBAssistHero strangerCount int32 // 陌生人的数量 friends []*pb.DBFriend heros []*pb.DBHero uids []string names []string sz []int32 //aherofr []*pb.DBHero // 好友的助战列表 ) strangerCount = comm.AssistHeroCount // 默认一个界面12条 list, err = this.module.modelAssist.getAssist(session.GetUserId()) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } self, err = this.module.modelFriend.GetFriend(session.GetUserId()) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_FriendSelfNoData, Title: pb.ErrorCode_FriendSelfNoData.ToString(), } return } if friends, err = this.module.modelFriend.GetFriends(self.FriendIds); err == nil { for _, v := range friends { if v.AssistHeroId != "" && session.GetUserId() != v.Uid { names = append(names, v.Info.Name) uids = append(uids, v.Uid) heros = append(heros, v.Hero) sz = append(sz, 1) } } } list.Data = make(map[string]string) if int32(len(sz)) > strangerCount { szData := comm.GetRandWs(sz, strangerCount) for _, v := range szData { ahero = append(ahero, heros[v]) list.Data[uids[v]] = names[v] } } else { if len(sz) > 0 { szData := comm.GetRandWs(sz, int32(len(sz)/2+1)) for _, v := range szData { ahero = append(ahero, heros[v]) list.Data[uids[v]] = names[v] } } } if list.RefreshNum >= this.module.ModuleTools.GetGlobalConf().FriendHelpHeroRefreshNum { return } list.RefreshNum++ cur, err := this.module.modelFriend.DB.Find(core.SqlTable(this.module.modelFriend.TableName), bson.M{"assistHeroId": bson.M{"$ne": ""}}, options.Find().SetSkip(0).SetLimit(int64(strangerCount))) for cur.Next(context.TODO()) { tmp := &pb.DBFriend{} if err = cur.Decode(tmp); err == nil { if session.GetUserId() != tmp.Uid && tmp.Info != nil { if int32(len(list.Data)) >= strangerCount { break } ahero = append(ahero, tmp.Hero) list.Data[tmp.Uid] = tmp.Info.Name } } } if err = this.module.modelAssist.Change(session.GetUserId(), map[string]interface{}{ "refreshNum": list.RefreshNum, "data": list.Data, }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } session.SendMsg(string(this.module.GetType()), "refreshassisthero", &pb.FriendRefreshAssistHeroResp{ Data: list, Hero: ahero, }) return }