寻宝:服务器重启时清理之前战斗的状态;匹配时检查队伍时间
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { COM_TEAM_STATUS } from './app/consts/consts';
|
||||||
import {
|
import {
|
||||||
createTcpAcceptor,
|
createTcpAcceptor,
|
||||||
createTcpMailBox,
|
createTcpMailBox,
|
||||||
@@ -19,6 +20,7 @@ import * as redlockCacheService from './app/services/redlockCacheService';
|
|||||||
import * as redLockService from './app/services/redLockService';
|
import * as redLockService from './app/services/redLockService';
|
||||||
// TODO 需要整理。
|
// TODO 需要整理。
|
||||||
import _pinus = require('pinus');
|
import _pinus = require('pinus');
|
||||||
|
import { updateTeamStatus } from './app/services/comBattleService';
|
||||||
|
|
||||||
const filePath = (_pinus as any).FILEPATH;
|
const filePath = (_pinus as any).FILEPATH;
|
||||||
filePath.MASTER = '/config/master';
|
filePath.MASTER = '/config/master';
|
||||||
@@ -68,6 +70,7 @@ app.configure(function() {
|
|||||||
if (app.serverId === 'master-server-1') {
|
if (app.serverId === 'master-server-1') {
|
||||||
redisService.initAllRank();
|
redisService.initAllRank();
|
||||||
redisService.clearComBtlQueue();
|
redisService.clearComBtlQueue();
|
||||||
|
updateTeamStatus(COM_TEAM_STATUS.DEFAULT, COM_TEAM_STATUS.LOOSE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ export class ComBattleHandler {
|
|||||||
}
|
}
|
||||||
// 机器人队伍 3 秒直接开战
|
// 机器人队伍 3 秒直接开战
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
await ComBattleTeamModel.updateStatus(teamCode, COM_TEAM_STATUS.FIGHTING);
|
await ComBattleTeamModel.updateStatusByCode(teamCode, COM_TEAM_STATUS.FIGHTING);
|
||||||
comTeam.status = COM_TEAM_STATUS.FIGHTING;
|
comTeam.status = COM_TEAM_STATUS.FIGHTING;
|
||||||
channelService.pushMessageByUids('onComBtlStart', resResult(STATUS.SUCCESS, {teamCode, roleStatus: comTeam.roleStatus}), [{uid: roleId, sid}]);
|
channelService.pushMessageByUids('onComBtlStart', resResult(STATUS.SUCCESS, {teamCode, roleStatus: comTeam.roleStatus}), [{uid: roleId, sid}]);
|
||||||
}, 3000);
|
}, 3000);
|
||||||
@@ -523,7 +523,7 @@ export class ComBattleHandler {
|
|||||||
|
|
||||||
teamStatus.status = COM_TEAM_STATUS.FIGHTING;
|
teamStatus.status = COM_TEAM_STATUS.FIGHTING;
|
||||||
|
|
||||||
let team = await ComBattleTeamModel.updateStatus(teamCode, COM_TEAM_STATUS.FIGHTING);
|
let team = await ComBattleTeamModel.updateStatusByCode(teamCode, COM_TEAM_STATUS.FIGHTING);
|
||||||
if (!team) return resResult(STATUS.COM_BATTLE_START_ERR);
|
if (!team) return resResult(STATUS.COM_BATTLE_START_ERR);
|
||||||
|
|
||||||
clearComBtlTimer(teamCode, this.teamDisTimer); // 战斗开始停止解散计时
|
clearComBtlTimer(teamCode, this.teamDisTimer); // 战斗开始停止解散计时
|
||||||
|
|||||||
@@ -167,3 +167,14 @@ export async function getFrd(roleId: string, quality: number) {
|
|||||||
if (assistTime >= assistanceTime) isFrd = true;
|
if (assistTime >= assistanceTime) isFrd = true;
|
||||||
return isFrd;
|
return isFrd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 更新队伍状态
|
||||||
|
* @export
|
||||||
|
* @param {number} preStatus 更新前状态,作为筛选条件
|
||||||
|
* @param {number} newStatus 要设置的新状态
|
||||||
|
*/
|
||||||
|
export async function updateTeamStatus(preStatus: number, newStatus: number) {
|
||||||
|
if (preStatus === newStatus) return;
|
||||||
|
await ComBattleTeamModel.updateStatusByStatus(preStatus, newStatus);
|
||||||
|
}
|
||||||
@@ -166,11 +166,16 @@ export default class ComBattleTeam extends BaseModel {
|
|||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async updateStatus(teamCode: string, status: number, lean = true) {
|
public static async updateStatusByCode(teamCode: string, status: number, lean = true) {
|
||||||
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamCode }, {status}, {new: true}).lean(lean);
|
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamCode }, {status}, {new: true}).lean(lean);
|
||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async updateStatusByStatus(preStatus: number, newStatus: number, lean = true) {
|
||||||
|
const team = await ComBattleTeamModel.updateMany({ status: preStatus }, {status: newStatus}, {new: true}).lean(lean);
|
||||||
|
return team;
|
||||||
|
}
|
||||||
|
|
||||||
public static async updateResult(teamCode: string, roleId: string, isSuccess: boolean, _lean = true) {
|
public static async updateResult(teamCode: string, roleId: string, isSuccess: boolean, _lean = true) {
|
||||||
let team = await ComBattleTeamModel.findOne({teamCode}).select('status roleStatus');
|
let team = await ComBattleTeamModel.findOne({teamCode}).select('status roleStatus');
|
||||||
if(!team) return;
|
if(!team) return;
|
||||||
@@ -214,7 +219,8 @@ export default class ComBattleTeam extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async getOtherTeamByQualityAndSt(roleId: string, qualityArr: Array<number>, status: number, ce = 0, pub = true, cntLmt = 2, lean = true) {
|
public static async getOtherTeamByQualityAndSt(roleId: string, qualityArr: Array<number>, status: number, ce = 0, pub = true, cntLmt = 2, lean = true) {
|
||||||
const team: ComBattleTeamType = await ComBattleTeamModel.findOne({quality: {$in: qualityArr}, status, ceLimit: {$lte: ce}, pub, roleCnt: {$lte: cntLmt}, roleIds: {$nin: [roleId]}}).lean(lean);
|
const curTime = new Date(Date.now() - 10 * 60 * 1000); // 10分钟之前
|
||||||
|
const team: ComBattleTeamType = await ComBattleTeamModel.findOne({quality: {$in: qualityArr}, status, ceLimit: {$lte: ce}, pub, roleCnt: {$lte: cntLmt}, roleIds: {$nin: [roleId]}, updatedAt: {$gte: curTime}}).lean(lean);
|
||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user