名将擂台:超时推送逻辑修改

This commit is contained in:
luying
2022-07-20 09:33:31 +08:00
parent c49dac5234
commit 019d4913d7
4 changed files with 32 additions and 18 deletions

View File

@@ -212,7 +212,7 @@ export class LadderHandler {
await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess? 1: 2 } });
let historyRank = ladderData.historyRank;
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: (historyRank > rank || historyRank == 0)? rank: historyRank });
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: (historyRank > atkLadderMatch.rank || historyRank == 0)? atkLadderMatch.rank: historyRank });
result.setLadderData(ladderData, rec);
// 获取奖励

View File

@@ -267,19 +267,23 @@ function calculateDefCeByDefense(defense: LadderDefense) {
return ce;
}
export async function ladderTimeout(battleCode: string, status: LADDER_STATUS) {
let rec = await LadderMatchRecModel.findByBattleCode(battleCode);
if(status == LADDER_STATUS.CHECK) {
await sendMessageToUserWithSuc(rec.roleId1, PUSH_ROUTE.LADDER_CHECK_STOP, { battleCode });
} else if (status == LADDER_STATUS.BATTLE) {
export async function ladderTimeWillout(battleCode: string, status: LADDER_STATUS) {
console.log('######### ladderTimeWillout')
if (status == LADDER_STATUS.BATTLE) {
let rec = await LadderMatchRecModel.findByBattleCode(battleCode);
await sendMessageToUserWithSuc(rec.roleId1, PUSH_ROUTE.LADDER_BATTLE_STOP, { battleCode });
}
}
setTimeout(async () => {
let rec = await LadderMatchRecModel.timeout(battleCode);
// console.log('##### rec.defenseInfo', rec.defenseInfo, rec.defenseInfo.isRobot, rec.defenseInfo.roleId)
if(rec.defenseInfo && !rec.defenseInfo.isRobot) await LadderMatchModel.unlock(rec.serverId, rec.defenseInfo.roleId);
}, LADDER_SERVER_GAP_TIME * 1000);
export async function ladderTimeout(battleCode: string, status: LADDER_STATUS) {
console.log('######### ladderTimeout')
let rec = await LadderMatchRecModel.timeout(battleCode);
// console.log('##### rec.defenseInfo', rec.defenseInfo, rec.defenseInfo.isRobot, rec.defenseInfo.roleId)
if(rec.defenseInfo && !rec.defenseInfo.isRobot) await LadderMatchModel.unlock(rec.serverId, rec.defenseInfo.roleId);
if(status == LADDER_STATUS.CHECK) {
await sendMessageToUserWithSuc(rec.roleId1, PUSH_ROUTE.LADDER_CHECK_STOP, { battleCode });
}
}
/**
@@ -338,7 +342,7 @@ export function completeLadderRanks(ranks: RoleAndGuildRankInfo[]) {
result.push(rank);
} else {
let rank = new RoleAndGuildRankInfo(i, 0);
rank.setByField(`robot${i}`, LADDER.LADDER_ROBOT_NAME, head, EXTERIOR.EXTERIOR_FACECASE, spine, level, 1, '', ce );
rank.setByField(`robot${i}`, LADDER.LADDER_ROBOT_NAME, head, EXTERIOR.EXTERIOR_FACECASE, spine, level, 1, '', ce, ce );
result.push(rank);
}
}

View File

@@ -39,7 +39,7 @@ import { resResult } from '../pubUtils/util';
import { checkPopUpConditionWhenGuildActivityEnd } from './activity/popUpShopService';
import { pushRefreshTime } from './connectorService';
import { sendUnReceivedActivityDailyCoin } from './activity/dailyCoinService';
import { ladderTimeout, sendLadderDailyReward } from './ladderService';
import { ladderTimeout, ladderTimeWillout, sendLadderDailyReward } from './ladderService';
import { clearLadderLock } from './ladderService';
const PER_SECOND = 1 * 1000;
@@ -748,7 +748,13 @@ export async function setLadderCountDown(battleCode: string, time: number, statu
}
let endTime = time + (status == LADDER_STATUS.CHECK? LADDER.LADDER_BATTLE_PREPARE_COUNTDOWN: LADDER.LADDER_BATTLE_COUNTDOWN);
scheduleJob(`ladder${battleCode}`, endTime * 1000, async () => {
await ladderTimeout(battleCode, status);
await ladderTimeWillout(battleCode, status);
scheduledJobs[`ladder${battleCode}`].cancel();
scheduleJob(`ladder${battleCode}`, endTime * 1000 + LADDER_SERVER_GAP_TIME * 1000, async () => {
await ladderTimeout(battleCode, status);
scheduledJobs[`ladder${battleCode}`].cancel();
});
})
}

View File

@@ -33,6 +33,9 @@ export class RankParam {
@prop({ required: true })
ce: number = 0;
@prop({ required: true })
topLineupCe: number = 0;
@prop({ required: true })
updatedAt?: number = 0;
@@ -45,6 +48,7 @@ export class RankParam {
if(role.title) this.title = role.title;
if(role.guildName) this.guildName = role.guildName||"";
if(role.ce) this.ce = role.ce;
if(role.topLineupCe) this.topLineupCe = role.topLineupCe;
if(role.updatedAt) {
if(typeof role.updatedAt == 'number') {
this.updatedAt = role.updatedAt;
@@ -225,7 +229,7 @@ export class RoleAndGuildRankInfo {
}
setUserInfo(role: RoleRankInfo) {
this.userInfo = pick(role, ['roleId', 'roleName', 'head', 'frame', 'spine', 'lv', 'title', 'guildName', 'ce']);
this.userInfo = pick(role, ['roleId', 'roleName', 'head', 'frame', 'spine', 'lv', 'title', 'guildName', 'ce', 'topLineupCe']);
this.lineup = role.lineup;
}
@@ -244,8 +248,8 @@ export class RoleAndGuildRankInfo {
return false;
}
setByField(roleId: string, roleName: string, head: number, frame: number, spine: number, lv: number, title: number, guildName: string, ce: number) {
this.userInfo = { roleId, roleName, head, frame, spine, lv, title, guildName, ce }
setByField(roleId: string, roleName: string, head: number, frame: number, spine: number, lv: number, title: number, guildName: string, ce: number, topLineupCe: number) {
this.userInfo = { roleId, roleName, head, frame, spine, lv, title, guildName, ce, topLineupCe }
}
}
@@ -386,7 +390,7 @@ export class GeneralRankParam {
this.type = type;
if(general == 1) {
if(rankInfo instanceof RoleRankInfo) {
this.userInfo = pick(rankInfo, ['roleId', 'roleName', 'head', 'frame', 'spine', 'guildName', 'ce', 'title', 'lv']);
this.userInfo = pick(rankInfo, ['roleId', 'roleName', 'head', 'frame', 'spine', 'guildName', 'ce', 'title', 'lv', 'topLineupCe']);
}
}
this.num = rankInfo.num;