整理启动逻辑

This commit is contained in:
luying
2022-09-15 18:00:10 +08:00
parent d7d0216ad6
commit a592de3d17
5 changed files with 187 additions and 169 deletions
@@ -0,0 +1,152 @@
import { Application, ChannelService, HandlerService, pinus, } from 'pinus';
import { ActivityModel, ActivityModelType } from '../../db/Activity';
import { ServerlistModel } from '../../db/Serverlist';
import { reloadResources } from '../../pubUtils/data';
import { getServerMainten, setServerMainten, stopServerMainten } from '../../services/gmService';
import { taflush } from '../../services/sdkService';
import { ActivityInRemote } from '../../domain/activityField/activityField';
import { errlogger } from '../../util/logger';
import { ActivityGroupModel } from '../../db/ActivityGroup';
const activityByServer: Map<number, number[]> = new Map(); // serverId => activityId[];
const activities: Map<number, ActivityInRemote> = new Map(); // activityId => activity
const activityByType: Map<number, Map<number, number[]>> = new Map(); // serverId => type => activityId[];
const groupToServer: Map<number, number[]> = new Map(); // group => serverId[];
export function clearData() {
activityByServer.clear();
activities.clear();
activityByType.clear();
groupToServer.clear();
}
export async function loadActivities() {
clearData();
let activityGroup = await ActivityGroupModel.findAllActivityGroup();
for(let { groupId, serverIds } of activityGroup) {
for(let serverId of serverIds) {
if(!groupToServer.has(groupId)) {
groupToServer.set(groupId, []);
}
groupToServer.get(groupId).push(serverId);
}
}
let activityDb = await ActivityModel.findOpenAndComingActivityes();
let activityIds: number[] = [];
for(let activity of activityDb) {
activities.set(activity.activityId, new ActivityInRemote(activity));
activityIds.push(activity.activityId);
}
setActivityTypeAndServer();
pinus.app.set('activityByServer', activityByServer);
pinus.app.set('activityByType', activityByType);
pinus.app.set('activities', activities);
pinus.app.set('groupToServer', groupToServer);
}
export async function setActivityTypeAndServer() {
activityByServer.clear();
activityByType.clear();
for(let [_, activity] of activities) {
let servers = groupToServer.get(activity.groupId)||[];
for(let serverId of servers) {
if(!activityByServer.has(serverId)) {
activityByServer.set(serverId, []);
}
activityByServer.get(serverId).push(activity.activityId);
if(!activityByType.has(serverId)) {
activityByType.set(serverId, new Map());
}
if(!activityByType.get(serverId).has(activity.type)) {
activityByType.get(serverId).set(activity.type, []);
}
activityByType.get(serverId).get(activity.type).push(activity.activityId);
}
}
pinus.app.set('activityByServer', activityByServer);
pinus.app.set('activityByType', activityByType);
pinus.app.set('activities', activities);
pinus.app.set('groupToServer', groupToServer);
}
export function updateActivities(activityDb: ActivityInRemote[]) {
// console.log('******* activities', activities)
let activityIds: number[] = [];
for(let activity of activityDb) {
activities.set(activity.activityId, activity);
activityIds.push(activity.activityId);
}
setActivityTypeAndServer();
}
export function deleteActivities(activityIds: number[]) {
for(let activityId of activityIds) {
activities.delete(activityId);
}
setActivityTypeAndServer();
}
export function saveGroupToServer(groupId: number, serverIds: number[]) {
groupToServer.set(groupId, serverIds);
setActivityTypeAndServer();
}
export function saveActivitiesToGroup(groupId: number, activityDb: number[]) {
for(let activityId of activityDb) {
if(activities.get(activityId)) {
activities.get(activityId).groupId = groupId;
}
}
setActivityTypeAndServer();
}
export function _getActivityById(activityId: number) {
return <ActivityInRemote>activities?.get(activityId);
}
export function _getActivitiesByType(serverId: number, type: number) {
let activityByTypeData = activityByType?.get(serverId)?.get(type)??[];
let activities: Map<number, ActivityInRemote> = pinus.app.get('activities');
let result: ActivityInRemote[] = [];
for(let activityId of activityByTypeData) {
let activity = activities.get(activityId);
if(activity && activity.isEnable) {
result.push(activity);
}
}
return result;
}
export function _getActivitiesByServerId(serverId: number) {
let activityByServerId = activityByServer?.get(serverId)||[]
let activities: Map<number, ActivityInRemote> = pinus.app.get('activities');
let result: ActivityInRemote[] = [];
for(let activityId of activityByServerId) {
let activity = activities.get(activityId);
if(activity && activity.isEnable) {
result.push(activity);
}
}
return result;
}
export function _getActivities() {
try {
// console.log('***** activities', activities);
let result: ActivityInRemote[] = [];
for(let [_, activity] of activities) {
result.push(activity);
}
return result;
} catch(e) {
console.log('******** activity e', e)
}
}
@@ -10,7 +10,6 @@ import { getPlayerThirtyDaysData } from './thirtyDaysService';
import { getPlayerVipRechargeMoneyData, } from './vipRechargeMoneyService';
import { getPlayerActivityData, } from './selfServiceShopActivityService';
import { ActivitySelfServiceGoodsModel } from '../../db/ActivitySelfServiceGoods';
import moment = require('moment');
import { getPlayerTreasureHuntDataShow } from './treasureHuntService';
import { getPopUpShopDataShow } from './popUpShopService';
import { getPlayerSevenDaysData } from './sevenDaysService';
@@ -32,7 +31,6 @@ import { getTimeLimitRankDataShow } from './timeLimitRankService';
import { ActivityTaskPointModel } from '../../db/ActivityTaskPoint';
import { getRoleOnlineInfo } from '../redisService';
import { addTaskPassPoint, getTaskPassDataShow } from './taskPassService';
import { getGuildChannelSid } from '../chatService';
import { getGuildPayDataShow } from './guildPayService';
import { PopUpShopItemShow } from '../../domain/activityField/popUpShopField';
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from '../pushService';
@@ -40,6 +38,7 @@ import { UserOrderModelType } from '../../db/UserOrder';
import { isArray } from 'underscore';
import { getGuideGachaData } from './gachaService';
import { getPopNoticeData } from './popNoticeService';
import { _getActivities, _getActivitiesByServerId, _getActivitiesByType, _getActivityById } from './activityRemoteService';
/**
* 获取活动数据
@@ -293,51 +292,6 @@ export async function getActivityByServerId(serverId: number) {
return activities.map(transActivityInRemoteToModelType);
}
export function _getActivityById(activityId: number) {
return <ActivityInRemote>pinus.app.get('activities')?.get(activityId);
}
export function _getActivitiesByType(serverId: number, type: number) {
let activityByType = pinus.app.get('activityByType')?.get(serverId)?.get(type)??[];
let activities: Map<number, ActivityInRemote> = pinus.app.get('activities');
let result: ActivityInRemote[] = [];
for(let activityId of activityByType) {
let activity = activities.get(activityId);
if(activity && activity.isEnable) {
result.push(activity);
}
}
return result;
}
export function _getActivitiesByServerId(serverId: number) {
let activityByServerId = pinus.app.get('activityByServer')?.get(serverId)||[]
let activities: Map<number, ActivityInRemote> = pinus.app.get('activities');
let result: ActivityInRemote[] = [];
for(let activityId of activityByServerId) {
let activity = activities.get(activityId);
if(activity && activity.isEnable) {
result.push(activity);
}
}
return result;
}
export function _getActivities() {
try {
let activities = pinus.app.get('activities');
// console.log('***** activities', activities);
let result: ActivityInRemote[] = [];
for(let [_, activity] of activities) {
result.push(activity);
}
return result;
} catch(e) {
console.log('******** activity e', e)
}
}
export async function checkActivityEditable(activities: ActivityModelType[]) {
let now = new Date();