后台:更新开服邮件
This commit is contained in:
+26
-34
@@ -1,9 +1,10 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions, ReturnModelType, mongoose } from '@typegoose/typegoose';
|
||||
import { GameModel } from './Game';
|
||||
import { CounterModel } from './Counter';
|
||||
import { CounterAllModal } from './CounterAll';
|
||||
import { COUNTER, SERVER_STATUS } from '../consts';
|
||||
import { getServerName, getServerGroupName } from '../pubUtils/data';
|
||||
import { CreateServerParam } from '../domain/backEndField/params';
|
||||
import { RegionType } from './Region';
|
||||
import { DicServerName } from '../pubUtils/dictionary/DicServerName';
|
||||
|
||||
/**
|
||||
* 游戏字段接口
|
||||
@@ -12,9 +13,6 @@ import { getServerName, getServerGroupName } from '../pubUtils/data';
|
||||
@modelOptions({ schemaOptions: { id: false } })
|
||||
export default class Serverlist extends BaseModel {
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
gameId: number; // 游戏id Game表的id
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
regionId: number; // 大区id
|
||||
|
||||
@@ -22,7 +20,7 @@ export default class Serverlist extends BaseModel {
|
||||
env: string; // 环境变量
|
||||
|
||||
@prop({ required: true })
|
||||
serverType: string;
|
||||
prefix: string; // 前缀
|
||||
|
||||
@prop({ required: true })
|
||||
id: number; // 小区id 自增
|
||||
@@ -39,12 +37,6 @@ export default class Serverlist extends BaseModel {
|
||||
@prop({ required: true })
|
||||
groupName: string; // 战区区名
|
||||
|
||||
@prop({ required: true })
|
||||
host: string; // pinus连接地址
|
||||
|
||||
@prop({ required: false, default: 3014 })
|
||||
port: number; // pinus端口
|
||||
|
||||
@prop({ required: true, default: 1, enum: SERVER_STATUS })
|
||||
serverStatus: number; // 服务器状态
|
||||
|
||||
@@ -63,14 +55,20 @@ export default class Serverlist extends BaseModel {
|
||||
@prop({ required: true })
|
||||
openTime: Date;
|
||||
|
||||
@prop({ required: true })
|
||||
stopRegisterTime: Date;
|
||||
|
||||
@prop({ required: true, default: true })
|
||||
canRegister: boolean;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
maxPlayerCnt: number; // 最大玩家人数
|
||||
playerCnt: number; // 当前玩家人数
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
medianCe: number; // 中位数武将战力、缩小10000倍后的结果
|
||||
|
||||
public static async getAllServerList() {
|
||||
let id = await CounterModel.getCounter(COUNTER.SERVER);
|
||||
let id = await CounterAllModal.getCounter(COUNTER.SERVER);
|
||||
let result: ServerlistType[] = [];
|
||||
let n = Math.ceil(id/1000);
|
||||
for(let i = 0; i < n; i++) {
|
||||
@@ -105,28 +103,22 @@ export default class Serverlist extends BaseModel {
|
||||
return server;
|
||||
}
|
||||
|
||||
public static async newServer(params: { serverType: string, openTime: Date, name?: string }, stategy: any, uid = 1 ) {
|
||||
let { serverType, name } = params;
|
||||
|
||||
let serverEnvs = await GameModel.getServerEnvList();
|
||||
let curEnv = serverEnvs.find(cur => cur.serverType == serverType);
|
||||
if(!curEnv) return false;
|
||||
let { gameHost: host } = curEnv;
|
||||
|
||||
public static async newServer(params: CreateServerParam, region: RegionType, dicServerName: DicServerName, uid = 1 ) {
|
||||
let { prefix, id: regionId, env } = region;
|
||||
// 分大区
|
||||
let groupId = await CounterModel.getCounter(COUNTER.SERVER_GROUP);
|
||||
let groupServerCount = await ServerlistModel.countByCondition({ serverType, groupId });
|
||||
if(groupServerCount > 10) {
|
||||
groupId = await CounterModel.getNewCounter(COUNTER.SERVER_GROUP);
|
||||
}
|
||||
let groupName = getServerGroupName(groupId)||"";
|
||||
|
||||
let serverId = await CounterModel.getNewCounter({ name: `${COUNTER.SERVER_BY_TYPE.name}_${serverType}`, def: COUNTER.SERVER_BY_TYPE.def });
|
||||
let id = await CounterModel.getNewCounter(COUNTER.SERVER);
|
||||
if(!name) name = getServerName(id)||"";
|
||||
let id = await CounterAllModal.getNewCounter(COUNTER.SERVER);
|
||||
let { openTime: openTimeNum, stopRegisterTime: hour, activityGroupId } = params;
|
||||
let { id: serverId, sname: name, groupId, groupName } = dicServerName;
|
||||
let openTime = new Date(openTimeNum * 1000);
|
||||
let stopRegisterTime = new Date(openTimeNum + hour * 60 * 60);
|
||||
|
||||
const doc = new ServerlistModel();
|
||||
const update = Object.assign(doc.toJSON(), params, { id, serverId, host, groupId, groupName, name, createdBy: uid, updatedBy: uid }, { activityGroupId: stategy.activityGroupId, maxPlayerCnt: stategy.maxPlayerCnt});
|
||||
const update = Object.assign(doc.toJSON(), {
|
||||
id, regionId, env, prefix,
|
||||
serverId, name, groupId, groupName, activityGroupId,
|
||||
openTime, stopRegisterTime,
|
||||
createdBy: uid, updatedBy: uid
|
||||
});
|
||||
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id }, { $setOnInsert: update }, { new: true, upsert: true }).lean({ getters: true, virtuals: true });
|
||||
return server;
|
||||
|
||||
Reference in New Issue
Block a user