✨ feat(服务器): 更新维护逻辑
This commit is contained in:
@@ -5,9 +5,9 @@ import { getMails } from './mailService';
|
||||
import { recentGuildMsgs, recentLeagueMsgs, recentPrivateChatInfos, recentServerGroupMsgs, recentSysMsgs, recentWorldMsgs } from './chatService';
|
||||
import { getCurTask, getPvpTask } from './task/taskService';
|
||||
|
||||
import { RoleType } from '../db/Role';
|
||||
import { RoleModel, RoleType } from '../db/Role';
|
||||
import { Application, FrontendOrBackendSession, pinus, RpcClient } from 'pinus';
|
||||
import { getRandEelmWithWeight, resResult } from '../pubUtils/util';
|
||||
import { compareVersion, getRandEelmWithWeight, resResult } from '../pubUtils/util';
|
||||
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE, HERO_SELECT, ENTERY_ROLE_PICK, JEWEL_SELECT, ITEM_SELECT, SKIN_SELECT, PUSH_ROUTE, ARTIFACT_SELECT, ACTIVITYITEM_SELECT, SNS_LINK_TYPE } from '../consts';
|
||||
import { getAllShopList } from './shopService';
|
||||
import { getGeneralRank, getRankFirstReward } from './rankService';
|
||||
|
||||
@@ -159,14 +159,15 @@ export async function sendOpenServerMail(type: 'openMail'|'circleMail', mail: St
|
||||
return true;
|
||||
}
|
||||
|
||||
export function setServerMainten(serverIds: number[], startTime: number, endTime: number) {
|
||||
export function setServerMainten(serverIds: number[], startTime: number, endTime: number, version: string) {
|
||||
let maintenServers = pinus.app.get('maintenServers')||new Map();
|
||||
for(let id of serverIds) {
|
||||
if(!maintenServers.has(id)) {
|
||||
maintenServers.set(id, { startTime, endTime });
|
||||
maintenServers.set(id, { startTime, endTime, version });
|
||||
} else {
|
||||
maintenServers.get(id).startTime = startTime;
|
||||
maintenServers.get(id).endTime = endTime;
|
||||
maintenServers.get(id).version = version;
|
||||
}
|
||||
}
|
||||
pinus.app.set('maintenServers', maintenServers);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Channel, pinus } from 'pinus';
|
||||
import { getRandValueByMinMax, getRandEelm, decodeIdCntArrayStr } from '../pubUtils/util';
|
||||
import { getRandValueByMinMax, getRandEelm, decodeIdCntArrayStr, compareVersion } from '../pubUtils/util';
|
||||
import { DEFAULT_HEROES, LINEUP_NUM, ROLE_SELECT, TALENT_RELATION_TYPE, TERAPH_RANDOM, SYSTEM_OPEN_ID, GuideUnloadNum, CHECK_HERO_CONSUME, ABI_STAGE } from "../consts";
|
||||
import { DicTeraph } from '../pubUtils/dictionary/DicTeraph';
|
||||
import { Teraph, RoleModel, RoleType, RoleUpdate } from '../db/Role';
|
||||
@@ -17,6 +17,7 @@ import IP2Region from "ip2region";
|
||||
import { getServerCreateTime } from './redisService';
|
||||
import { checkWhiteList } from '../pubUtils/sysUtil';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { ServerlistModel } from '../db/Serverlist';
|
||||
const query = new IP2Region({ disableIpv6: true });
|
||||
|
||||
|
||||
@@ -305,13 +306,15 @@ export async function getIpLocation(ip: string) {
|
||||
}
|
||||
}
|
||||
|
||||
// 服务器是否开启
|
||||
export async function checkServerIsOpen(serverId: number, ip: string, uid: number) {
|
||||
let isWhiteList = await checkWhiteList(pinus.app.get('env'), ip, uid);
|
||||
if(isWhiteList) return true;
|
||||
|
||||
let serverTime = await getServerCreateTime(serverId);
|
||||
return serverTime <= nowSeconds();
|
||||
// 玩家是否是新玩家
|
||||
export async function checkIsNewUser(version: string, minVersion: string, uid: number, latestServerUniqId: number) {
|
||||
let versionFlag = compareVersion(version, minVersion||'0.0.0.0');
|
||||
if(versionFlag >= 0) {
|
||||
let hasRole = await RoleModel.checkHasRole(uid, latestServerUniqId);
|
||||
return !hasRole
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export function calStarUpConsume(hero: HeroType) {
|
||||
|
||||
@@ -143,7 +143,7 @@ export async function autoCreateServerWhenRoleInit(serverId: number) {
|
||||
return errlogger.error('create new server region not found');
|
||||
}
|
||||
|
||||
if(region.stategy && region.stategy.type == 2 && region.latestServerUniqId == server.id && server.playerCnt >= region.stategy.maxPlayerCnt) {
|
||||
if(region.stategy && region.stategy.isOpen && region.stategy.type == 2 && region.latestServerUniqId == server.id && server.playerCnt >= region.stategy.maxPlayerCnt) {
|
||||
let params = new CreateServerParam();
|
||||
params.setByRegionStategy(region, nowSeconds())
|
||||
await createNewServer(region, server.serverId + 1, params);
|
||||
|
||||
@@ -571,7 +571,7 @@ export async function initMaintenanaceInOtherServers() {
|
||||
for(let server of servers) {
|
||||
let { id, maintenance } = server;
|
||||
if(maintenance && maintenance.isOpen) {
|
||||
setServerMainten([id], maintenance.startTime, maintenance.endTime)
|
||||
setServerMainten([id], maintenance.startTime, maintenance.endTime, maintenance.version)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -641,14 +641,14 @@ async function startMaintenanceSchedule(batchCode: string) {
|
||||
|
||||
// 更新connectorRemote里面的维护服务器
|
||||
console.log('******** startMaintenanceSchedule', batchCode, serverIds, maintenance.startTime, maintenance.endTime)
|
||||
pinus.app.rpc.connector.connectorRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.activity.activityRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.battle.battleRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.comBattle.comBattleRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.chat.chatRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.guild.guildRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.order.orderRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.role.roleRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime);
|
||||
pinus.app.rpc.connector.connectorRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.activity.activityRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.battle.battleRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.comBattle.comBattleRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.chat.chatRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.guild.guildRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.order.orderRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
pinus.app.rpc.role.roleRemote.setServerMainten.broadcast(serverIds, maintenance.startTime, maintenance.endTime, maintenance.version);
|
||||
// 数数flush
|
||||
pinus.app.rpc.activity.activityRemote.taflush.broadcast();
|
||||
pinus.app.rpc.battle.battleRemote.taflush.broadcast();
|
||||
|
||||
Reference in New Issue
Block a user