🐞 fix(gvg): 修复守城联军自动解散和手动解散守城

This commit is contained in:
luying
2023-03-02 14:13:22 +08:00
parent 1bb47dd958
commit 42addd572b
5 changed files with 17 additions and 5 deletions

View File

@@ -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') {

View File

@@ -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 });
}

View File

@@ -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, {

View File

@@ -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);
}

View File

@@ -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: '' } })
}
}