后台:更新开服邮件

This commit is contained in:
luying
2021-12-07 10:34:52 +08:00
parent d33eb67429
commit 103314a8bf
18 changed files with 5902 additions and 218 deletions
+26 -34
View File
@@ -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;