名将擂台:排行榜细节
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user