名将擂台:排行榜细节

This commit is contained in:
luying
2022-07-16 18:40:10 +08:00
parent 0a80d3f2cf
commit d9f6174900
3 changed files with 27 additions and 12 deletions

View File

@@ -1,15 +1,16 @@
import { ITEM_CHANGE_REASON, LADDER_OPP_STATUS, LADDER_STATUS, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY } from "../consts";
import { HeroType } from "../db/Hero";
import { LadderMatchModel, LadderMatchType, LadderUpdateInter } from "../db/LadderMatch";
import { LadderMatchRecModel } from "../db/LadderMatchRec";
import { LadderMatchRecModel, LadderMatchRecType } from "../db/LadderMatchRec";
import { RoleModel, RoleType } from "../db/Role";
import { LadderDataReturn, LadderDefense, LadderOppPlayerHeroInfo, LadderOppPlayerInDB, LadderOppPlayerInfo, LadderOppPlayerReturn } from "../domain/battleField/ladder";
import { LadderDataReturn, LadderDefense, LadderOppDetailReturn, LadderOppPlayerHeroInfo, LadderOppPlayerInDB, LadderOppPlayerInfo, LadderOppPlayerReturn } from "../domain/battleField/ladder";
import { RoleAndGuildRankInfo, RoleRankInfo } from "../domain/rank";
import { gameData, getDicLadderMatchByMyRank, getLadderRankReward } from "../pubUtils/data";
import { EXTERIOR, LADDER } from "../pubUtils/dicParam";
import { ItemInter, RewardInter } from "../pubUtils/interface";
import { getRandValueByMinMax, shouldRefresh } from "../pubUtils/util";
import { sendMailByContent } from "./mailService";
import { getHeroesAttributes } from "./playerCeService";
import { sendMessageToUserWithSuc } from "./pushService";
import { Rank } from "./rankService";
import { addItems } from "./role/rewardService";
@@ -94,7 +95,7 @@ async function getOppPlayerDetailByDb(serverId: number, oppPlayers: LadderOppPla
// 获取redis当中的玩家排名数据
export async function getLadderMatchByRank(serverId: number, max: number|'+inf', min: number|'-inf') {
let r = new Rank(REDIS_KEY.LADDER, { serverId }, false, 3000);
let r = new Rank(REDIS_KEY.LADDER, { serverId }, false, 4000);
let rawResults = await r.getRankByRangeRaw(max, min, false);
return rawResults.map(cur => ({ rank: cur.scores[0], roleId: cur.field }))
}
@@ -204,8 +205,10 @@ export async function getLadderOppStatus(ladderData: LadderMatchType, targetRole
if(!curOppPlayer|| curOppPlayer.rank != rank) return { status: LADDER_OPP_STATUS.OPP_RANK_CHANGE };
if(curOppPlayer.isRobot) {
let hisLadderData = await LadderMatchModel.checkByRank(rank);
if(hisLadderData) return { status: LADDER_OPP_STATUS.OPP_RANK_CHANGE };
if(rank <= 3000) {
let hisLadderData = await LadderMatchModel.checkByRank(rank);
if(hisLadderData) return { status: LADDER_OPP_STATUS.OPP_RANK_CHANGE };
}
return { status: LADDER_OPP_STATUS.BATTLE, isRobot: true };
} else {
@@ -336,4 +339,22 @@ export async function sendLadderDailyReward(serverId: number) {
await sendMailByContent(MAIL_TYPE.LADDER, roleId, { params: [`${rank}`], goods: dicRankReward.reward });
}
}
}
export async function getLadderOppDetailData(rec: LadderMatchRecType) {
let isRobot = rec.defenseInfo.isRobot;
let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(rec.defenseInfo.oldRank);
let result = new LadderOppDetailReturn(rec);
if(isRobot) {
result.setByRobot(dicLadderDifficultRatio);
} else {
let hisLadderData = await LadderMatchModel.findByRoleIdAndInclude(rec.roleId2);
let dicWarJson = gameData.warJson.get(dicLadderDifficultRatio.gkId)
result.setByPlayer(hisLadderData, dicWarJson);
let attrByHid = await getHeroesAttributes(rec.roleId2);
for(let [hid, attribute] of attrByHid) {
result.setAttribute(hid, attribute.getAttributesToString());
}
}
return result;
}

View File

@@ -78,7 +78,7 @@ export default class LadderMatch extends BaseModel {
public static async findAll(serverId: number) {
let result: LadderMatchType[] = [], latestTime = new Date();
while(latestTime) {
let ladderMatch = await LadderMatchModel.find({ serverId, rank: { $gt: 0, $lte: 3000 }, createdAt: { $lt: latestTime } })
let ladderMatch = await LadderMatchModel.find({ serverId, rank: { $gt: 0 }, createdAt: { $lt: latestTime } })
.sort({ createdAt: -1 })
.populate('role', 'roleId roleName head frame spine heads frames spines title lv updatedAt')
.limit(1000);

View File

@@ -52,11 +52,5 @@
"rankMin": 2000,
"rankMax": 3000,
"reward": "31002&100|31001&1000"
},
{
"id": 10,
"rankMin": 3000,
"rankMax": -1,
"reward": "31002&100|31001&500"
}
]