diff --git a/game-server/app/servers/activity/remote/activityRemote.ts b/game-server/app/servers/activity/remote/activityRemote.ts index 563ab1445..3f56c702e 100644 --- a/game-server/app/servers/activity/remote/activityRemote.ts +++ b/game-server/app/servers/activity/remote/activityRemote.ts @@ -38,8 +38,16 @@ export class ActivityRemote { } } + private clearData() { + this.activityByServer.clear(); + this.activities.clear(); + this.activityByType.clear(); + this.groupToServer.clear(); + } + public async loadActivities() { try { + this.clearData(); let activityGroup = await ActivityGroupModel.findAllActivityGroup(); for(let { groupId, serverIds } of activityGroup) { for(let serverId of serverIds) { diff --git a/game-server/app/services/gmService.ts b/game-server/app/services/gmService.ts index f4f4813c6..e7565e35c 100644 --- a/game-server/app/services/gmService.ts +++ b/game-server/app/services/gmService.ts @@ -1,5 +1,5 @@ import { MarqueeType, MarqueeModel } from "../db/Marquee"; -import { ACTIVITY_TYPE, MARQUEE_SHOW_TYPE, MARQUEE_TIME_TYPE, SURVEY_SELECT } from "../consts"; +import { ACTIVITY_TYPE, MARQUEE_SHOW_TYPE, MARQUEE_TIME_TYPE, REDIS_KEY, SURVEY_SELECT } from "../consts"; import { scheduleJob, scheduledJobs, Job } from 'node-schedule'; import { createMarqueeMsg as sysCreateMarqueeMsg, pushMarqueeMsg as sysPushMarqueeMsg } from './sysChatService'; import { GroupMessageType } from "../db/GroupMessage"; @@ -13,7 +13,7 @@ import { SignInData } from "../domain/activityField/signInField"; import { RegionModel, RegionType } from "../db/Region"; import { GMMail as StategyMail } from "../db/ServerStategy"; import { uniq } from "underscore"; -import { ActivityModelType } from "../db/Activity"; +import { ActivityModel, ActivityModelType } from "../db/Activity"; import { dicRMB } from "../pubUtils/dictionary/DicRMB"; import { LimitShopData } from "../domain/activityField/limitShopField"; import { YuanBaoShopData } from "../domain/activityField/yuanBaoShopField"; @@ -31,6 +31,9 @@ import { SurveyModel } from "../db/Survery"; import { SurveyRecModel } from "../db/SurveyRec"; import { getPopUpShopData } from "./activity/popUpShopService"; import { TaskPassData } from "../domain/activityField/taskPassField"; +import { ActivityGroupModel } from "../db/ActivityGroup"; +import { ActivityInRemote } from "../domain/activityField/activityField"; +import { redisClient } from "./redisService"; // —————————————— 跑马灯 —————————————— // // 初始 @@ -187,7 +190,17 @@ export async function createNewServer(region: RegionType ,serverId: number, para let newServer = await ServerlistModel.newServer(params, region, serverId, uid); if(params.openMail) await sendOpenServerMail('openMail', params.openMail, newServer, uid); if(params.circleMail) await sendOpenServerMail('circleMail', params.circleMail, newServer, uid); + if(params.activityGroupId && params.activityGroupId.length > 0) { + await ActivityGroupModel.addServerToGroupData(newServer.id, params.activityGroupId); + let activityServers = pinus.app.getServersByType('activity'); + for(let server of activityServers) { + pinus.app.rpc.activity.activityRemote.loadActivities.toServer(server.id); + } + } await RegionModel.newServer(region.id, newServer); + await redisClient().hsetAsync(REDIS_KEY.SERVER, `${newServer.id}`, `${newServer.name}`); + await redisClient().hsetAsync(REDIS_KEY.SERVER_OPEN_TIME, `${newServer.id}`, `${newServer.openTime}`); + } function getDicRMB(productID: string) { diff --git a/shared/db/Activity.ts b/shared/db/Activity.ts index a0f187f4f..8e76b4493 100644 --- a/shared/db/Activity.ts +++ b/shared/db/Activity.ts @@ -63,6 +63,14 @@ export default class Activity extends BaseModel { return result; } + + public static async findOpenActivityByGroupId(activityGroupId: number[]) { + let result: ActivityModelType[] = await ActivityModel.find( + { groupId: { $in: activityGroupId }, isEnable: true } + ).sort({ activityId: -1 }).lean(true); + return result; + } + //根据活动类型查询活动数据 public static async findActivityByType(type: number) { let result: ActivityModelType[] = await ActivityModel.find({ type }).lean(true); diff --git a/shared/db/ActivityGroup.ts b/shared/db/ActivityGroup.ts index 3e294aa6a..28489650a 100644 --- a/shared/db/ActivityGroup.ts +++ b/shared/db/ActivityGroup.ts @@ -84,6 +84,12 @@ export default class Activity_Group extends BaseModel { return result; } + //更新询组 + public static async addServerToGroupData(serverId: number, groupIds: number[]) { + await ActivityGroupModel.updateMany({ groupId: { $in: groupIds} }, + { $addToSet: { serverIds: serverId } }, { new: true }).lean(true); + } + // 根据包含的活动更新开始和结束时间 private static async updateTime(groupId: number, aids: number[], uid = 1) { let activities = await ActivityModel.findActivityByIds(aids);