✨ feat(服务器): 更新维护逻辑
This commit is contained in:
@@ -3,7 +3,6 @@ import { index, getModelForClass, prop, DocumentType, modelOptions, ReturnModelT
|
||||
import { SERVER_STATUS } from '../consts';
|
||||
import { CreateServerParam } from '../domain/backEndField/params';
|
||||
import { RegionType } from './Region';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { getDicServerName } from '../pubUtils/data';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
|
||||
@@ -24,6 +23,9 @@ export class Maintenance {
|
||||
@prop({ required: true })
|
||||
hasNotify: boolean; // 是否有维护通知
|
||||
|
||||
@prop({ required: true })
|
||||
version: string; // 可以进入的版本
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,16 +72,8 @@ export default class Serverlist extends BaseModel {
|
||||
@prop({ required: true })
|
||||
generateCode: string; // 生成编号
|
||||
|
||||
public get status() {
|
||||
let now = nowSeconds();
|
||||
if (now < this.openTime) {
|
||||
return SERVER_STATUS.WILL_OPEN;
|
||||
} else if (this.maintenance && this.maintenance.isOpen && this.maintenance.startTime < now && this.maintenance.endTime > now) {
|
||||
return SERVER_STATUS.MAINTENANCE;
|
||||
} else {
|
||||
return this.serverStatus; // 未开服
|
||||
}
|
||||
}
|
||||
@prop({ required: true })
|
||||
latestServerUniqId: number; // 最新服
|
||||
|
||||
@prop({ required: true })
|
||||
openTime: number;
|
||||
@@ -102,7 +96,7 @@ export default class Serverlist extends BaseModel {
|
||||
public static async getAllServerList() {
|
||||
let result: ServerlistType[] = [], id = 0;
|
||||
for(let i = 0; i < 1000; i++) { // 防无限循环锁死
|
||||
let servers: ServerlistType[] = await ServerlistModel.find({ id: { $gt: id }}).sort({ id: 1 }).lean({ getters: true, virtuals: true });
|
||||
let servers: ServerlistType[] = await ServerlistModel.find({ id: { $gt: id }}).sort({ id: 1 }).lean({ getters: true });
|
||||
if(servers.length == 0) break;
|
||||
id = servers[servers.length -1].id;
|
||||
result.push(...servers);
|
||||
@@ -111,17 +105,17 @@ export default class Serverlist extends BaseModel {
|
||||
}
|
||||
|
||||
public static async findByServerId(serverId: number) {
|
||||
let server: ServerlistType = await ServerlistModel.findOne({ id: serverId }).lean({ getters: true, virtuals: true });
|
||||
let server: ServerlistType = await ServerlistModel.findOne({ id: serverId }).lean({ getters: true });
|
||||
return server;
|
||||
}
|
||||
|
||||
public static async findByServerIds(serverIds: number[], select?: string) {
|
||||
let servers: ServerlistType[] = await ServerlistModel.find({ id: { $in: serverIds } }).select(select).lean({ getters: true, virtuals: true });
|
||||
let servers: ServerlistType[] = await ServerlistModel.find({ id: { $in: serverIds } }).select(select).lean({ getters: true });
|
||||
return servers;
|
||||
}
|
||||
|
||||
public static async updateByServerId(serverId: number, update: ServerlistUpdate) {
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $set: update }, {new: true}).lean({ getters: true, virtuals: true });
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $set: update }, {new: true}).lean({ getters: true });
|
||||
return server;
|
||||
}
|
||||
|
||||
@@ -148,10 +142,11 @@ export default class Serverlist extends BaseModel {
|
||||
openTime, stopRegisterTime,
|
||||
createdBy: uid, updatedBy: uid, generateCode
|
||||
});
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id }, { $setOnInsert: update }, { new: true, upsert: true }).lean({ getters: true, virtuals: true });
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id }, { $setOnInsert: update }, { new: true, upsert: true }).lean({ getters: true });
|
||||
if(server.generateCode == generateCode) {
|
||||
// 旧服修改状态
|
||||
await ServerlistModel.updateMany({ env, serverStatus: SERVER_STATUS.NEW, id: { $lt: id } }, { $set: { serverStatus: SERVER_STATUS.HOT } })
|
||||
await ServerlistModel.updateMany({ env, serverStatus: SERVER_STATUS.NEW, id: { $lt: id } }, { $set: { serverStatus: SERVER_STATUS.HOT } })
|
||||
await ServerlistModel.updateMany({ env }, { latestServerUniqId: server.id });
|
||||
return server;
|
||||
}
|
||||
return null;
|
||||
@@ -159,10 +154,10 @@ export default class Serverlist extends BaseModel {
|
||||
|
||||
public static async findByEnv(env?: string, isReview = false) {
|
||||
if(isReview) {
|
||||
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 }, isReview }).sort({ id: -1 }).lean({ getters: true, virtuals: true });
|
||||
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 }, isReview }).sort({ id: -1 }).lean({ getters: true });
|
||||
return server;
|
||||
} else {
|
||||
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 } }).sort({ id: -1 }).lean({ getters: true, virtuals: true });
|
||||
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 } }).sort({ id: -1 }).lean({ getters: true });
|
||||
return server;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user