✨ feat(服务器): 修改服务器id生成逻辑

This commit is contained in:
luying
2023-04-12 17:00:38 +08:00
parent e5bf8dc304
commit 8bccc4c0f2
+7 -8
View File
@@ -1,7 +1,6 @@
import BaseModel from './BaseModel'; import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions, ReturnModelType, mongoose } from '@typegoose/typegoose'; import { index, getModelForClass, prop, DocumentType, modelOptions, ReturnModelType, mongoose } from '@typegoose/typegoose';
import { CounterAllModal } from './CounterAll'; import { SERVER_STATUS } from '../consts';
import { COUNTER, SERVER_STATUS } from '../consts';
import { CreateServerParam } from '../domain/backEndField/params'; import { CreateServerParam } from '../domain/backEndField/params';
import { RegionType } from './Region'; import { RegionType } from './Region';
import { nowSeconds } from '../pubUtils/timeUtil'; import { nowSeconds } from '../pubUtils/timeUtil';
@@ -97,11 +96,11 @@ export default class Serverlist extends BaseModel {
isMain: boolean; isMain: boolean;
public static async getAllServerList() { public static async getAllServerList() {
let id = await CounterAllModal.getCounter(COUNTER.SERVER); let result: ServerlistType[] = [], id = 0;
let result: ServerlistType[] = []; for(let i = 0; i < 1000; i++) { // 防无限循环锁死
let n = Math.ceil(id/1000); let servers: ServerlistType[] = await ServerlistModel.find({ id: { $gt: id }}).sort({ id: 1 }).lean({ getters: true, virtuals: true });
for(let i = 0; i < n; i++) { if(servers.length == 0) break;
let servers: ServerlistType[] = await ServerlistModel.find().limit(1000).skip(i * 1000).lean({ getters: true, virtuals: true }); id = servers[servers.length -1].id;
result.push(...servers); result.push(...servers);
} }
return result; return result;
@@ -131,11 +130,11 @@ export default class Serverlist extends BaseModel {
let dicServerName = gameData.serverNames.get(serverId); let dicServerName = gameData.serverNames.get(serverId);
let { prefix, id: regionId, env } = region; let { prefix, id: regionId, env } = region;
// 分大区 // 分大区
let id = await CounterAllModal.getNewCounter(COUNTER.SERVER);
let { openTime, stopRegisterTime: hour, activityGroupId } = params; let { openTime, stopRegisterTime: hour, activityGroupId } = params;
let { sname: name, groupId, groupName } = dicServerName; let { sname: name, groupId, groupName } = dicServerName;
let stopRegisterTime = openTime + hour * 60 * 60; let stopRegisterTime = openTime + hour * 60 * 60;
let id = regionId * 10000 + serverId;
const doc = new ServerlistModel(); const doc = new ServerlistModel();
const update = Object.assign(doc.toJSON(), { const update = Object.assign(doc.toJSON(), {
id, regionId, env, prefix, id, regionId, env, prefix,