diff --git a/game-server/app/servers/guild/handler/guildHandler.ts b/game-server/app/servers/guild/handler/guildHandler.ts index 6e7e4c6d2..2a0221563 100644 --- a/game-server/app/servers/guild/handler/guildHandler.ts +++ b/game-server/app/servers/guild/handler/guildHandler.ts @@ -718,7 +718,7 @@ export class GuildHandler { let managerCntInc = topUserGuild.auth == GUILD_AUTH.MANAGER ? -1 : 0; // 管理人数 - const guild = await GuildModel.updateInfo(code, { leader: topUser._id }, { managerCnt: managerCntInc }, 'managerCnt name'); // 如果有转让团长设置leader + const guild = await GuildModel.updateInfo(code, { leader: topUser._id }, { managerCnt: managerCntInc }, 'managerCnt name leagueCode'); // 如果有转让团长设置leader // 添加动态 await addGuildRecord(roleId, code, GUILD_REC_TYPE.IMPEACH, [oldRoleName, topUser.roleName]); @@ -728,7 +728,8 @@ export class GuildHandler { await updateUserInfo(REDIS_KEY.GUILD_INFO, code, [{ field: 'leader', value: new GuildLeader(topUser) }]); await RoleModel.updateRoleInfo(leaderRoleId, { isGuildLeader: false }); - await RoleModel.updateRoleInfo(topUser.roleId, { isGuildLeader: true }); + let newLeader = await RoleModel.updateRoleInfo(topUser.roleId, { isGuildLeader: true }); + await guildAbdicateToLeague(guild, leaderRoleId, newLeader); reportTAEvent(roleId, TA_EVENT.GUILD_MASTER_CHANGE, { way: GUILD_MASTER_CHANGE_WAY.IMPEACH, change_id_after: topUser.roleId }, ip) let isOnline = await isRoleOnline(topUser.roleId); diff --git a/game-server/app/servers/guild/handler/gvgManageHandler.ts b/game-server/app/servers/guild/handler/gvgManageHandler.ts index 58fc53394..9dd3bc066 100644 --- a/game-server/app/servers/guild/handler/gvgManageHandler.ts +++ b/game-server/app/servers/guild/handler/gvgManageHandler.ts @@ -17,6 +17,7 @@ import { createGroupMsg, pushGroupMsgToRoom } from "../../../services/chatServic import { sendMailByContent, sendMailToGuildByContent } from "../../../services/mailService"; import { getGVGCities } from "../../../services/gvg/gvgBattleService"; import { guildQuitLeagueRecord } from "../../../services/gvg/gvgRecService"; +import { LeagueLeader } from "../../../domain/rank"; export default function (app: Application) { new HandlerService(app, {}); @@ -558,7 +559,7 @@ export class GVGManageHandler { const checkHisAuth = await checkLeagueAuth(targetRoleId, myLeague, LEAGUE_MANAGE_TYPE.BE_ABDICATED); if(!checkHisAuth) return resResult(STATUS.GVG_HE_HAS_NO_AUTH); - const targetRole = await RoleModel.findByRoleId(targetRoleId, '_id roleName serverId'); + const targetRole = await RoleModel.findByRoleId(targetRoleId, '_id roleName serverId guildName roleId'); let targetRoleServerName = await getServerName(targetRole.serverId); // 修改联军数据 members,leader @@ -566,6 +567,7 @@ export class GVGManageHandler { // 推送 await sendMessageToUserWithSuc(targetRoleId, PUSH_ROUTE.LEAGUE_ABDICATE, { leagueCode: myLeague.leagueCode }); await sendMailByContent(MAIL_TYPE.LEAGUE_ABDICATE, roleId, { params: [ myLeague.name ] }); + await updateUserInfo(REDIS_KEY.LEAGUE_INFO, myLeague.leagueCode, [{ field: 'leader', value: new LeagueLeader(targetRole) }]); let myAuth = getMyAuth(myLeague, roleId); // 返回 diff --git a/game-server/app/services/gvg/gvgTeamService.ts b/game-server/app/services/gvg/gvgTeamService.ts index 656b14b57..558607409 100644 --- a/game-server/app/services/gvg/gvgTeamService.ts +++ b/game-server/app/services/gvg/gvgTeamService.ts @@ -1,6 +1,6 @@ // 和gvg组建期相关的方法 -import { GUILD_AUTH, GVG_APPLY_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, LEAGUE_AUTH, LEAGUE_MANAGE_TYPE, PUSH_ROUTE, STATUS } from "../../consts"; +import { GUILD_AUTH, GVG_APPLY_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, LEAGUE_AUTH, LEAGUE_MANAGE_TYPE, PUSH_ROUTE, REDIS_KEY, STATUS } from "../../consts"; import { GuildModel, GuildType } from "../../db/Guild"; import { GVGLeagueModel, GVGLeagueType, GVGLeagueUpdate } from "../../db/GVGLeague"; import { GVGLeagueApplyModel, GVGLeagueApplyType } from "../../db/GVGLeagueApply"; @@ -8,10 +8,12 @@ import { GVGLeaguePrepareModel, GVGLeaguePrepareType } from "../../db/GVGLeagueP import { RoleType } from "../../db/Role"; import { UserGuildModel } from "../../db/UserGuild"; import { LeagueGuildInfo, LeagueListInfo } from "../../domain/gvgField/returnData"; +import { LeagueLeader } from "../../domain/rank"; import { GVG } from "../../pubUtils/dicParam"; import { getZeroPointD } from "../../pubUtils/timeUtil"; import { resResult } from "../../pubUtils/util"; import { sendMessageToUserWithSuc } from "../pushService"; +import { updateUserInfo } from "../redisService"; import { guildJoinLeagueRecord } from "./gvgRecService"; import { calLeagueCe, getCurPeriod, getGVGConfig, getGVGPeriodData, getGVGServerType } from "./gvgService"; @@ -227,4 +229,5 @@ export async function guildDismissToLeague(guild: GuildType) { export async function guildAbdicateToLeague(guild: GuildType, fromRoleId: string, toRole: RoleType) { if(!guild.leagueCode) return; await GVGLeagueModel.abdicateGuild(guild.leagueCode, fromRoleId, toRole.roleId, toRole._id); + await updateUserInfo(REDIS_KEY.LEAGUE_INFO, guild.leagueCode, [{ field: 'leader', value: new LeagueLeader(toRole) }]); } \ No newline at end of file diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index 2cdcba02c..60f554d81 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -2,7 +2,7 @@ import { ACTIVITY_TYPE, getRedisKeyByRankType, GUILD_ACTIVITY_TYPE } from './../ import * as Redis from 'redis'; import {REDIS_KEY} from '../consts' import { pinus, ServerInfo } from 'pinus'; -import { GuildRankParam, GuildLeader, RankParam, LineupParam } from '../domain/rank'; +import { GuildRankParam, GuildLeader, RankParam, LineupParam, LeagueLeader } from '../domain/rank'; import { comBtlRanges } from '../pubUtils/data'; import { Rank, setRankRedisFromDb } from './rankService'; import { ServerlistModel } from '../db/Serverlist'; @@ -155,7 +155,7 @@ export async function setUserInfo(key: string, roleId: string, params: RankParam return await redisClient().hsetAsync(key, roleId, value); } -export async function updateUserInfo(key: string, roleId: string, arr: Array<{field: string, value:(string|number|GuildLeader)}>) { +export async function updateUserInfo(key: string, roleId: string, arr: Array<{field: string, value:(string|number|GuildLeader|LeagueLeader)}>) { let params = await redisClient().hgetAsync(key, roleId); if(params) { let obj = JSON.parse(params);