后台:公告

This commit is contained in:
luying
2021-11-24 20:19:17 +08:00
parent 5395bbc832
commit 8c6c44bcde
13 changed files with 130 additions and 54 deletions

View File

@@ -28,6 +28,7 @@ import { updateTeamStatus } from './app/services/comBattleService';
import { resResult, genCode } from './app/pubUtils/util'; import { resResult, genCode } from './app/pubUtils/util';
import { errlogger, infologger } from './app/util/logger'; import { errlogger, infologger } from './app/util/logger';
import { connectThinkingData, getTire } from './app/services/sdkService'; import { connectThinkingData, getTire } from './app/services/sdkService';
import { loadGmDb } from './app/db';
const filePath = (_pinus as any).FILEPATH; const filePath = (_pinus as any).FILEPATH;
filePath.MASTER = '/config/master'; filePath.MASTER = '/config/master';
@@ -158,14 +159,17 @@ export function globalErrorHandler(err: Error, msg: any, resp: any,
} }
} }
function initMongodb(app: _pinus.Application) { async function initMongodb(app: _pinus.Application) {
mongoose.connect(app.get('database').mongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }, (err) => { await mongoose.connect(app.get('database').mongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }, (err) => {
if (err) { if (err) {
errlogger.error('mongodb connect err', err); errlogger.error('mongodb connect err', err);
} else { } else {
console.log('mongodb connect suc'); console.log('mongodb connect suc');
} }
}); });
let gmconnect = await mongoose.createConnection(app.get('database').gmmongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false });
loadGmDb(gmconnect);
} }
function initRedis(app: _pinus.Application) { function initRedis(app: _pinus.Application) {

View File

@@ -251,7 +251,8 @@ export class EntryHandler {
// put user into channel // put user into channel
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
serverType: this.app.get('serverName') serverType: this.app.get('serverName'),
env: this.app.get('env')
}); });
} }

View File

@@ -1,37 +1,44 @@
module.exports = { module.exports = {
'development': { 'development': {
'mongo': 'mongodb://127.0.0.1/zyz', 'mongo': 'mongodb://127.0.0.1/zyz',
'gmmongo': 'mongodb://127.0.0.1/zyzgm',
'redis': '127.0.0.1', 'redis': '127.0.0.1',
'redispw': 'zyz_2020' 'redispw': 'zyz_2020'
}, },
'production': { 'production': {
'mongo': 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098', 'mongo': 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098',
'gmmongo': 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150',
'redis': 'r-8vb4i2kgl91886fkxd.redis.zhangbei.rds.aliyuncs.com', 'redis': 'r-8vb4i2kgl91886fkxd.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_2020' 'redispw': 'zyz_2020'
}, },
'alpha': { 'alpha': {
'mongo': 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?readPreference=secondary&replicaSet=mgset-506991391', 'mongo': 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?readPreference=secondary&replicaSet=mgset-506991391',
'gmmongo': 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150',
'redis': 'r-8vbl8okinxn1zhkwh2.redis.zhangbei.rds.aliyuncs.com', 'redis': 'r-8vbl8okinxn1zhkwh2.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_alpha_2021' 'redispw': 'zyz_alpha_2021'
}, },
'dev': { 'dev': {
'mongo': 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?readPreference=secondary&replicaSet=mgset-506991391', 'mongo': 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?readPreference=secondary&replicaSet=mgset-506991391',
'gmmongo': 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150',
'redis': 'r-8vb418l8kkju9sis8k.redis.zhangbei.rds.aliyuncs.com', 'redis': 'r-8vb418l8kkju9sis8k.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_dev_2021' 'redispw': 'zyz_dev_2021'
}, },
'isbn': { 'isbn': {
'mongo': 'mongodb://root:Bantus123@dds-8vb74337eab84d641.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb74337eab84d642.mongodb.zhangbei.rds.aliyuncs.com:3717/admin?replicaSet=mgset-504694158', 'mongo': 'mongodb://root:Bantus123@dds-8vb74337eab84d641.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb74337eab84d642.mongodb.zhangbei.rds.aliyuncs.com:3717/admin?replicaSet=mgset-504694158',
'gmmongo': 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150',
'redis': 'r-8vbekkbb3z8ru2ckuj.redis.zhangbei.rds.aliyuncs.com', 'redis': 'r-8vbekkbb3z8ru2ckuj.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_isbn_2021' 'redispw': 'zyz_isbn_2021'
}, },
'monitor': { 'monitor': {
'mongo': 'mongodb://dbop:zyzMon2021@dds-8vb7474e31ba7ed41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7474e31ba7ed42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-505529944', 'mongo': 'mongodb://dbop:zyzMon2021@dds-8vb7474e31ba7ed41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7474e31ba7ed42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-505529944',
'gmmongo': 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150',
'redis': 'r-8vb130185rp2ir3lqn.redis.zhangbei.rds.aliyuncs.com', 'redis': 'r-8vb130185rp2ir3lqn.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_monitor_2021' 'redispw': 'zyz_monitor_2021'
}, },
'distribute': { 'distribute': {
'mongo': 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-506991391', 'mongo': 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-506991391',
'gmmongo': 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150',
'redis': 'r-8vb418l8kkju9sis8k.redis.zhangbei.rds.aliyuncs.com', 'redis': 'r-8vb418l8kkju9sis8k.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_dev_2021' 'redispw': 'zyz_dev_2021'
} }

View File

@@ -3,7 +3,8 @@ module.exports = {
'connector': [ 'connector': [
{ 'id': 'connector-server-1', 'port': 4050, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3050, 'frontend': true }, { 'id': 'connector-server-1', 'port': 4050, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3050, 'frontend': true },
{ 'id': 'connector-server-2', 'port': 4051, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3051, 'frontend': true }, { 'id': 'connector-server-2', 'port': 4051, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3051, 'frontend': true },
{ 'id': 'connector-server-3', 'port': 4052, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3052, 'frontend': true } { 'id': 'connector-server-3', 'port': 4052, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3052, 'frontend': true },
{ 'id': 'connector-server-gm', 'port': 4099, 'clientHost': '127.0.0.1', 'host': '127.0.0.1', 'clientPort': 3099, 'frontend': true }
], ],
'chat': [ 'chat': [
{ 'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050, "args": " --inspect=9237" } { 'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050, "args": " --inspect=9237" }

View File

@@ -3,12 +3,6 @@ import { STATUS } from '@consts';
export default class GameController extends Controller { export default class GameController extends Controller {
public async getServerEnv() {
const { ctx } = this;
ctx.body = await ctx.service.game.getServerEnv();
return
}
public async getServerListByEnv() { public async getServerListByEnv() {
const { ctx } = this; const { ctx } = this;
ctx.body = await ctx.service.game.getServerListByEnv(); ctx.body = await ctx.service.game.getServerListByEnv();
@@ -23,6 +17,13 @@ export default class GameController extends Controller {
return return
} }
public async getRegions() {
const { ctx } = this;
ctx.body = await ctx.service.game.getRegions();
return
}
public async getMaintenanceList() { public async getMaintenanceList() {
const { ctx } = this; const { ctx } = this;
const {page, pageSize, sortField, sortOrder, form} = ctx.request.body; const {page, pageSize, sortField, sortOrder, form} = ctx.request.body;

View File

@@ -50,9 +50,9 @@ export default (app: Application) => {
// router.post('/api/users/delgiftCode', controller.users.delGiftCode); // router.post('/api/users/delgiftCode', controller.users.delGiftCode);
router.get('/api/users/getgiftcodedetails/:id/:filename', controller.users.getGiftCodeDetails); router.get('/api/users/getgiftcodedetails/:id/:filename', controller.users.getGiftCodeDetails);
router.post('/api/game/getserverenv', tokenParser, controller.game.getServerEnv);
router.post('/api/game/getserverlistbyenv', tokenParser, controller.game.getServerListByEnv); router.post('/api/game/getserverlistbyenv', tokenParser, controller.game.getServerListByEnv);
router.post('/api/game/getserverlist', controller.game.getServerList); router.post('/api/game/getserverlist', controller.game.getServerList);
router.post('/api/game/getregions', controller.game.getRegions);
router.post('/api/game/getmaintenancelist', controller.game.getMaintenanceList); router.post('/api/game/getmaintenancelist', controller.game.getMaintenanceList);
router.post('/api/game/updatemaintenance', controller.game.updateMaintenance); router.post('/api/game/updatemaintenance', controller.game.updateMaintenance);

View File

@@ -13,25 +13,13 @@ import { MarqueeModel, MarqueeParam, MarqueeType } from '@db/Marquee';
import { MaintenanceModel, MaintenanceTypeParam } from '@db/Maintenance'; import { MaintenanceModel, MaintenanceTypeParam } from '@db/Maintenance';
import { GMMailTypeParam, GMMailModel, GMMailType } from '@db/GMMail'; import { GMMailTypeParam, GMMailModel, GMMailType } from '@db/GMMail';
import { AccuseRecModel } from '@db/AccuseRec'; import { AccuseRecModel } from '@db/AccuseRec';
import { RegionModel } from '@db/Region';
/** /**
* Test Service * Test Service
*/ */
export default class Game extends Service { export default class Game extends Service {
/**
* 获取正式服,测试服,开发服等环境
*/
public async getServerEnv() {
const { ctx, app } = this;
const list = await GameModel.getServerEnvList();
return ctx.service.utils.resResult(STATUS.SUCCESS, {
list,
env: app.config.env
});
}
/** /**
* 获取正式服,测试服,开发服等环境 * 获取正式服,测试服,开发服等环境
*/ */
@@ -57,6 +45,16 @@ export default class Game extends Service {
}); });
} }
public async getRegions() {
const { ctx } = this;
const list = await RegionModel.getAllRegion();
return ctx.service.utils.resResult(STATUS.SUCCESS, {
list
});
}
public async getMaintenanceList(page: number, pageSize: number, sortField: string, sortOrder: string, form: { isOpen?: boolean } = {}) { public async getMaintenanceList(page: number, pageSize: number, sortField: string, sortOrder: string, form: { isOpen?: boolean } = {}) {
const { ctx } = this; const { ctx } = this;
@@ -69,7 +67,7 @@ export default class Game extends Service {
return { return {
...cur, startTime: cur.startTime.getTime(), ...cur, startTime: cur.startTime.getTime(),
marquee: marquee?{...marquee, startTime: marquee.startTime.getTime(), endTime: marquee.endTime.getTime()}:null, marquee: marquee?{...marquee, startTime: marquee.startTime.getTime(), endTime: marquee.endTime.getTime()}:null,
notice: notice?{...notice, startTime: notice.startTime.getTime(), endTime: notice.endTime.getTime(), showStartTime: notice.showStartTime.getTime(), showEndTime: notice.showEndTime.getTime()}:null notice: notice?{...notice, showStartTime: notice.showStartTime.getTime(), showEndTime: notice.showEndTime.getTime()}:null
} }
}), total }), total
}); });
@@ -115,7 +113,7 @@ export default class Game extends Service {
await ServerStategyModel.updateServerStategy(values, ctx.user?.uid); await ServerStategyModel.updateServerStategy(values, ctx.user?.uid);
} catch(e) { } catch(e) {
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, e.stack); return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, (<Error>e).stack);
} }
return ctx.service.utils.resResult(STATUS.SUCCESS); return ctx.service.utils.resResult(STATUS.SUCCESS);
} }
@@ -130,7 +128,7 @@ export default class Game extends Service {
await ServerlistModel.newServer({ name, openTime: new Date(openTime), serverType }, stategy, ctx.user?.uid); await ServerlistModel.newServer({ name, openTime: new Date(openTime), serverType }, stategy, ctx.user?.uid);
} catch(e) { } catch(e) {
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, e.stack); return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, (<Error>e).stack);
} }
return ctx.service.utils.resResult(STATUS.SUCCESS); return ctx.service.utils.resResult(STATUS.SUCCESS);
} }
@@ -153,7 +151,7 @@ export default class Game extends Service {
await ServerlistModel.updateByServerId(id, update); await ServerlistModel.updateByServerId(id, update);
} catch(e) { } catch(e) {
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, e.stack); return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, (<Error>e).stack);
} }
return ctx.service.utils.resResult(STATUS.SUCCESS); return ctx.service.utils.resResult(STATUS.SUCCESS);
} }
@@ -206,21 +204,21 @@ export default class Game extends Service {
}) })
} }
public async getNoticeList(page: number, pageSize: number, sortField: string, sortOrder: string, form: { type?: number, content?: string }) { public async getNoticeList(page: number, pageSize: number, sortField: string, sortOrder: string, form: { content?: string }) {
const { ctx } = this; const { ctx } = this;
const list = await NoticeModel.findByCondition(page, pageSize, sortField, sortOrder, form); const list = await NoticeModel.findByCondition(page, pageSize, sortField, sortOrder, form);
const total = await NoticeModel.countByCondition( form ) const total = await NoticeModel.countByCondition( form )
return ctx.service.utils.resResult(STATUS.SUCCESS, { return ctx.service.utils.resResult(STATUS.SUCCESS, {
list: list.map(cur => { list: list.map(cur => {
return { ...cur, startTime: cur.startTime.getTime(), endTime: cur.endTime.getTime(), showEndTime: cur.showEndTime.getTime(), showStartTime: cur.showStartTime.getTime()} let env = this.app.config.env;
if(env == 'local') env = 'development';
return { ...cur, showEndTime: cur.showEndTime.getTime(), showStartTime: cur.showStartTime.getTime(), env}
}), total }), total
}); });
} }
public async updateNotice(id: string|number, params: NoticeTypeParam) { public async updateNotice(id: string|number, params: NoticeTypeParam) {
const { ctx } = this; const { ctx } = this;
if(params.startTime) params.startTime = new Date(params.startTime);
if(params.endTime) params.endTime = new Date(params.endTime);
if(params.showStartTime) params.showStartTime = new Date(params.showStartTime); if(params.showStartTime) params.showStartTime = new Date(params.showStartTime);
if(params.showEndTime) params.showEndTime = new Date(params.showEndTime); if(params.showEndTime) params.showEndTime = new Date(params.showEndTime);
let result = await NoticeModel.updateNotice(id, params); let result = await NoticeModel.updateNotice(id, params);

View File

@@ -72,14 +72,14 @@ export default (appInfo: EggAppInfo) => {
maxFileSize: 1024, maxFileSize: 1024,
}; };
config.bigServers = [ // 大区数据 let regions = [ // 大区数据
{ id: 1, env: 'stable', name: "常山少年", domain: 'http://pinus_gm_test.trgame.cn' }, { id: 1, env: 'stable', name: "常山少年", domain: 'http://pinus_gm_test.trgame.cn' },
{ id: 2, env: 'alpha', name: "测试服", domain: 'http://zyz_gm.trgame.cn' }, { id: 2, env: 'alpha', name: "测试服", domain: 'http://zyz_gm.trgame.cn' },
{ id: 3, env: 'dev', name: "开发服", domain: 'http://zyzdev_gm.trgame.cn' } { id: 3, env: 'dev', name: "开发服", domain: 'http://zyzdev_gm.trgame.cn' }
]; ];
let httpProxy: any = {}; let httpProxy: any = {};
for(let { env, domain } of config.bigServers) { for(let { env, domain } of regions) {
httpProxy[`/api/${env}`] = { httpProxy[`/api/${env}`] = {
target: domain, target: domain,
changeOrigin: true, changeOrigin: true,
@@ -90,7 +90,6 @@ export default (appInfo: EggAppInfo) => {
} }
} }
} }
config.proxy = httpProxy;
// the return config will combines to EggAppConfig // the return config will combines to EggAppConfig
return { return {

View File

@@ -47,6 +47,7 @@ export const COUNTER = {
NOTICE: { name: 'notice', def: 1 }, NOTICE: { name: 'notice', def: 1 },
GIFT_CODE: { name: 'giftCode', def: 1 }, GIFT_CODE: { name: 'giftCode', def: 1 },
PVP_SEASON_NUM: { name: 'pvpSeason', def: 1 }, PVP_SEASON_NUM: { name: 'pvpSeason', def: 1 },
REGION: { name: 'region', def: 1 }
}; };
export const DEFAULT_HEROES = [19, 53,]; export const DEFAULT_HEROES = [19, 53,];

View File

@@ -2,7 +2,6 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { COUNTER } from '../consts' import { COUNTER } from '../consts'
import { CounterModel } from './Counter'; import { CounterModel } from './Counter';
import moment = require('moment');
/** /**
* 游戏字段接口 * 游戏字段接口
@@ -24,15 +23,8 @@ export default class Notice extends BaseModel {
@prop({ required: true }) @prop({ required: true })
timeStr: string; // 时间显示 timeStr: string; // 时间显示
@prop({ required: true })
startTime: Date; // 活动开始时间
@prop({ required: true })
endTime: Date; // 活动结束时间
public get time() { public get time() {
let startTime = moment(this.startTime).format('YYYY/MM/DD'); return this.timeStr;
let endTime = moment(this.endTime).format('YYYY/MM/DD');
return this.timeStr.replace(/%startTime/g, startTime).replace(/%endTime/g, endTime);
} }
@prop({ required: true, select: false }) @prop({ required: true, select: false })
@@ -73,7 +65,6 @@ export default class Notice extends BaseModel {
private static getSearchObj(form: { type?: number, content?: string }) { private static getSearchObj(form: { type?: number, content?: string }) {
let searchObj = {}; let searchObj = {};
if(form['type']) searchObj['type'] = form.type;
if(form['content']) searchObj['content'] = { $regex: new RegExp(form.content.toString(), 'i') }; if(form['content']) searchObj['content'] = { $regex: new RegExp(form.content.toString(), 'i') };
return searchObj return searchObj
} }

60
shared/db/Region.ts Normal file
View File

@@ -0,0 +1,60 @@
import { COUNTER } from './../consts';
import { CounterModel } from './Counter';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';
/**
* 大区数据
*/
@index({ id: 1 })
export default class Region extends BaseModel {
@prop({ required: true })
id: number; // 大区id
@prop({ required: true })
name: string; // 大区名
@prop({ required: true })
prefix: string; // 区名前缀
@prop({ required: true })
env: string; // 环境变量
@prop({ required: true })
gmLink: string; // 短链接地址
@prop({ required: true })
gameHost: string; // 长链接地址
@prop({ required: true })
gamePort: number; // 长链接地址
public static async createNewRegion(params: RegionUpdate) {
let id = await CounterModel.getNewCounter(COUNTER.REGION);
const rec: RegionType = await RegionModel.findOneAndUpdate({ id }, { $setOnInsert: params }, { new: true, upsert: true }).lean();
return rec;
}
public static async getAllRegion() {
const rec: RegionType[] = await RegionModel.find().select('-_id').lean();
return rec;
}
public static async findRegionById(id: number) {
const rec: RegionType = await RegionModel.findOne({ id }).lean();
return rec;
}
}
export let RegionModel: ReturnModelType<typeof Region, {}>;
export function loadRegionModel(connect: mongoose.Connection) {
RegionModel = getModelForClass(Region, {
existingConnection: connect
});
}
export interface RegionType extends Pick<DocumentType<Region>, keyof Region> { };
export type RegionUpdate = Partial<RegionType>; // 将所有字段变成可选项

View File

@@ -1,13 +1,11 @@
import BaseModel from './BaseModel'; import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { index, getModelForClass, prop, DocumentType, modelOptions, ReturnModelType, mongoose } from '@typegoose/typegoose';
import { GameModel } from './Game'; import { GameModel } from './Game';
import { CounterModel } from './Counter'; import { CounterModel } from './Counter';
import { COUNTER, SERVER_STATUS } from '../consts'; import { COUNTER, SERVER_STATUS } from '../consts';
import { ServerStategyTypeParam } from './ServerStategy'; import { ServerStategyTypeParam } from './ServerStategy';
import { getServerName, getServerGroupName } from '../pubUtils/data'; import { getServerName, getServerGroupName } from '../pubUtils/data';
// 暂时服务器列表是从game表取的之后会转移到使用这张表目前用作查询该服战力中位数
/** /**
* 游戏字段接口 * 游戏字段接口
*/ */
@@ -18,6 +16,15 @@ export default class Serverlist extends BaseModel {
@prop({ required: true, default: 1 }) @prop({ required: true, default: 1 })
gameId: number; // 游戏id Game表的id gameId: number; // 游戏id Game表的id
@prop({ required: true, default: 1 })
regionId: number; // 大区id
@prop({ required: true })
env: string; // 环境变量
@prop({ required: true })
serverType: string;
@prop({ required: true }) @prop({ required: true })
id: number; // 小区id 自增 id: number; // 小区id 自增
@@ -28,10 +35,10 @@ export default class Serverlist extends BaseModel {
name: string; // 小区区名 name: string; // 小区区名
@prop({ required: true }) @prop({ required: true })
groupId: number; // 区id groupId: number; // 区id
@prop({ required: true }) @prop({ required: true })
groupName: string; // 区区名 groupName: string; // 区区名
@prop({ required: true }) @prop({ required: true })
host: string; // pinus连接地址 host: string; // pinus连接地址
@@ -57,9 +64,6 @@ export default class Serverlist extends BaseModel {
@prop({ required: true }) @prop({ required: true })
openTime: Date; openTime: Date;
@prop({ required: true })
serverType: string;
@prop({ required: true, default: 0 }) @prop({ required: true, default: 0 })
maxPlayerCnt: number; // 最大玩家人数 maxPlayerCnt: number; // 最大玩家人数
@@ -183,7 +187,12 @@ export default class Serverlist extends BaseModel {
} }
export const ServerlistModel = getModelForClass(Serverlist); export let ServerlistModel: ReturnModelType<typeof Serverlist, {}>;
export function loadServerlistModel(connect: mongoose.Connection) {
ServerlistModel = getModelForClass(Serverlist, {
existingConnection: connect
});
}
export interface ServerlistType extends Pick<DocumentType<Serverlist>, keyof Serverlist> { export interface ServerlistType extends Pick<DocumentType<Serverlist>, keyof Serverlist> {
id: number; id: number;

View File

@@ -4,6 +4,8 @@ import { loadGMGroupModel } from "./GMGroup";
import { loadGMRecordModel } from "./GMRecord"; import { loadGMRecordModel } from "./GMRecord";
import { loadGMUserModel } from './GMUser' import { loadGMUserModel } from './GMUser'
import { loadGMUserGroupModel } from "./GMUserGroup"; import { loadGMUserGroupModel } from "./GMUserGroup";
import { loadRegionModel } from "./Region";
import { loadServerlistModel } from "./Serverlist";
export function loadGmDb(connect: mongoose.Connection) { export function loadGmDb(connect: mongoose.Connection) {
loadApiModel(connect); loadApiModel(connect);
@@ -11,4 +13,6 @@ export function loadGmDb(connect: mongoose.Connection) {
loadGMUserModel(connect); loadGMUserModel(connect);
loadGMUserGroupModel(connect); loadGMUserGroupModel(connect);
loadGMRecordModel(connect); loadGMRecordModel(connect);
loadRegionModel(connect);
loadServerlistModel(connect);
} }