74 lines
1.7 KiB
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
|
|
}
|