go_dreamfactory/modules/pagoda/api_ranklist.go

74 lines
1.7 KiB
Go

package pagoda
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) RankListCheck(session comm.IUserSession, req *pb.PagodaRankListReq) (errdata *pb.ErrorData) {
if req.Cid == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
return
}
return
}
func (this *apiComp) RankList(session comm.IUserSession, req *pb.PagodaRankListReq) (errdata *pb.ErrorData) {
var (
szRank []*pb.PagodaRank
)
if errdata = this.RankListCheck(session, req); errdata != nil {
return
}
var (
uids []string
err error
result []*pb.DBPagodaRecord
resultMap map[string]*pb.DBPagodaRecord
)
if uids, err = this.module.modulerank.queryRankUser(req.Cid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if result, err = this.module.modulerank.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.DBPagodaRecord)
for _, v := range result {
resultMap[v.Uid] = v
}
szRank = make([]*pb.PagodaRank, 0, len(uids))
for _, v := range uids {
if player, ok := resultMap[v]; ok {
szRank = append(szRank, &pb.PagodaRank{
Uinfo: player.Uinfo,
Line: player.Data[req.Cid].Line,
Floor: req.Cid,
Costtime: player.Data[req.Cid].Consttime,
})
}
}
session.SendMsg(string(this.module.GetType()), PagodaRankListResp, &pb.PagodaRankListResp{
Ranks: szRank,
Franks: []*pb.PagodaRank{},
})
return
}