diff --git a/game-server/app/domain b/game-server/app/domain new file mode 120000 index 000000000..545f67a36 --- /dev/null +++ b/game-server/app/domain @@ -0,0 +1 @@ +../../shared/domain \ No newline at end of file diff --git a/game-server/app/servers/battle/handler/guildHandler.ts b/game-server/app/servers/battle/handler/guildHandler.ts index 73f058740..46719deca 100644 --- a/game-server/app/servers/battle/handler/guildHandler.ts +++ b/game-server/app/servers/battle/handler/guildHandler.ts @@ -9,7 +9,8 @@ import { ARMY } from '../../../pubUtils/dicParam'; import { handleCost, addItems } from '../../../services/rewardService'; import { getGoldObject } from '../../../pubUtils/itemUtils'; import { nowSeconds, getBeforeDaySeconds, getSeconds } from '../../../pubUtils/timeUtil'; -import { GuildListInfo, GuildRankParam, GuildLeader } from '../../../pubUtils/interface'; +import { GuildListInfo } from '../../../domain/battleField/guild'; +import { GuildRankParam, GuildLeader } from '../../../domain/rank'; import { UserGuildApplyModel } from '../../../db/UserGuildApply'; import { hasStructureConsume, getStructureConsume, gameData } from '../../../pubUtils/data'; import { GuildRecModel } from '../../../db/GuildRec'; diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index ce3f68747..36847894b 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -7,7 +7,9 @@ import { STATUS } from '../../../consts/statusCode'; import { resResult, genCode } from '../../../pubUtils/util'; import { PvpDefenseModel, OppPlayers } from '../../../db/PvpDefense'; -import { pvpEndParamInter, RankParam, PlayerDetail, PlayerDetailHero } from '../../../pubUtils/interface'; +import { pvpEndParamInter } from '../../../pubUtils/interface'; +import { RankParam } from '../../../domain/rank'; +import { PlayerDetail, PlayerDetailHero } from '../../../domain/battleField/guild'; import { PVP_HERO_POS, REDIS_KEY } from '../../../consts'; import { PVP } from '../../../pubUtils/dicParam'; import { addItems } from '../../../services/rewardService'; diff --git a/game-server/app/servers/battle/handler/towerBattleHandler.ts b/game-server/app/servers/battle/handler/towerBattleHandler.ts index 53605c1e0..8578f52e9 100644 --- a/game-server/app/servers/battle/handler/towerBattleHandler.ts +++ b/game-server/app/servers/battle/handler/towerBattleHandler.ts @@ -12,7 +12,7 @@ import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurT import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService'; import { checkBattleHeroes } from '../../../services/normalBattleService'; import { getRank, setRank, existsRank, initSingleRankWithServer } from '../../../services/redisService'; -import { RankParam } from '../../../pubUtils/interface'; +import { RankParam } from '../../../domain/rank'; import { getGoldObject } from '../../../pubUtils/itemUtils'; export default function(app: Application) { diff --git a/game-server/app/servers/connector/handler/entryHandler.ts b/game-server/app/servers/connector/handler/entryHandler.ts index c291418ad..481491977 100644 --- a/game-server/app/servers/connector/handler/entryHandler.ts +++ b/game-server/app/servers/connector/handler/entryHandler.ts @@ -14,7 +14,7 @@ import { chackFunOpenWhenLogin } from '../../../services/funcSwitchService'; import { loginRefresh } from '../../../services/playerEventService'; import { nowSeconds } from '../../../pubUtils/timeUtil'; import { getRedis, setRedis, delRedis, rmRoleFromQueue } from '../../../services/redisService'; -import { GuildModel } from '../../../db/Guild'; + export default function (app: Application) { return new EntryHandler(app); } diff --git a/game-server/app/servers/role/handler/friendHandler.ts b/game-server/app/servers/role/handler/friendHandler.ts new file mode 100644 index 000000000..87119fc8d --- /dev/null +++ b/game-server/app/servers/role/handler/friendHandler.ts @@ -0,0 +1,29 @@ +import { Application, BackendSession } from "pinus"; +import { resResult, getRandEelm } from "../../../pubUtils/util"; +import { STATUS, ROLE } from "../../../consts"; +import { RoleModel } from "../../../db/Role"; +import { getBeforeDaySeconds } from "../../../pubUtils/timeUtil"; + +export default function (app: Application) { + return new FriendHandler(app); +} + +export class FriendHandler { + + constructor(private app: Application) { + } + + // 获取推荐好友列表 + public async getRecommend(msg: { }, session: BackendSession) { + let roleId: string = session.get('roleId'); + + const day = getBeforeDaySeconds(1); + + const { lv } = await RoleModel.findByRoleId(roleId, ROLE.GET_LV); + const allList = await RoleModel.getRecommedList(lv - 5, lv + 5, day); + let list = getRandEelm(allList, 10); + if(!list.length) list = allList; + + return resResult(STATUS.SUCCESS, { list }); + } +} \ No newline at end of file diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index f7d568f69..f19acf10a 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -11,7 +11,7 @@ import { STATUS } from '../consts/statusCode'; import { HangUpSpdUpRecModel } from '../db/HangUpSpdUpRec'; import { TowerTaskRecModel } from '../db/TowerTaskRec'; import { setRank } from './redisService'; -import { RankParam } from '../pubUtils/interface'; +import { RankParam } from '../domain/rank'; import { cloneDeep } from 'lodash'; export async function checkTowerWar(roleId: string, battleId: number, heroes: Array) { diff --git a/game-server/app/services/guildService.ts b/game-server/app/services/guildService.ts index 826d99580..5ec876138 100644 --- a/game-server/app/services/guildService.ts +++ b/game-server/app/services/guildService.ts @@ -12,7 +12,7 @@ import { GuildRecType } from "../db/GuildRec"; import { ARMY } from "../pubUtils/dicParam"; import { sendMail } from "./mailService"; import { setRank, getMyRank, initSingleRank } from "./redisService"; -import { GuildRankParam, GuildLeader } from "../pubUtils/interface"; +import { GuildRankParam, GuildLeader } from "../domain/rank"; import { lockData, isLocked } from '../services/redLockService'; import { ErrLogModel } from '../db/ErrLog'; diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index b3058a390..ef5fe82e9 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -5,7 +5,8 @@ import { PVP_HERO_POS, ROBOT_NAME, REDIS_KEY, PVP_CONST } from '../consts'; import { setPvpDefResult } from '../services/timeTaskService'; import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent"; import { getRandomIndexByLen, genCode, getRandomByLen, shouldRefresh, reduceCe, getChineseName } from '../pubUtils/util'; -import { oppPlayersInter, RankParam, pvpEndParamInter, oppHeroesDefenseInter, Attributes } from '../pubUtils/interface'; +import { oppPlayersInter, pvpEndParamInter, Attributes } from '../pubUtils/interface'; +import { RankParam } from '../domain/rank'; import { gameData, getPLvByScore } from "../pubUtils/data"; import { PVP } from '../pubUtils/dicParam'; import { SystemConfigModel } from '../db/SystemConfig' diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index 1d4a5e85c..8c9e07703 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -7,7 +7,7 @@ import { promisifyAll } from 'bluebird'; import { pinus } from 'pinus'; import { PvpDefenseModel } from '../db/PvpDefense'; import { SystemConfigModel } from '../db/SystemConfig'; -import { RankParam, GuildRankParam, GuildLeader } from '../pubUtils/interface'; +import { GuildRankParam, GuildLeader, RankParam } from '../domain/rank'; import { GuildModel } from '../db/Guild'; import { comBtlRanges } from '../pubUtils/gamedata'; /** diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index efb12bd28..b186de1d1 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -9,7 +9,7 @@ import { deepCopy, getRandomArr } from '../pubUtils/util'; import { getLvByScore } from './pvpService'; import { getMyRank, setRank, getRedis, resetPvpRanks } from './redisService'; import { REDIS_KEY } from '../consts'; -import { RankParam } from '../pubUtils/interface'; +import { RankParam } from '../domain/rank'; import { RoleModel } from '../db/Role'; import { MailModel, MailType } from '../db/Mail'; import { pinus } from 'pinus'; diff --git a/gm-server/app/domain b/gm-server/app/domain new file mode 120000 index 000000000..545f67a36 --- /dev/null +++ b/gm-server/app/domain @@ -0,0 +1 @@ +../../shared/domain \ No newline at end of file diff --git a/shared/consts/constModules/selectConst.ts b/shared/consts/constModules/selectConst.ts new file mode 100644 index 000000000..f1de171bb --- /dev/null +++ b/shared/consts/constModules/selectConst.ts @@ -0,0 +1,8 @@ + +export enum ROLE { + // 玩家列表显示基础数据 + SHOW_SIMPLE = 'roleId roleName ce headHid sHid lv title job quitTime', + + GET_LV = 'lv' +}; + diff --git a/shared/consts/index.ts b/shared/consts/index.ts index 365a747ad..838f4a27f 100644 --- a/shared/consts/index.ts +++ b/shared/consts/index.ts @@ -5,4 +5,5 @@ export * from './constModules/heroConst'; export * from './constModules/itemConst'; export * from './constModules/sysConst'; export * from './constModules/guildConst'; +export * from './constModules/selectConst'; export * from './statusCode'; \ No newline at end of file diff --git a/shared/db/BaseModel.ts b/shared/db/BaseModel.ts index 2c933ae90..3724fe95e 100644 --- a/shared/db/BaseModel.ts +++ b/shared/db/BaseModel.ts @@ -1,5 +1,6 @@ -import { prop, pre, modelOptions } from '@typegoose/typegoose'; +import { prop, pre, modelOptions, plugin } from '@typegoose/typegoose'; import { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'; +import mongooseLeanVirtuals = require('mongoose-lean-virtuals'); /** * BaseModel @@ -15,6 +16,7 @@ import { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'; @modelOptions({schemaOptions: {id: false}}) +@plugin(mongooseLeanVirtuals) export default class BaseModel extends TimeStamps { _id?: string diff --git a/shared/db/FriendRelation.ts b/shared/db/FriendRelation.ts new file mode 100644 index 000000000..b4e0558d0 --- /dev/null +++ b/shared/db/FriendRelation.ts @@ -0,0 +1,34 @@ +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType, mongoose, Ref } from '@typegoose/typegoose'; +import Role from './Role'; +import FriendShip from './FriendShip'; + +class Relation { + @prop({ required: true, default: '' }) + roleId: string; // 对方玩家id + @prop({ required: true, ref: 'Role', type: mongoose.Schema.Types.ObjectId }) + role: Ref; + @prop({ required: true, ref: 'FriendRelation', type: mongoose.Schema.Types.ObjectId }) + friendShip: Ref; +} + +/** + * 好友系统关系表 + */ +@index({ roleId: 1, createdAt: -1 }) + +export default class FriendRelation extends BaseModel { + @prop({ required: true, default: '' }) + roleId: string; // 操作玩家本人id + + @prop({ required: true, default: [], type: Relation, _id: false }) + friends: Relation[]; // 好友列表 + @prop({ required: true, default: [], type: Relation, _id: false }) + blacklist: Relation[]; // 黑名单列表 + + +} + +export const FriendRelationModel = getModelForClass(FriendRelation); + +export interface FriendRelationType extends Pick, keyof FriendRelation>{}; \ No newline at end of file diff --git a/shared/db/FriendShip.ts b/shared/db/FriendShip.ts new file mode 100644 index 000000000..a805851c4 --- /dev/null +++ b/shared/db/FriendShip.ts @@ -0,0 +1,42 @@ +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; + +/** + * 好友直接的亲密值 + */ +@index({ roleIds: 1 }) + +export default class FriendShip extends BaseModel { + + @prop({ required: true, default: '' }) + roleIds: string; // 玩家A和玩家B按字母顺排序后合成的字符串 + + @prop({ required: true, default: '' }) + roleIdA: string; // 玩家A + @prop({ required: true, default: '' }) + roleIdB: string; // 玩家B + + @prop({ required: true, default: 0 }) + sendHeartCntA: number; // 玩家A给玩家B送的心 + @prop({ required: true, default: 0 }) + sendHeartCntB: number; // 玩家B给玩家A送的心 + @prop({ required: true, default: 0 }) + receiveHeartCntA: number; // 玩家B领取玩家A送的心 + @prop({ required: true, default: 0 }) + receiveHeartCntB: number; // 玩家A领取玩家B送的心 + @prop({ required: true, default: new Date() }) + refTime: Date; + + @prop({ required: true, default: 0 }) + frdValue: number; // 两人之间的亲密值 + + public get frdLv() { // 亲密等级 + return this.frdValue; + } + + +} + +export const FriendShipModel = getModelForClass(FriendShip); + +export interface FriendShipType extends Pick, keyof FriendShip>{}; \ No newline at end of file diff --git a/shared/db/Role.ts b/shared/db/Role.ts index 205dec1cb..d533fda88 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -1,9 +1,9 @@ -import { HANG_UP_CONSTS, ROLE_TERAPH } from './../consts'; +import { HANG_UP_CONSTS, ROLE_TERAPH, ROLE } from './../consts'; import BaseModel from './BaseModel'; import { CeAttrRole } from './generalField'; import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose'; import User from './User'; -import { shouldRefresh } from '../pubUtils/util'; +import { shouldRefresh, reduceCe } from '../pubUtils/util'; import { initRoleAtrr } from '../pubUtils/playerCe'; import Hero,{} from '../db/Hero'; import { nowSeconds } from '../pubUtils/timeUtil'; @@ -112,7 +112,7 @@ export default class Role extends BaseModel { exp: number; // 经验值 @prop({ required: true, default: 1 }) lv: number; // 主公等级 - @prop({ required: true, default: 0 }) + @prop({ required: true, default: 0, set: (val: number) => val, get: (val: number) => reduceCe(val) }) ce: number; // 总战力 @prop({ required: true, default: new CeAttrRole(), _id: false }) globalCeAttr: CeAttrRole; // 总战力 @@ -223,8 +223,14 @@ export default class Role extends BaseModel { return role; } - public static async findByRoleId(roleId: string, lean = true) { - const role: RoleType = await RoleModel.findOne({ roleId }).lean(lean); + /** + * 根据roleId获取一条数据 + * @param roleId 玩家id + * @param select 选取字段,来自 selectConst/ROLE + * @param virtuals 是否使用虚拟字段,如ce使用了自动缩小1w倍 + */ + public static async findByRoleId(roleId: string, select?: string, virtuals = false) { + const role: RoleType = await RoleModel.findOne({ roleId }).select(select).lean({virtuals}); return role; } @@ -428,6 +434,15 @@ export default class Role extends BaseModel { return result; } + // 获取好友推荐列表 + public static async getRecommedList(minLv: number, maxLv: number, time: number) { + const result = await RoleModel.find({ quitTime: { $gt: time }, lv: { $gte: minLv, $lte: maxLv } }, { _id: 0 }) + .select(ROLE.SHOW_SIMPLE) + .sort({quitTime: -1, lv: -1, ce: -1}) + .limit(100).lean({ virtuals: true }); + return result; + } + // 公会解散 public static async dissmissGuild(members: string[]) { const result = await RoleModel.updateMany({ roleId: { $in: members } }, { hasGuild: false }).lean(); diff --git a/shared/domain/battleField/guild.ts b/shared/domain/battleField/guild.ts new file mode 100644 index 000000000..ed90b5372 --- /dev/null +++ b/shared/domain/battleField/guild.ts @@ -0,0 +1,88 @@ +import { PvpEnemies, PvpOtherHeroes } from "../../db/generalField"; +import { reduceCe } from "../../pubUtils/util"; +import { GuildType } from "../../db/Guild"; +import { RoleType } from "../../db/Role"; + +export class PlayerDetailHero { + actorId: number; + lv: number; + star: number; + colorStar: number; + quality: number; + score: number; + + setPvpHeroInfo?(hero: PvpEnemies|PvpOtherHeroes) { + this.actorId = hero.actorId; + this.lv = hero.lv; + this.star = hero.star; + this.colorStar = hero.colorStar; + this.quality = hero.quality; + this.score = hero.score; + } +} + +export class PlayerDetail { + roleId: string; + roleName: string; + lv: number; + title?: number = 1; + sHid?: number = 19; + headHid?: number = 19; + + score?: number = 0; + pLv?: number = 1; + defCe?: number = 0; + + heroes: PlayerDetailHero[]; + rank?:number = 0; + constructor(detail: PlayerDetail) { + if(detail.roleId) this.roleId = detail.roleId; + if(detail.roleName) this.roleName = detail.roleName; + if(detail.lv) this.lv = detail.lv; + if(detail.title) this.title = detail.title; + if(detail.sHid) this.sHid = detail.sHid; + if(detail.headHid) this.headHid = detail.headHid; + if(detail.score) this.score = detail.score; + if(detail.pLv) this.pLv = detail.pLv; + if(detail.defCe) this.defCe = reduceCe(detail.defCe); + if(detail.heroes) this.heroes = detail.heroes; + if(detail.rank) this.rank = detail.rank; + } +} + +// 军团返回 +export class GuildMainInfo { + code: string; // 军团唯一编号 + icon: number; // 头像 + name: string; // 军团名 + lv: number; // 等级 + memberCnt: number; // 人数 + isAuto: boolean; // 是否是自动加入 + ceLimit: number; // 战力条件 + + constructor(guild: GuildType) { + this.code = guild.code; + this.icon = guild.icon; + this.name = guild.name; + this.lv = guild.lv; + this.memberCnt = guild.memberCnt; + this.ceLimit = guild.ceLimit; + this.isAuto = guild.isAuto; + } +} + +// getGuildList里的返回 +export class GuildListInfo extends GuildMainInfo { + leader: string; // 团长名 + hasApply: boolean = false; // 是否有申请过 + + constructor(guild: GuildType) { + super(guild); + let leader = guild.leader; + this.leader = leader.roleName; + } + + setApply(hasApply: boolean) { + this.hasApply = hasApply; + } +} diff --git a/shared/domain/rank.ts b/shared/domain/rank.ts new file mode 100644 index 000000000..5ce3f566c --- /dev/null +++ b/shared/domain/rank.ts @@ -0,0 +1,58 @@ +// 排行榜返回玩家值 +export class RankParam { + roleName: string; + lv: number; + vLv: number; + guildName: string = ""; + head: string = 'zhaoyun'; + headHid: number = 19; + sHid: number = 19; + title: number; + + constructor(roleName: string, lv: number, vLv: number, headHid: number, sHid: number, title: number) { + this.roleName = roleName; + this.lv = lv; + this.vLv = vLv; + this.headHid = headHid; + this.sHid = sHid; + this.title = title; + } +} + +// 公会排行榜返回值 +export class GuildRankParam { + icon: number; + name: string; + lv: number; + leader: { + roleName: string; + title: number; + lv: number; + headHid: number; + sHid: number; + } + + constructor(icon: number, name: string, lv: number, leader: {roleName: string, title: number, lv: number, headHid: number, sHid: number}) { + this.icon = icon; + this.name = name; + this.lv = lv; + let _leader = new GuildLeader(leader); + this.leader = _leader; + } +} + +export class GuildLeader { + roleName: string; + title: number; + lv: number; + headHid: number; + sHid: number; + + constructor(leader: {roleName: string, title: number, lv: number, headHid: number, sHid: number}) { + this.roleName = leader.roleName; + this.title = leader.title; + this.lv = leader.lv; + this.headHid = leader.headHid; + this.sHid = leader.sHid; + } +} \ No newline at end of file diff --git a/shared/domain/roleField/friend.ts b/shared/domain/roleField/friend.ts new file mode 100644 index 000000000..e69de29bb diff --git a/shared/pubUtils/interface.ts b/shared/pubUtils/interface.ts index 6cc9349f6..28a1c4281 100644 --- a/shared/pubUtils/interface.ts +++ b/shared/pubUtils/interface.ts @@ -1,10 +1,5 @@ // 一些通用的interface定义 -import { reduceCe } from "./util"; -import { PvpEnemies, PvpOtherHeroes } from "../db/generalField"; -import { GuildType } from "../db/Guild"; -import { RoleType } from "../db/Role"; - export interface RewardInter { id: number; count: number; @@ -101,144 +96,3 @@ export interface pvpEndParamInter { heal: number; underDamage: number; } - -export class RankParam { - roleName: string; - lv: number; - vLv: number; - guildName: string = ""; - head: string = 'zhaoyun'; - headHid: number = 19; - sHid: number = 19; - title: number; - - constructor(roleName: string, lv: number, vLv: number, headHid: number, sHid: number, title: number) { - this.roleName = roleName; - this.lv = lv; - this.vLv = vLv; - this.headHid = headHid; - this.sHid = sHid; - this.title = title; - } -} - -export class GuildRankParam { - icon: number; - name: string; - lv: number; - leader: { - roleName: string; - title: number; - lv: number; - headHid: number; - sHid: number; - } - - constructor(icon: number, name: string, lv: number, leader: {roleName: string, title: number, lv: number, headHid: number, sHid: number}) { - this.icon = icon; - this.name = name; - this.lv = lv; - let _leader = new GuildLeader(leader); - this.leader = _leader; - } -} - -export class GuildLeader { - roleName: string; - title: number; - lv: number; - headHid: number; - sHid: number; - - constructor(leader: {roleName: string, title: number, lv: number, headHid: number, sHid: number}) { - this.roleName = leader.roleName; - this.title = leader.title; - this.lv = leader.lv; - this.headHid = leader.headHid; - this.sHid = leader.sHid; - } -} - -export class PlayerDetailHero { - actorId: number; - lv: number; - star: number; - colorStar: number; - quality: number; - score: number; - - setPvpHeroInfo?(hero: PvpEnemies|PvpOtherHeroes) { - this.actorId = hero.actorId; - this.lv = hero.lv; - this.star = hero.star; - this.colorStar = hero.colorStar; - this.quality = hero.quality; - this.score = hero.score; - } -} - -export class PlayerDetail { - roleId: string; - roleName: string; - lv: number; - title?: number = 1; - sHid?: number = 19; - headHid?: number = 19; - - score?: number = 0; - pLv?: number = 1; - defCe?: number = 0; - - heroes: PlayerDetailHero[]; - rank?:number = 0; - constructor(detail: PlayerDetail) { - if(detail.roleId) this.roleId = detail.roleId; - if(detail.roleName) this.roleName = detail.roleName; - if(detail.lv) this.lv = detail.lv; - if(detail.title) this.title = detail.title; - if(detail.sHid) this.sHid = detail.sHid; - if(detail.headHid) this.headHid = detail.headHid; - if(detail.score) this.score = detail.score; - if(detail.pLv) this.pLv = detail.pLv; - if(detail.defCe) this.defCe = reduceCe(detail.defCe); - if(detail.heroes) this.heroes = detail.heroes; - if(detail.rank) this.rank = detail.rank; - } -} - -// 军团返回 -export class GuildMainInfo { - code: string; // 军团唯一编号 - icon: number; // 头像 - name: string; // 军团名 - lv: number; // 等级 - memberCnt: number; // 人数 - isAuto: boolean; // 是否是自动加入 - ceLimit: number; // 战力条件 - - constructor(guild: GuildType) { - this.code = guild.code; - this.icon = guild.icon; - this.name = guild.name; - this.lv = guild.lv; - this.memberCnt = guild.memberCnt; - this.ceLimit = guild.ceLimit; - this.isAuto = guild.isAuto; - } -} - -// getGuildList里的返回 -export class GuildListInfo extends GuildMainInfo { - leader: string; // 团长名 - hasApply: boolean = false; // 是否有申请过 - - constructor(guild: GuildType) { - super(guild); - let leader = guild.leader; - this.leader = leader.roleName; - } - - setApply(hasApply: boolean) { - this.hasApply = hasApply; - } -} \ No newline at end of file diff --git a/web-server/app/domain b/web-server/app/domain new file mode 120000 index 000000000..545f67a36 --- /dev/null +++ b/web-server/app/domain @@ -0,0 +1 @@ +../../shared/domain \ No newline at end of file