From 51efc2f0dcd720d112e43a2a3517191294be0e29 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 11 Jun 2021 10:09:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gm-server/app/service/Game.ts | 10 +++----- shared/db/Serverlist.ts | 14 +++++------ shared/domain/gameField/serverlist.ts | 18 ++++++++------ web-server/app/controller/game.ts | 30 ++++++++++-------------- web-server/app/middleware/tokenParser.ts | 2 +- 5 files changed, 34 insertions(+), 40 deletions(-) diff --git a/gm-server/app/service/Game.ts b/gm-server/app/service/Game.ts index dc20be17d..ee71a30e8 100644 --- a/gm-server/app/service/Game.ts +++ b/gm-server/app/service/Game.ts @@ -29,13 +29,9 @@ export default class Game extends Service { /** * 获取正式服,测试服,开发服等环境 */ - public async getServerListByEnv() { - const { ctx, app } = this; - const envlist = await GameModel.getServerEnvList(); - let cur = envlist.find(cur => cur.env == app.config.env); - if(!cur) return ctx.service.utils.resResult(STATUS.SUCCESS, { list: [] }); - - const list = await ServerlistModel.findByServerType(cur.serverType); + public async getServerListByEnv(serverType?: string) { + const { ctx } = this; + const list = await ServerlistModel.findByServerType(serverType); return ctx.service.utils.resResult(STATUS.SUCCESS, { list diff --git a/shared/db/Serverlist.ts b/shared/db/Serverlist.ts index d6b7e17b3..1ab3de969 100644 --- a/shared/db/Serverlist.ts +++ b/shared/db/Serverlist.ts @@ -17,11 +17,7 @@ export default class Serverlist extends BaseModel { id: number; // 小区id 自增 @prop({ required: true }) - serverId: string; // 显示id,不同serverType下id一定不同,但是serverId可能相同 - - public get serverStr() { - return `S${this.serverId}`; - } + serverId: number; // 相同serverType下的id,不同serverType下id一定不同,但是serverId可能相同 @prop({ required: true }) name: string; // 小区区名 @@ -87,8 +83,12 @@ export default class Serverlist extends BaseModel { return server; } - public static async findByServerType(serverType: string) { - let server: ServerlistType[] = await ServerlistModel.find({ serverType }).lean({ getters: true, virtuals: true }); + public static async findByServerType(serverType?: string) { + let condition = {}; + if(serverType) { + condition['serverType'] = serverType; + } + let server: ServerlistType[] = await ServerlistModel.find(condition).sort({ id: -1 }).lean({ getters: true, virtuals: true }); return server; } diff --git a/shared/domain/gameField/serverlist.ts b/shared/domain/gameField/serverlist.ts index b2ddde656..2d022dca4 100644 --- a/shared/domain/gameField/serverlist.ts +++ b/shared/domain/gameField/serverlist.ts @@ -1,9 +1,10 @@ -import { ServerInfo } from '../../db/Game'; import { RoleType } from '../../db/Role'; import { getSeconds } from '../../pubUtils/timeUtil'; +import { ServerlistType } from '@db/Serverlist'; export class ServerParam { id: number; // 区号 + serverId: number; // 显示的区号 serverStr: string; // 显示的区号 S1 name: string; // 区名 host: string; // pinus地址 @@ -12,9 +13,10 @@ export class ServerParam { openTime: number; // 开服时间 serverType: string; // 分区类型 官服 测试服 开发服 - constructor(server: ServerInfo) { + constructor(server: ServerlistType) { this.id = server.id; - this.serverStr = `S${this.id}`; + this.serverId = server.serverId; + this.serverStr = `S${server.serverId}`; this.name = server.name; this.host = server.host; this.port = server.port; @@ -30,16 +32,18 @@ export class GroupParam { groupStr: string; // 大区内小区编号 S1-S10 servers: ServerParam[]; // 区 - constructor(server: ServerInfo) { + constructor(server: ServerlistType) { this.groupId = server.groupId; this.groupName = server.groupName; - this.groupStr = `S${server.id}-S${server.id + 9}`; + this.groupStr = `S${server.serverId}-S${server.serverId + 9}`; this.servers = new Array(); } - public pushServer(server: ServerInfo) { + public pushServer(server: ServerlistType) { let srv = new ServerParam(server); this.servers.push(srv); + let min = this.servers.reduce((pre, cur) => pre < cur? pre: cur); + this.groupStr = `${min.serverId}-${min.serverId + 9}` } } @@ -55,7 +59,7 @@ export class ServerParamWithRole extends ServerParam { lv: number; // 等级 updatedAt: Date; - constructor(role: RoleType, server: ServerInfo) { + constructor(role: RoleType, server: ServerlistType) { super(server); this.groupId = server.groupId; this.groupName = server.groupName; diff --git a/web-server/app/controller/game.ts b/web-server/app/controller/game.ts index df1ab8a44..bebb66927 100644 --- a/web-server/app/controller/game.ts +++ b/web-server/app/controller/game.ts @@ -5,6 +5,7 @@ import { RoleModel } from '@db/Role'; import { NoticeModel } from '@db/Notice'; import { ServerParamWithRole, GroupParam } from '../domain/gameField/serverlist'; import { reloadResources } from 'app/pubUtils/data'; +import { ServerlistModel } from '@db/Serverlist'; export default class GameController extends Controller { @@ -15,27 +16,20 @@ export default class GameController extends Controller { let serverList = new Array(); let loginServerList = new Array(); - let allServers = await GameModel.getServerList(); + let allServers = await ServerlistModel.findByServerType(auth == 1? null: serverType); let roles = await RoleModel.findAllByUid(uid, true, true); - - allServers.sort((a, b) => { - return b.id - a.id; - }); for(let server of allServers) { - if(auth === 1 || (!auth && server.serverType == serverType)) { - server['serverStr'] = `S${server.id}`; - let curGroup = serverList.find(cur => cur.groupId == server.groupId); - if(!curGroup) { - curGroup = new GroupParam(server); - serverList.push(curGroup); - } - curGroup.pushServer(server); + let curGroup = serverList.find(cur => cur.groupId == server.groupId); + if(!curGroup) { + curGroup = new GroupParam(server); + serverList.push(curGroup); + } + curGroup.pushServer(server); - let role = roles.find(role => role.serverId == server.id); - if(!!role) { - let curLoginInfo = new ServerParamWithRole(role, server); - loginServerList.push(curLoginInfo); - } + let role = roles.find(role => role.serverId == server.id); + if(!!role) { + let curLoginInfo = new ServerParamWithRole(role, server); + loginServerList.push(curLoginInfo); } } diff --git a/web-server/app/middleware/tokenParser.ts b/web-server/app/middleware/tokenParser.ts index dfb3904db..c7806f9f8 100644 --- a/web-server/app/middleware/tokenParser.ts +++ b/web-server/app/middleware/tokenParser.ts @@ -15,7 +15,7 @@ module.exports = () => { return; } ctx.uid = user.uid; - ctx.serverType = user.serverType; + ctx.serverType = ctx.request.body.serverType||user.serverType; ctx.auth = user.auth; ctx.userCode = user.userCode; ctx.pkgName = user.pkgName;