✨ feat(服务器): 修改服务器自动开服策略
This commit is contained in:
@@ -5,6 +5,7 @@ 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';
|
||||
|
||||
export class Maintenance {
|
||||
|
||||
@@ -66,6 +67,9 @@ export default class Serverlist extends BaseModel {
|
||||
// @prop({ required: true, type: Number })
|
||||
// activityGroupId: number[]; // 活动组
|
||||
|
||||
@prop({ required: true })
|
||||
generateCode: string; // 生成编号
|
||||
|
||||
public get status() {
|
||||
let now = nowSeconds();
|
||||
if (now < this.openTime) {
|
||||
@@ -137,16 +141,20 @@ export default class Serverlist extends BaseModel {
|
||||
|
||||
let id = regionId * 10000 + serverId;
|
||||
const doc = new ServerlistModel();
|
||||
let generateCode = genCode(10)
|
||||
const update = Object.assign(doc.toJSON(), {
|
||||
id, regionId, env, prefix,
|
||||
serverId, name, groupId, groupName, activityGroupId,
|
||||
openTime, stopRegisterTime,
|
||||
createdBy: uid, updatedBy: uid
|
||||
createdBy: uid, updatedBy: uid, generateCode
|
||||
});
|
||||
// 旧服修改状态
|
||||
await ServerlistModel.updateMany({ env, serverStatus: SERVER_STATUS.NEW }, { $set: { serverStatus: SERVER_STATUS.HOT } })
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id }, { $setOnInsert: update }, { new: true, upsert: true }).lean({ getters: true, virtuals: true });
|
||||
return server;
|
||||
if(server.generateCode == generateCode) {
|
||||
// 旧服修改状态
|
||||
await ServerlistModel.updateMany({ env, serverStatus: SERVER_STATUS.NEW, id: { $lt: id } }, { $set: { serverStatus: SERVER_STATUS.HOT } })
|
||||
return server;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static async findByEnv(env?: string, isReview = false) {
|
||||
@@ -180,7 +188,7 @@ export default class Serverlist extends BaseModel {
|
||||
// }
|
||||
|
||||
public static async incRoleCnt(serverId: number) {
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $inc: { playerCnt: 1 } });
|
||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $inc: { playerCnt: 1 } }, { new: true }).lean();
|
||||
return server;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user