🐞 fix(pvp): 对手等级取最新
This commit is contained in:
@@ -84,7 +84,9 @@ export class PvpHandler {
|
||||
result.setPvpDefense(pvpDefense);
|
||||
result.calHasSaveDefense();
|
||||
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
let oppPlayersReturn = await getEnemies(r, pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
// 赛季结算
|
||||
let pvpSeasonResult = await PvpSeasonResultModel.getPvpSeasonResult(roleId);
|
||||
@@ -93,8 +95,6 @@ export class PvpHandler {
|
||||
await PvpSeasonResultModel.setShow(roleId);
|
||||
}
|
||||
// 排行榜
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
let myRank = await r.getMyRank({ roleId });//去redis中获取排名
|
||||
result.setMyRank(myRank);
|
||||
|
||||
@@ -105,6 +105,7 @@ export class PvpHandler {
|
||||
async refreshOppPlayer(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
let serverId = session.get('serverId');
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
@@ -129,7 +130,11 @@ export class PvpHandler {
|
||||
|
||||
let result = new PvpDataReturn(); // 返回对象
|
||||
result.setPvpDefense(pvpDefense);
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
|
||||
let oppPlayersReturn = await getEnemies(r, pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['oppPlayers', 'refOppCnt', 'buyAttackCnt', 'setAttackCnt']));
|
||||
@@ -217,7 +222,11 @@ export class PvpHandler {
|
||||
|
||||
let result = new PvpDataReturn(); // 返回对象
|
||||
result.setPvpDefense(pvpDefense);
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
|
||||
let oppPlayersReturn = await getEnemies(r, pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
@@ -232,7 +241,7 @@ export class PvpHandler {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let sid = session.get('sid');
|
||||
|
||||
|
||||
const serverId = session.get('serverId');
|
||||
|
||||
const { battleCode, isSuccess, myHeroes, oppHeroes } = msg;
|
||||
@@ -282,8 +291,6 @@ export class PvpHandler {
|
||||
|
||||
let result = new PvpDataReturn(); // 返回对象
|
||||
result.setPvpDefense(pvpDefense);
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
|
||||
if(seasonNum == pvpSeasonNum) {
|
||||
@@ -296,6 +303,11 @@ export class PvpHandler {
|
||||
if(defenseInfo && defenseInfo.score > 0) await r.setRankWithRoleInfo(defenseInfo.roleId, defenseInfo.score, pvpDefense.updatedAt.getTime(), null, true);
|
||||
}
|
||||
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
let oppPlayersReturn = await getEnemies(r, pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
await checkTaskInPvpEnd(serverId, roleId, sid, isSuccess, pvpDefense.heroScores, pvpDefense.seasonWinNum);
|
||||
if(hisWinStreakNum < pvpDefense.hisWinStreakNum) {
|
||||
await unlockFigure(sid, roleId, [{ type: FIGURE_UNLOCK_CONDITION.PVP_WIN_SERIES, paramWinStreakNum: pvpDefense.hisWinStreakNum }]);
|
||||
@@ -313,6 +325,8 @@ export class PvpHandler {
|
||||
let { count } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
let serverId = session.get('serverId');
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
@@ -346,7 +360,10 @@ export class PvpHandler {
|
||||
result.setPvpDefense(pvpDefense);
|
||||
let pickParam = ['buyAttackCnt', 'setAttackCnt', 'refOppCnt'];
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
let oppPlayersReturn = await getEnemies(r, pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
pickParam.push('oppPlayers');
|
||||
}
|
||||
@@ -357,6 +374,7 @@ export class PvpHandler {
|
||||
async saveAttack(msg: { heroes: { actorId: number, order: number }[] }, session: BackendSession) {
|
||||
let { heroes } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let serverId = session.get('serverId');
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
@@ -392,7 +410,10 @@ export class PvpHandler {
|
||||
// 返回
|
||||
let result = new PvpDataReturn();
|
||||
result.setPvpDefense(pvpDefense);
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
|
||||
let groupId = await getPVPGroupIdOfServer(serverId);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum, groupId });
|
||||
let oppPlayersReturn = await getEnemies(r, pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['attack', 'oppPlayers', 'buyAttackCnt', 'setAttackCnt', 'challengeCnt', 'challengeRefTime']));
|
||||
|
||||
@@ -36,7 +36,7 @@ import { findKeys } from './redisService';
|
||||
* @param oppPlayers pvpDefense表中的oppPlayers字段,需要populate过的
|
||||
* @param pLv 玩家本人的队伍等级
|
||||
*/
|
||||
export async function getEnemies(oppPlayers: OppPlayer[], winStreakNum: number) {
|
||||
export async function getEnemies(r: Rank, oppPlayers: OppPlayer[], winStreakNum: number) {
|
||||
|
||||
let result = new Array<OppPlayerReturn>();
|
||||
for (let oppPlayer of oppPlayers) {
|
||||
@@ -45,12 +45,13 @@ export async function getEnemies(oppPlayers: OppPlayer[], winStreakNum: number)
|
||||
let oppDef = <PvpHistoryOppType>oppPlayer.oppDef; // select 'oppRoleId pos roleName head frame spine rankLv pLv defCe'
|
||||
|
||||
if (oppDef) delete oppDef.heroes;
|
||||
let myRank = await r.getMyRank({ roleId: robotIdComBack(oppDef.oppRoleId) });//去redis中获取排名
|
||||
result.push({
|
||||
...oppDef,
|
||||
roleId: oppDef.oppRoleId,
|
||||
defCe: oppDef.defCe,
|
||||
addScore: dicOpponent.score,
|
||||
rankLv: oppDef.rankLv,
|
||||
rankLv: myRank||0,
|
||||
plusScore: getPlusScore(winStreakNum)
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user