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