feat(37需求): 分子包隐藏服务器

This commit is contained in:
luying
2023-04-15 16:15:52 +08:00
parent 5978c573ba
commit da3c20358d
4 changed files with 20 additions and 9 deletions

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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<GroupParam>();
let loginServerList = new Array<ServerParamWithRole>();
@@ -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);