diff --git a/game-server/app/servers/guild/handler/guildHandler.ts b/game-server/app/servers/guild/handler/guildHandler.ts index 0bad86004..fe7121441 100644 --- a/game-server/app/servers/guild/handler/guildHandler.ts +++ b/game-server/app/servers/guild/handler/guildHandler.ts @@ -9,7 +9,7 @@ import { ARMY } from '../../../pubUtils/dicParam'; import { handleCost, addItems } from '../../../services/rewardService'; import { getGoldObject } from '../../../pubUtils/itemUtils'; import { nowSeconds, getTimeFun, getSeconds } from '../../../pubUtils/timeUtil'; -import { GuildListInfo } from '../../../domain/battleField/guild'; +import { GuildListInfo, GuildMemberParam } from '../../../domain/battleField/guild'; import { GuildLeader } from '../../../domain/rank'; import { UserGuildApplyModel } from '../../../db/UserGuildApply'; import { hasStructureConsume, getStructureConsume, gameData } from '../../../pubUtils/data'; @@ -520,19 +520,19 @@ export class GuildHandler { select.push('auth', 'activeWeekly activeUpdateTime'); } let list = await UserGuildModel.getListByGuild(code, select.join(' '), { auth: 1 }); - let result = []; + let result: GuildMemberParam[] = []; for (let cur of list) { let role = cur.role; if(role) { - delete role._id; - delete cur.role; - let isOnline = await isRoleOnline(role.roleId) - result.push({ ...cur, ...role, isOnline: !!isOnline }); + let param = new GuildMemberParam(cur, role); + let isOnline = await isRoleOnline(role.roleId); + param.setOnline(!!isOnline); + result.push(param); } } if (result && result.length > 0) { - let leader = result.shift(); + let leader = result.shift(); // 团长在最上面 result.sort((a, b) => { if (sort == 'active') { if (b.activeWeekly == a.activeWeekly) { diff --git a/shared/domain/battleField/guild.ts b/shared/domain/battleField/guild.ts index be0a9e4ac..28944b1c8 100644 --- a/shared/domain/battleField/guild.ts +++ b/shared/domain/battleField/guild.ts @@ -7,6 +7,7 @@ import { EXTERIOR } from "../../pubUtils/dicParam"; import { HeroType } from "../../db/Hero"; import { PvpDefenseType } from "../../db/PvpDefense"; import { PvpHistoryOppType } from "../../db/PvpHistoryOpp"; +import { UserGuildType } from "../../db/UserGuild"; export class PlayerDetailHero { actorId: number; @@ -185,3 +186,42 @@ export class GuildListInfo extends GuildMainInfo { this.hasApply = hasApply; } } + +export class GuildMemberParam { + roleId: string; + roleName: string; + ce: number; + head: number = EXTERIOR.EXTERIOR_FACE; + frame: number = EXTERIOR.EXTERIOR_FACECASE; + spine: number = EXTERIOR.EXTERIOR_APPEARANCE; + lv: number; + title: number = 1; + job: number; + quitTime: number; + isOnline: boolean; + + auth?: number; + activeWeekly?: number; + activeUpdateTime?: number; + + constructor(userGuild: UserGuildType, role: RoleType) { + this.roleId = role.roleId; + this.roleName = role.roleName; + this.ce = role.ce; + this.head = role.head; + this.frame = role.frame; + this.spine = role.spine; + this.lv = role.lv; + this.title = role.title; + this.quitTime = role.quitTime; + + this.job = userGuild.job; + this.auth = userGuild.auth; + this.activeWeekly = userGuild.activeWeekly; + this.activeUpdateTime = userGuild.activeUpdateTime; + } + + setOnline(isOnline: boolean) { + this.isOnline = isOnline; + } +} \ No newline at end of file