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

65 lines
1.6 KiB
Go

package pagoda
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) CrossRaceRankListCheck(session comm.IUserSession, req *pb.PagodaCrossRaceRankListReq) (errdata *pb.ErrorData) {
return
}
// 六合塔榜
func (this *apiComp) CrossRaceRankList(session comm.IUserSession, req *pb.PagodaCrossRaceRankListReq) (errdata *pb.ErrorData) {
var (
uids []string
err error
result []*pb.DBRacePagodaRecord
resultMap map[string]*pb.DBRacePagodaRecord
ranks []*pb.DBRaceRank
)
if errdata = this.CrossRaceRankListCheck(session, req); errdata != nil {
return
}
if uids, err = this.module.modelRacePagoda.queryRankUser(); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if result, err = this.module.modelRacePagoda.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.DBRacePagodaRecord)
for _, v := range result {
resultMap[v.Uid] = v
}
ranks = make([]*pb.DBRaceRank, 0, len(uids))
for _, v := range uids {
if player, ok := resultMap[v]; ok {
ranks = append(ranks, &pb.DBRaceRank{
Uinfo: player.Uinfo,
Line: player.Data[player.Maxfloor].Line,
Floor: player.Maxfloor,
Costtime: player.Data[player.Maxfloor].Consttime,
})
}
}
session.SendMsg(string(this.module.GetType()), PagodaCrossRaceRankListReq, &pb.PagodaCrossRaceRankListResp{
Ranks: ranks,
})
return
}