🐞 fix(gvg): 修复守城联军自动解散和手动解散守城
This commit is contained in:
@@ -203,7 +203,7 @@ async function treatStartLogic(app: _pinus.Application) {
|
||||
if(app.getServerType() != 'systimer') {
|
||||
timeTaskService.initHiddenData();
|
||||
}
|
||||
if(app.getServerType() == 'guild'|| app.getServerType() == 'chat'|| app.getServerType() == 'connector') {
|
||||
if(app.getServerType() == 'guild'|| app.getServerType() == 'chat'|| app.getServerType() == 'connector' || app.getServerType() == 'systimer' || app.getServerType() == 'gm') {
|
||||
setGVGServerGroup();
|
||||
}
|
||||
if(app.getServerType() == 'guild') {
|
||||
|
||||
@@ -32,6 +32,7 @@ import { GuildActiveModel } from '../../../db/GuildActive';
|
||||
import { leaveRaceActivityToRemote, leaveRaceWhenDismissToRemote, leaveRaceWhenQuitGuildToRemote } from '../../../services/guildActivity/guildActivityService';
|
||||
import { getGVGInfoInGuild } from '../../../services/gvg/gvgService';
|
||||
import { guildAbdicateToLeague, guildDismissToLeague, memberQuitGuildToLeague } from '../../../services/gvg/gvgTeamService';
|
||||
import { leaveCity } from '../../../services/gvg/gvgBattleService';
|
||||
|
||||
|
||||
export default function (app: Application) {
|
||||
@@ -624,6 +625,7 @@ export class GuildHandler {
|
||||
changeGuildActivity('', serverId, roleId, sid);
|
||||
leaveRaceWhenQuitGuildToRemote(serverId, guildCode, roleId);
|
||||
guildPayQuitGuild(serverId, code, roleId);
|
||||
leaveCity(true, roleId, serverId, guildCode);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { hasGuild: role.hasGuild });
|
||||
}
|
||||
@@ -665,6 +667,7 @@ export class GuildHandler {
|
||||
reportTAEvent(memberRoleId, TA_EVENT.GUILD_QUIT, { name: guild.name, way: GUILD_QUIT_WAY.KICK });
|
||||
leaveRaceWhenQuitGuildToRemote(serverId, code, memberRoleId);
|
||||
guildPayQuitGuild(serverId, code, memberRoleId);
|
||||
leaveCity(true, memberRoleId, serverId, code);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { memberCnt: guild.memberCnt });
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { resResult } from "../../../pubUtils/util";
|
||||
import { GuildModel, GuildType } from "../../../db/Guild";
|
||||
import { GVGLeagueModel, GVGLeagueType } from "../../../db/GVGLeague";
|
||||
import { GVGLeagueApplyModel } from "../../../db/GVGLeagueApply";
|
||||
import { calLeagueCe, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType, getServersOfSameGroup } from "../../../services/gvg/gvgService";
|
||||
import { calLeagueCe, getGroupIdOfServer, getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType, getServersOfSameGroup } from "../../../services/gvg/gvgService";
|
||||
import { checkCanManage, checkGuildLeader, checkLeagueAuth, createLeague, getLeagueApplyData, getLeagueInviteData, getMyAuth, joinGuildToLeague, updateGVGBattleLeagueInfo } from "../../../services/gvg/gvgTeamService";
|
||||
import { LeagueGuildInfo, LeagueListInfo, LeagueMemberListInfo, LeagueSimpleInfo } from "../../../domain/gvgField/returnData";
|
||||
import { getAllServerName, getServerName, isRoleOnline, updateUserInfo } from "../../../services/redisService";
|
||||
@@ -18,6 +18,7 @@ import { sendMailByContent, sendMailToGuildByContent, sendMailToLeagueByContent
|
||||
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
|
||||
import { addLeagueRenameRecord, changeNoticeMessage, guildQuitLeagueRecord } from "../../../services/gvg/gvgRecService";
|
||||
import { LeagueLeader } from "../../../domain/rank";
|
||||
import GVGCity from "../../../db/GVGCity";
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -479,6 +480,9 @@ export class GVGManageHandler {
|
||||
const guildCode = session.get('guildCode');
|
||||
|
||||
const { leagueCode: targetLeagueCode } = msg;
|
||||
const { configId, period } = getGVGPeriodData();
|
||||
if(period != GVG_PERIOD.TEAM) return resResult(STATUS.GVG_NOT_TEAM_PERIOD);
|
||||
const groupKey = await getGroupKey(serverId);
|
||||
|
||||
const checkResult = await checkCanManage(serverId);
|
||||
if(checkResult.code != 0) return checkResult;
|
||||
@@ -501,6 +505,7 @@ export class GVGManageHandler {
|
||||
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.LEAGUE_DISSMISS, { leagueCode: myLeague.leagueCode });
|
||||
await sendMailToGuildByContent(MAIL_TYPE.LEAGUE_DISSMISS, guildCode, { params: [ myLeague.name ]});
|
||||
}
|
||||
await GVGCity.leagueDismiss(configId, groupKey, targetLeagueCode);
|
||||
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
|
||||
@@ -44,7 +44,7 @@ export async function createNewGVGConfig() {
|
||||
let needDissmissLeagueId: string[] = [], needDissmissLeagueCodes: string[] = [];
|
||||
for(let league of autoLeagues) {
|
||||
let groupKey = await getGroupKey(league.serverId);
|
||||
if(!await GVGCityModel.checkLeagueHasGuard(config.configId, groupKey, league.leagueCode)) {
|
||||
if(!await GVGCityModel.checkLeagueHasGuard(groupKey, league.leagueCode)) {
|
||||
needDissmissLeagueId.push(league._id);
|
||||
needDissmissLeagueCodes.push(league.leagueCode);
|
||||
}
|
||||
|
||||
@@ -78,8 +78,8 @@ export default class GVGCity extends BaseModel {
|
||||
}
|
||||
|
||||
// 查询联军驻守情况
|
||||
public static async checkLeagueHasGuard(configId: number, groupKey: string, leagueCode: string) {
|
||||
return await GVGCityModel.exists({ configId: { $lte: configId }, groupKey, guardLeague: leagueCode, hasGuard: true });
|
||||
public static async checkLeagueHasGuard(groupKey: string, leagueCode: string) {
|
||||
return await GVGCityModel.exists({ groupKey, guardLeague: leagueCode, hasGuard: true });
|
||||
}
|
||||
|
||||
// 查询联军驻守情况
|
||||
@@ -120,6 +120,10 @@ export default class GVGCity extends BaseModel {
|
||||
if(icon != undefined) updateInfo.guardLeagueIcon = icon;
|
||||
await GVGCityModel.updateMany({ guardLeague: leagueCode }, { $set: updateInfo });
|
||||
}
|
||||
|
||||
public static async leagueDismiss(configId: number, groupKey: string, leagueCode: string) {
|
||||
await GVGCityModel.updateMany({ configId, groupKey, guardLeague: leagueCode }, { $set: { hasGuard: false, guardLeague: '', guardLeagueIcon: 0, guardLeagueName: '' } })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user