diff --git a/game-server/app/servers/battle/handler/guildHandler.ts b/game-server/app/servers/battle/handler/guildHandler.ts index c4d91e2f2..6f8c1ed1e 100644 --- a/game-server/app/servers/battle/handler/guildHandler.ts +++ b/game-server/app/servers/battle/handler/guildHandler.ts @@ -1,7 +1,7 @@ import { Application, BackendSession, ChannelService } from 'pinus'; import { resResult, getRandEelm, shouldRefresh, sortArrRandom } from '../../../pubUtils/util'; import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE } from '../../../consts'; -import { UserGuildModel } from '../../../db/UserGuild'; +import { UserGuildModel, UserGuildType } from '../../../db/UserGuild'; import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo } from '../../../services/guildService'; import { GuildModel, GuildType } from '../../../db/Guild'; import { RoleModel, RoleType } from '../../../db/Role'; @@ -704,7 +704,17 @@ export class GuildHandler { return resResult(STATUS.GUILD_LEADER_LOGIN); } // 上周周功勋最高的人 - const topUserGuild = await UserGuildModel.findTopActive(code, 'auth role roleId'); + const topUserGuilds = await UserGuildModel.findTopActive(code, 'auth role roleId'); + if (topUserGuilds.length <= 0) { + return resResult(STATUS.GUILD_MEMBER_NOT_FOUND); + } + let topUserGuild: UserGuildType; + for(let userGuild of topUserGuilds) { + let role = await RoleModel.findByRoleId(userGuild.roleId, 'quitTime'); + if(role && role.quitTime > getTimeFun().getBeforeDay(3)) { + topUserGuild = userGuild; break; + } + } if (!topUserGuild) { return resResult(STATUS.GUILD_MEMBER_NOT_FOUND); } diff --git a/shared/db/UserGuild.ts b/shared/db/UserGuild.ts index dacb7b525..02355f300 100644 --- a/shared/db/UserGuild.ts +++ b/shared/db/UserGuild.ts @@ -125,7 +125,7 @@ export default class UserGuild extends BaseModel { } public static async findTopActive(guildCode: string, select?: string) { - const userGuilds: UserGuildType = await UserGuildModel.findOne({ guildCode, status: USER_GUILD_STATUS.ON, auth: { $ne: GUILD_AUTH.LEADER } }) + const userGuilds: UserGuildType[] = await UserGuildModel.find({ guildCode, status: USER_GUILD_STATUS.ON, auth: { $ne: GUILD_AUTH.LEADER } }) .sort({ activeWeekly: -1, activeUpdateTime: 1 }) .select(select) .populate('role', 'roleId roleName ce head frame spine lv title quitTime', 'Role')