pvp:修复赛季相关
This commit is contained in:
@@ -46,7 +46,8 @@ export class PvpHandler {
|
||||
}
|
||||
// 如果没有发过,将上赛季的奖励发下
|
||||
pvpDefense = await sendLastSeasonRewardIfNotSent(pvpDefense);
|
||||
let { seasonNum, seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
|
||||
let update: pvpUpdateInter = { };
|
||||
let result = new PvpDataReturn(); // 返回对象
|
||||
@@ -60,7 +61,7 @@ export class PvpHandler {
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
if(pvpDefense.attack) {
|
||||
let role = <RoleType>pvpDefense.role;
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
update.oppPlayers = oppPlayers;
|
||||
}
|
||||
update = { ...update, ...refOppObj }
|
||||
@@ -81,13 +82,13 @@ export class PvpHandler {
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
// 赛季结算
|
||||
let pvpSeasonResult = await PvpSeasonResultModel.getPvpSeasonResult(roleId, pvpDefense.seasonNum);
|
||||
let pvpSeasonResult = await PvpSeasonResultModel.getPvpSeasonResult(roleId);
|
||||
if (!!pvpSeasonResult && !!pvpSeasonResult.show) {
|
||||
result.setPvpSeasonResult(pvpSeasonResult);
|
||||
await PvpSeasonResultModel.updatePvpSeasonResult(roleId, pvpSeasonResult.seasonNum, { show: false });
|
||||
}
|
||||
// 拍卖
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, {});
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
||||
let myRank = await r.getMyRank({ roleId });//去redis中获取排名
|
||||
result.setMyRank(myRank);
|
||||
|
||||
@@ -115,8 +116,8 @@ export class PvpHandler {
|
||||
|
||||
// 刷新对手
|
||||
let role = <RoleType>pvpDefense.role;
|
||||
let { seasonNum } = await PVPConfigModel.findCurPVPConfig();
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { oppPlayers, ...refOppObj });
|
||||
|
||||
@@ -125,7 +126,7 @@ export class PvpHandler {
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['oppPlayers', 'refOppCnt', 'setAttackCnt']));
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['oppPlayers', 'refOppCnt', 'buyAttackCnt', 'setAttackCnt']));
|
||||
}
|
||||
|
||||
// 获取对手阵容具体信息
|
||||
@@ -134,6 +135,7 @@ export class PvpHandler {
|
||||
|
||||
let oppoRoleId = msg.roleId;
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
let { oppPlayers } = pvpDefense;
|
||||
|
||||
let curOpp = oppPlayers.find(cur => cur.roleId == oppoRoleId);
|
||||
@@ -159,7 +161,7 @@ export class PvpHandler {
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if (!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
// 检查挑战次数
|
||||
let { seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let { challengeCnt, challengeRefTime } = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||
if (challengeCnt == 0) {
|
||||
return resResult(STATUS.PVP_CHALLENGE_TIMES_NOT_ENOUGH);
|
||||
@@ -234,8 +236,9 @@ export class PvpHandler {
|
||||
await PvpHistoryOppModel.setStatus(roleId, oppRoleId, 1);
|
||||
|
||||
// 刷新对手
|
||||
let { seasonNum, seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score ,pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
update.oppPlayers = oppPlayers;
|
||||
|
||||
// 更新battleRecord
|
||||
@@ -257,7 +260,7 @@ export class PvpHandler {
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
// 加入排行榜
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, {});
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
||||
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
|
||||
let myRank = await r.getMyRank({ roleId });
|
||||
result.setMyRank(myRank);
|
||||
@@ -303,8 +306,8 @@ export class PvpHandler {
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
if(pvpDefense.attack) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let { seasonNum } = await PVPConfigModel.findCurPVPConfig();
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
update.oppPlayers = oppPlayers;
|
||||
}
|
||||
}
|
||||
@@ -341,7 +344,9 @@ export class PvpHandler {
|
||||
return resResult(STATUS.PVP_SET_ATTACK_CNT_NOT_ENOUGH);
|
||||
}
|
||||
refOppObj.setAttackCnt ++;
|
||||
let { seasonNum, seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||
// 更新挑战阵容
|
||||
let score = 0;
|
||||
@@ -355,7 +360,7 @@ export class PvpHandler {
|
||||
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, attack.heroes, []);
|
||||
// 刷对手
|
||||
let role = <RoleType>pvpDefense.role;
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, attack?.score||0, attack?.pLv||1);
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score, attack?.score||0, attack?.pLv||1);
|
||||
// 保存
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { ...refOppObj, ...refChallengeObj, attack, oppPlayers, lineupCe });
|
||||
// 返回
|
||||
@@ -364,7 +369,7 @@ export class PvpHandler {
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['attack', 'oppPlayers', 'setAttackCnt', 'challengeCnt', 'challengeRefTime']));
|
||||
return resResult(STATUS.SUCCESS, pick(result, ['attack', 'oppPlayers', 'buyAttackCnt', 'setAttackCnt', 'challengeCnt', 'challengeRefTime']));
|
||||
}
|
||||
|
||||
//3. 保存防守阵容
|
||||
@@ -378,7 +383,7 @@ export class PvpHandler {
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
// 刷新次数
|
||||
let { seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||
// 更新防守阵容
|
||||
let score = 0, heroIdMap = new Map<number, string>(), hids: number[] = [];
|
||||
@@ -424,7 +429,8 @@ export class PvpHandler {
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, {});
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
||||
let { ranks, myRank } = await r.getRankListWithMyRank({ roleId });
|
||||
|
||||
if (!myRank) {
|
||||
@@ -456,11 +462,13 @@ export class PvpHandler {
|
||||
for (let hero of pvpHistoryOpp.heroes) {
|
||||
let newHero = new PlayerDetailHero();
|
||||
newHero.setPvpHeroInfo(hero);
|
||||
newHero.setIsDefense(true);
|
||||
heroes.push(newHero);
|
||||
}
|
||||
for (let hero of pvpHistoryOpp.otherHeroes) {
|
||||
let newHero = new PlayerDetailHero();
|
||||
newHero.setPvpHeroInfo(hero);
|
||||
newHero.setIsDefense(false);
|
||||
heroes.push(newHero);
|
||||
}
|
||||
result = new PlayerDetail({ ...pvpHistoryOpp, roleId: pvpHistoryOpp.oppRoleId, heroes, rank: pvpHistoryOpp.rankLv });
|
||||
@@ -470,15 +478,15 @@ export class PvpHandler {
|
||||
let role = await RoleModel.findByRoleId(oppoRoleId);
|
||||
|
||||
let heroes = new Array<PlayerDetailHero>();
|
||||
for (let { hid, lv, star, colorStar, quality, skinId } of dbHeroes) {
|
||||
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == hid);
|
||||
heroes.push({
|
||||
actorId: hid, lv, star, colorStar, quality, skinId,
|
||||
score: heroScore ? heroScore.score : 0
|
||||
});
|
||||
for (let dbHero of dbHeroes) {
|
||||
let hero = new PlayerDetailHero();
|
||||
hero.setByDbHero(dbHero);
|
||||
hero.setPvpDefense(pvpDefense);
|
||||
heroes.push(hero);
|
||||
}
|
||||
heroes.sort((a, b) => b.score - a.score);
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, {});
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
||||
let rank = await r.getMyRank({ roleId: oppoRoleId });//去redis中获取排名
|
||||
|
||||
result = new PlayerDetail({ ...role, ...pvpDefense, heroes, rank });
|
||||
@@ -494,7 +502,7 @@ export class PvpHandler {
|
||||
let sid: string = session.get('sid');
|
||||
let roleName = session.get('roleName');
|
||||
|
||||
let { seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let { hisScore, receivedBox, challengeCnt: lastChallengeCnt, challengeRefTime: lastChallengeRefTime } = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
let pvpBoxs = getPvpBoxs();
|
||||
let pvpBox = findWhere(pvpBoxs, { id });
|
||||
@@ -552,7 +560,8 @@ export class PvpHandler {
|
||||
const role = await RoleModel.findByRoleId(roleId);
|
||||
|
||||
// 加入排行榜
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, {});
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
||||
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
|
||||
|
||||
// 任务
|
||||
@@ -560,17 +569,6 @@ export class PvpHandler {
|
||||
|
||||
return resResult(STATUS.SUCCESS, { score, hisScore, heroScores });
|
||||
}
|
||||
/*
|
||||
async debugPvpSeasonReset(msg: {}, session: BackendSession) {
|
||||
await pvpSeasonEnd({ name: 'exce setPvpSeasonResult debug' });
|
||||
let systemConfig = await createNextPvpSeason();
|
||||
return resResult(STATUS.SUCCESS, { seasonNum: systemConfig.seasonNum, seasonEndTime: systemConfig.seasonEndTime })
|
||||
}
|
||||
|
||||
async debugPvpWarReset(msg: {}, session: BackendSession) {
|
||||
let systemConfig = await resetPvpWarId();
|
||||
return resResult(STATUS.SUCCESS, { systemConfig });
|
||||
}
|
||||
|
||||
async debugPvpSeasonResetTime(msg: { day: number }, session: BackendSession) {
|
||||
let { day: hour } = msg;
|
||||
@@ -578,7 +576,6 @@ export class PvpHandler {
|
||||
return resResult(STATUS.SUCCESS, { seasonNum, seasonEndTime });
|
||||
}
|
||||
|
||||
*/
|
||||
async debugAddChallengeCnt(msg: { challengeCnt: number }, session: BackendSession) {
|
||||
let { challengeCnt } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
Reference in New Issue
Block a user