go_dreamfactory/modules/pagoda/api_cyclerank.go
2024-02-06 16:35:45 +08:00

64 lines
1.6 KiB
Go

package pagoda
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) CrossCycleRankListCheck(session comm.IUserSession, req *pb.PagodaCrossCycleRankListReq) (errdata *pb.ErrorData) {
return
}
// 循环塔榜
func (this *apiComp) CrossCycleRankList(session comm.IUserSession, req *pb.PagodaCrossCycleRankListReq) (errdata *pb.ErrorData) {
var (
uids []string
err error
result []*pb.DBCyclePagodaRecord
resultMap map[string]*pb.DBCyclePagodaRecord
ranks []*pb.DBCycleRank
)
if errdata = this.CrossCycleRankListCheck(session, req); errdata != nil {
return
}
if uids, err = this.module.modelCyclePagoda.queryRankUser(); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if result, err = this.module.modelCyclePagoda.queryPlayers(uids); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
resultMap = make(map[string]*pb.DBCyclePagodaRecord)
for _, v := range result {
resultMap[v.Uid] = v
}
ranks = make([]*pb.DBCycleRank, 0, len(uids))
for _, v := range uids {
if player, ok := resultMap[v]; ok {
ranks = append(ranks, &pb.DBCycleRank{
Uinfo: player.Uinfo,
Line: player.Data[player.Maxfloor].Line,
Floor: player.Maxfloor,
Costtime: player.Data[player.Maxfloor].Consttime,
})
}
}
session.SendMsg(string(this.module.GetType()), "crosscycleranklist", &pb.PagodaCrossCycleRankListResp{
Ranks: ranks,
})
return
}