diff --git a/gm-server/app/controller/game.ts b/gm-server/app/controller/game.ts index af5ae6be8..9f1eec92f 100644 --- a/gm-server/app/controller/game.ts +++ b/gm-server/app/controller/game.ts @@ -68,16 +68,16 @@ export default class GameController extends Controller { // createNewPackage public async createNewPackage() { const { ctx } = this; - const { regionId, pkgName, pkgDesc, pid, gid, isOpen } = ctx.request.body; - ctx.body = await ctx.service.game.createNewPackage(regionId, pid, gid, pkgName, pkgDesc, isOpen); + const { regionId, pkgName, pkgDesc, pid, gid, isOpen, hideServers } = ctx.request.body; + ctx.body = await ctx.service.game.createNewPackage(regionId, pid, gid, pkgName, pkgDesc, isOpen, hideServers); return; } // editPackage public async editPackage() { const { ctx } = this; - const { regionId, pkgName, pkgDesc, pid, gid, isOpen, loadingPage, loginPage } = ctx.request.body; - ctx.body = await ctx.service.game.editPackage(regionId, pid, gid, pkgName, pkgDesc, isOpen, loadingPage, loginPage); + const { regionId, pkgName, pkgDesc, pid, gid, isOpen, loadingPage, loginPage, hideServers } = ctx.request.body; + ctx.body = await ctx.service.game.editPackage(regionId, pid, gid, pkgName, pkgDesc, isOpen, loadingPage, loginPage, hideServers); return; } diff --git a/gm-server/app/service/Game.ts b/gm-server/app/service/Game.ts index efab4a449..567a21a48 100644 --- a/gm-server/app/service/Game.ts +++ b/gm-server/app/service/Game.ts @@ -77,9 +77,9 @@ export default class Game extends Service { } // 创建新的推广包 - public async createNewPackage(regionId: number, pid: string, gid: string, pkgName: string, pkgDesc: string, isOpen = true) { + public async createNewPackage(regionId: number, pid: string, gid: string, pkgName: string, pkgDesc: string, isOpen = true, hideServers: number[] = []) { const { ctx } = this; - const packageInfo = await PackageModel.createNewPackage({regionId, pkgName, pkgDesc, pid, gid, isOpen}, ctx.user?.uid); + const packageInfo = await PackageModel.createNewPackage({regionId, pkgName, pkgDesc, pid, gid, isOpen, hideServers}, ctx.user?.uid); if (!packageInfo) { return ctx.service.utils.resResult(STATUS.PACKAGE_CREATE_FAILED); } @@ -90,9 +90,9 @@ export default class Game extends Service { } // 更新推广包 - public async editPackage(regionId: number, pid: string, gid: string, pkgName: string, pkgDesc: string, isOpen = true, loadingPage = '', loginPage = '') { + public async editPackage(regionId: number, pid: string, gid: string, pkgName: string, pkgDesc: string, isOpen = true, loadingPage = '', loginPage = '', hideServers: number[] = []) { const { ctx } = this; - const packageInfo = await PackageModel.updatePackage({regionId, pkgName, pkgDesc, pid, gid, isOpen, loadingPage, loginPage}, ctx.user?.uid); + const packageInfo = await PackageModel.updatePackage({regionId, pkgName, pkgDesc, pid, gid, isOpen, loadingPage, loginPage, hideServers}, ctx.user?.uid); if (!packageInfo) { return ctx.service.utils.resResult(STATUS.PACKAGE_UPDATE_FAILED); } diff --git a/shared/db/Package.ts b/shared/db/Package.ts index 92d5cd1b3..a0e2ff1f5 100644 --- a/shared/db/Package.ts +++ b/shared/db/Package.ts @@ -38,6 +38,9 @@ export default class Package extends BaseModel { @prop({ required: true }) loginPage: string; // 是否开启 + @prop({ required: false, type: Number }) + hideServers: number[]; // 需要隐藏的服务器 + public static async createNewPackage(params: PackageUpdate, uid = 1) { const { gid, pid } = params; let rec: PackageType | null = await PackageModel.findOne({ gid, pid }).lean(); diff --git a/web-server/app/controller/game.ts b/web-server/app/controller/game.ts index a437000ad..ab0fe4df6 100644 --- a/web-server/app/controller/game.ts +++ b/web-server/app/controller/game.ts @@ -83,7 +83,7 @@ export default class GameController extends Controller { try { const { ctx } = this; let { uid } = ctx; - const { version, addressType } = ctx.request.body; + const { version, addressType, pid, gid } = ctx.request.body; let serverList = new Array(); let loginServerList = new Array(); @@ -100,6 +100,14 @@ export default class GameController extends Controller { let env = isReview? curRegion.reviewEnv: ctx.app.config.realEnv; let allServers = await ServerlistModel.findByEnv(env||ctx.app.config.realEnv, isReview); + + if(pid && gid) { + const pkg = await PackageModel.getPackageByGidPid(gid, pid); + if(pkg && pkg.hideServers && pkg.hideServers.length > 0) { + allServers = allServers.filter(server => !pkg.hideServers.includes(server.id)); + } + } + let roles = await RoleModel.findAllByUid(uid, true, true); for (let server of allServers) { let curGroup = serverList.find(cur => cur.groupId == server.groupId);