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