活动:修改获取活动逻辑,从serverlist上剥离

This commit is contained in:
luying
2022-04-07 11:38:33 +08:00
parent 0d7b435f1f
commit 765aff9cf0
31 changed files with 148 additions and 152 deletions
@@ -33,8 +33,7 @@ export class ActivityHandler {
let playerActivityArray = []; let playerActivityArray = [];
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let groups = await ActivityGroupModel.findByServerId(serverId);
let groups = await ActivityGroupModel.findGroupsData(activityGroupId);
let playerGroupArray = []; let playerGroupArray = [];
for (let groupData of groups) { for (let groupData of groups) {
let playerGroupActivityArray = []; let playerGroupActivityArray = [];
@@ -7,6 +7,7 @@ import { getServerMainten, setServerMainten, stopServerMainten } from '../../../
import { taflush } from '../../../services/sdkService'; import { taflush } from '../../../services/sdkService';
import { ActivityInRemote } from '../../../domain/activityField/activityField'; import { ActivityInRemote } from '../../../domain/activityField/activityField';
import { errlogger } from '../../../util/logger'; import { errlogger } from '../../../util/logger';
import { ActivityGroupModel } from '../../../db/ActivityGroup';
export default function (app: Application) { export default function (app: Application) {
new HandlerService(app, {}); new HandlerService(app, {});
@@ -39,9 +40,9 @@ export class ActivityRemote {
public async loadActivities() { public async loadActivities() {
try { try {
let servers = await ServerlistModel.findByEnv(this.app.get('env')); let activityGroup = await ActivityGroupModel.findAllActivityGroup();
for(let { id: serverId, activityGroupId } of servers) { for(let { groupId, serverIds } of activityGroup) {
for(let groupId of activityGroupId) { for(let serverId of serverIds) {
if(!this.groupToServer.has(groupId)) { if(!this.groupToServer.has(groupId)) {
this.groupToServer.set(groupId, []); this.groupToServer.set(groupId, []);
} }
+10 -10
View File
@@ -224,16 +224,16 @@ export class GmHandler {
async saveGroupToServer(groupId: number, serverIds: number[], uid: number) { async saveGroupToServer(groupId: number, serverIds: number[], uid: number) {
await ServerlistModel.pullByGroupId(groupId); // await ServerlistModel.pullByGroupId(groupId);
let servers = await ServerlistModel.findServerByIds(serverIds); // let servers = await ServerlistModel.findServerByIds(serverIds);
for(let server of servers) { // for(let server of servers) {
let pushArr: number[] = [], pullArr: number[] = []; // let pushArr: number[] = [], pullArr: number[] = [];
let activityGroupId = server.activityGroupId||[]; // let activityGroupId = server.activityGroupId||[];
if(!activityGroupId.includes(groupId)) { // if(!activityGroupId.includes(groupId)) {
pushArr.push(groupId); // pushArr.push(groupId);
} // }
await ServerlistModel.updateActivityGroup(server._id, pushArr, pullArr); // await ServerlistModel.updateActivityGroup(server._id, pushArr, pullArr);
} // }
await ActivityGroupModel.updateServerData(groupId, serverIds, uid); await ActivityGroupModel.updateServerData(groupId, serverIds, uid);
let activityServers = pinus.app.getServersByType('activity'); let activityServers = pinus.app.getServersByType('activity');
@@ -283,7 +283,7 @@ export function _getActivitiesByType(serverId: number, type: number) {
let result: ActivityInRemote[] = []; let result: ActivityInRemote[] = [];
for(let activityId of activityByType) { for(let activityId of activityByType) {
let activity = activities.get(activityId); let activity = activities.get(activityId);
if(activity && activity.beginTime <= Date.now()) { if(activity && activity.beginTime <= Date.now() && activity.endTime >= Date.now()) {
result.push(activity); result.push(activity);
} }
} }
@@ -5,7 +5,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyChallengesData } from '../../domain/activityField/dailyChallengesField'; import { DailyChallengesData } from '../../domain/activityField/dailyChallengesField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -17,8 +17,8 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function dailyChallengesActivity(serverId: number, roleId: string) { export async function dailyChallengesActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, new Date()); let activityDataArray: ActivityModelType[] = await getActivitiesByType(serverId, ACTIVITY_TYPE.TASK_DAILY_CHALLENGES);
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -5,7 +5,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyCoinData } from '../../domain/activityField/dailyCoinField'; import { DailyCoinData } from '../../domain/activityField/dailyCoinField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -17,8 +17,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function dailyCoinActivity(serverId: number, roleId: string) { export async function dailyCoinActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_COIN);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_COIN, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -5,7 +5,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyGKData } from '../../domain/activityField/dailyGKField'; import { DailyGKData } from '../../domain/activityField/dailyGKField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -17,8 +17,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function dailyGKActivity(serverId: number, roleId: string) { export async function dailyGKActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_GK);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_GK, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -5,7 +5,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyGiftsData } from '../../domain/activityField/dailyGiftsField'; import { DailyGiftsData } from '../../domain/activityField/dailyGiftsField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
@@ -18,8 +18,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function dailyGiftsActivity(serverId: number, roleId: string) { export async function dailyGiftsActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -5,7 +5,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyMealData } from '../../domain/activityField/dailyMealField'; import { DailyMealData } from '../../domain/activityField/dailyMealField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -17,8 +17,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function dailyMealActivity(serverId: number, roleId: string) { export async function dailyMealActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_MEAL);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_MEAL, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -7,7 +7,7 @@ import { RewardParam } from '../../domain/activityField/rewardField';
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -20,9 +20,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
*/ */
export async function dailyRMBGiftsActivity(serverId: number, roleId: string) { export async function dailyRMBGiftsActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_RMB_GIFTS);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_RMB_GIFTS, new Date())
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -5,7 +5,7 @@ import { ActivityBuyRecordsModel } from '../../db/ActivityBuyRecords';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { GrowthFundData } from '../../domain/activityField/growthFundField'; import { GrowthFundData } from '../../domain/activityField/growthFundField';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -25,8 +25,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶) GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
*/ */
export async function growthFundActivity(type: number, serverId: number, roleId: string) { export async function growthFundActivity(type: number, serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, type);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date())
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -3,11 +3,9 @@ import { ActivityModel, ActivityModelType } from '../../db/Activity';
import { ActivityGrowthModel, ActivityGrowthModelType } from '../../db/ActivityGrowth'; import { ActivityGrowthModel, ActivityGrowthModelType } from '../../db/ActivityGrowth';
import { ActivityGrowthPointModel, ActivityGrowthPointModelType } from '../../db/ActivityGrowthPoint'; import { ActivityGrowthPointModel, ActivityGrowthPointModelType } from '../../db/ActivityGrowthPoint';
import { HeroModel } from '../../db/Hero'; import { HeroModel } from '../../db/Hero';
import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist';
import { GrowthData } from '../../domain/activityField/growthField'; import { GrowthData } from '../../domain/activityField/growthField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
* 获取活动数据 * 获取活动数据
@@ -18,8 +16,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function growthActivity(serverId: number, roleId: string) { export async function growthActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.TASK_GROWTH);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -64,8 +64,7 @@ export async function getPlayerLimitPackageData(activityId: number, serverId: nu
*/ */
export async function limitPackageActivity(serverId: number, roleId: string, type: number) { export async function limitPackageActivity(serverId: number, roleId: string, type: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, type);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date)
activityArray = activityArray.sort((a, b) => { activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId return b.activityId - a.activityId
}); });
@@ -6,7 +6,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { MonopolyData } from '../../domain/activityField/monopolyField'; import { MonopolyData } from '../../domain/activityField/monopolyField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -18,8 +18,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function getMonopolyActivity(serverId: number, roleId: string) { export async function getMonopolyActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.MONOPOLY);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.MONOPOLY, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -8,7 +8,7 @@ import moment = require('moment');
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { sendMailByContent } from './../mailService'; import { sendMailByContent } from './../mailService';
import { RoleModel, RoleType } from '../../db/Role'; import { RoleModel, RoleType } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { RewardInter } from '../../pubUtils/interface'; import { RewardInter } from '../../pubUtils/interface';
import { DUNGEON_CONST, PVP, VIP } from '../../pubUtils/dicParam'; import { DUNGEON_CONST, PVP, VIP } from '../../pubUtils/dicParam';
import { cal } from '../../pubUtils/util'; import { cal } from '../../pubUtils/util';
@@ -26,8 +26,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
*/ */
export async function monthlyTicketActivity(serverId: number, roleId: string, type: number) { export async function monthlyTicketActivity(serverId: number, roleId: string, type: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, type);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date())
activityArray = activityArray.sort((a, b) => { activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId return b.activityId - a.activityId
}); });
@@ -1,11 +1,9 @@
import { ACTIVITY_TYPE } from '../../consts'; import { ACTIVITY_TYPE } from '../../consts';
import { ActivityModel, ActivityModelType } from '../../db/Activity'; import { ActivityModel, ActivityModelType } from '../../db/Activity';
import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/ActivityNewHeroGK'; import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/ActivityNewHeroGK';
import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist';
import { NewHeroGKData } from '../../domain/activityField/newHeroGKField'; import { NewHeroGKData } from '../../domain/activityField/newHeroGKField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -17,8 +15,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function newHeroGKActivity(serverId: number, roleId: string) { export async function newHeroGKActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_GK);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_GK, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -5,7 +5,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { NewHeroGachaData } from '../../domain/activityField/newHeroGachaField'; import { NewHeroGachaData } from '../../domain/activityField/newHeroGachaField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -17,8 +17,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function newHeroGachaActivity(serverId: number, roleId: string) { export async function newHeroGachaActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.NEW_HERO_GACHA);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.NEW_HERO_GACHA, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -4,7 +4,7 @@ import { ActivityNewHeroGiftModel, ActivityNewHeroGiftModelType } from '../../db
import { NewHeroGiftData } from '../../domain/activityField/newHeroGiftField'; import { NewHeroGiftData } from '../../domain/activityField/newHeroGiftField';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -17,8 +17,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
*/ */
export async function getNewHeroGiftsActivity(serverId: number, roleId: string) { export async function getNewHeroGiftsActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_RMB_GIFTS);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_RMB_GIFTS, new Date())
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
@@ -2,11 +2,9 @@ import { ACTIVITY_TYPE } from '../../consts';
import { ActivityModel, ActivityModelType } from '../../db/Activity'; import { ActivityModel, ActivityModelType } from '../../db/Activity';
import { ActivityRefreshTaskModel, ActivityRefreshTaskModelType } from '../../db/ActivityRefreshTask'; import { ActivityRefreshTaskModel, ActivityRefreshTaskModelType } from '../../db/ActivityRefreshTask';
import { ActivityRefreshTaskPointModel, ActivityRefreshTaskPointModelType } from '../../db/ActivityRefreshTaskPoint'; import { ActivityRefreshTaskPointModel, ActivityRefreshTaskPointModelType } from '../../db/ActivityRefreshTaskPoint';
import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist';
import { RefreshTaskData } from '../../domain/activityField/refreshTaskField'; import { RefreshTaskData } from '../../domain/activityField/refreshTaskField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
@@ -18,8 +16,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function getRefreshTaskActivity(serverId: number, roleId: string) { export async function getRefreshTaskActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.REFRESH_TASK);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.REFRESH_TASK, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -9,7 +9,7 @@ import { SelfServiceShopData, SelfServiceShopItem } from '../../domain/activityF
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
import moment = require('moment'); import moment = require('moment');
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -21,8 +21,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
* *
*/ */
export async function getSelfServiceShopActivityData(serverId: number, roleId: string) { export async function getSelfServiceShopActivityData(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.SELF_SERVICE_SHOP);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SELF_SERVICE_SHOP, new Date())
activityArray = activityArray.sort((a, b) => { activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId return b.activityId - a.activityId
}); });
@@ -7,7 +7,7 @@ import { SevenDaysData } from '../../domain/activityField/sevenDaysField';
import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from '../../db/ActivityDailyChallenges'; import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from '../../db/ActivityDailyChallenges';
import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts'; import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -19,8 +19,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
* *
*/ */
export async function sevenDaysActivity(serverId: number, roleId: string, type: number) { export async function sevenDaysActivity(serverId: number, roleId: string, type: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityDataArray = await getActivitiesByType(serverId, type);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date());
if (activityDataArray.length === 0) { if (activityDataArray.length === 0) {
return null; return null;
} }
@@ -6,7 +6,7 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { SignInData } from '../../domain/activityField/signInField'; import { SignInData } from '../../domain/activityField/signInField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
/** /**
* 获取活动数据 * 获取活动数据
@@ -18,8 +18,7 @@ import { getActivityById } from './activityService';
* *
*/ */
export async function signInActivity(serverId: number, roleId: string) { export async function signInActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.SIGN_IN);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SIGN_IN, new Date());
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -46,8 +45,7 @@ export async function signInActivity(serverId: number, roleId: string) {
* *
*/ */
export async function signInVIPActivity(serverId: number, roleId: string) { export async function signInVIPActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.SIGN_IN_VIP);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SIGN_IN_VIP, new Date());
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -76,9 +74,7 @@ export async function signInVIPActivity(serverId: number, roleId: string) {
* *
*/ */
export async function newPlayerSignInActivity(serverId: number, roleId: string) { export async function newPlayerSignInActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.NEW_PLAYER_SIGN_IN);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.NEW_PLAYER_SIGN_IN, new Date());
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -6,7 +6,7 @@ import { RoleModel } from '../../db/Role';
import moment = require('moment'); import moment = require('moment');
import { deltaDays } from '../../pubUtils/util'; import { deltaDays } from '../../pubUtils/util';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -19,8 +19,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
*/ */
export async function thirtyDaysActivity(type: number, serverId: number, roleId: string) { export async function thirtyDaysActivity(type: number, serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, type);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date())
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -12,7 +12,7 @@ import { deltaDays } from '../../pubUtils/util';
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
import { RewardParam } from '../../domain/activityField/rewardField'; import { RewardParam } from '../../domain/activityField/rewardField';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -225,11 +225,10 @@ export async function getTreasureHuntData(serverId: number, roleId: string) {
} }
async function getNewActivityData(serverId: number, roleId: string) { async function getNewActivityData(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let huntActivityId: number = 0; // 寻宝骑兵-活动Id let huntActivityId: number = 0; // 寻宝骑兵-活动Id
let huntEndTime: Date = null; // 寻宝骑兵-结束时间 let huntEndTime: Date = null; // 寻宝骑兵-结束时间
let huntRoundIndex: number = 0; // 寻宝骑兵-周期数 let huntRoundIndex: number = 0; // 寻宝骑兵-周期数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序 let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT);
let treasureHuntDataArray: TreasureHuntData[] = []; let treasureHuntDataArray: TreasureHuntData[] = [];
let createTime = await getRoleCreateTime(roleId); let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId); let serverTime = await getServerCreateTime(serverId);
@@ -259,11 +258,10 @@ async function getNewActivityData(serverId: number, roleId: string) {
} }
async function getNextActivityData(serverId: number, roleId: string, oldHuntActivityId: number, oldHuntEndTime: Date, oldHuntRoundIndex: number) { async function getNextActivityData(serverId: number, roleId: string, oldHuntActivityId: number, oldHuntEndTime: Date, oldHuntRoundIndex: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let huntActivityId: number = 0; // 寻宝骑兵-活动Id let huntActivityId: number = 0; // 寻宝骑兵-活动Id
let huntEndTime: Date = null; // 寻宝骑兵-结束时间 let huntEndTime: Date = null; // 寻宝骑兵-结束时间
let huntRoundIndex: number = oldHuntRoundIndex; // 寻宝骑兵-周期数 let huntRoundIndex: number = oldHuntRoundIndex; // 寻宝骑兵-周期数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序 let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT);
let treasureHuntDataArray: TreasureHuntData[] = []; let treasureHuntDataArray: TreasureHuntData[] = [];
let createTime = await getRoleCreateTime(roleId); let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId); let serverTime = await getServerCreateTime(serverId);
@@ -4,7 +4,7 @@ import { ActivityVipRechargeMoneyModel, ActivityVipRechargeMoneyModelType } from
import { VipRechargeMoneyData } from '../../domain/activityField/vipRechargeMoneyField'; import { VipRechargeMoneyData } from '../../domain/activityField/vipRechargeMoneyField';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
@@ -17,8 +17,7 @@ import { getRoleCreateTime, getServerCreateTime } from '../redisService';
*/ */
export async function vipRechargeMoneyActivity(serverId: number, roleId: string) { export async function vipRechargeMoneyActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.VIP_RECHARGE_MONEY);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.VIP_RECHARGE_MONEY, new Date())
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -65,8 +64,7 @@ export async function getPlayerVipRechargeMoneyData(activityId: number, serverId
* *
*/ */
export async function addVipRechargeMoney(roleId: string, serverId: number, RMB: number) { export async function addVipRechargeMoney(roleId: string, serverId: number, RMB: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.VIP_RECHARGE_MONEY);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.VIP_RECHARGE_MONEY, new Date())
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
@@ -6,7 +6,7 @@ import { UserOrderModel, UserOrderModelType } from '../../db/UserOrder';
import { RewardParam } from '../../domain/activityField/rewardField'; import { RewardParam } from '../../domain/activityField/rewardField';
import { YuanBaoShopData } from '../../domain/activityField/yuanBaoShopField'; import { YuanBaoShopData } from '../../domain/activityField/yuanBaoShopField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivitiesByType, getActivityById } from './activityService';
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
/** /**
@@ -19,8 +19,7 @@ import { addReward, stringToRewardParam } from './giftPackageService';
*/ */
export async function yuanbaoActivity(serverId: number, roleId: string) { export async function yuanbaoActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.YUAN_BAO_SHOP);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.YUAN_BAO_SHOP, -1)
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
+2 -2
View File
@@ -29,6 +29,7 @@ import { RefreshShopData } from "../domain/activityField/refreshShopField";
import { RoleType } from "../db/Role"; import { RoleType } from "../db/Role";
import { MonopolyData } from "../domain/activityField/monopolyField"; import { MonopolyData } from "../domain/activityField/monopolyField";
import { ActivityPopUpShopModel, ActivityPopUpShopModelType } from "../db/ActivityPopUpShop"; import { ActivityPopUpShopModel, ActivityPopUpShopModelType } from "../db/ActivityPopUpShop";
import { getActivitiesByType } from "./activity/activityService";
// —————————————— 跑马灯 —————————————— // // —————————————— 跑马灯 —————————————— //
// 初始 // 初始
@@ -319,8 +320,7 @@ export async function getParamStr(activity: ActivityModelType, productID: string
// param['beginTimeStamp'] = playerRecord.beginTime.getTime(); // param['beginTimeStamp'] = playerRecord.beginTime.getTime();
break; break;
case ACTIVITY_TYPE.REFRESH_SHOP: case ACTIVITY_TYPE.REFRESH_SHOP:
let { activityGroupId } = await ServerlistModel.findByServerId(role.serverId); let monopolyActivitys = await getActivitiesByType(role.serverId, ACTIVITY_TYPE.MONOPOLY);
let monopolyActivitys = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.MONOPOLY, 1);
let parentActivity = monopolyActivitys.find(activity => { let parentActivity = monopolyActivitys.find(activity => {
let data = new MonopolyData(activity, 0, 0); let data = new MonopolyData(activity, 0, 0);
let curShop = data.list.find(land => { // 找到关联活动 let curShop = data.list.find(land => { // 找到关联活动
+6 -3
View File
@@ -15,6 +15,7 @@ import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField';
import { ActivityTimeLimitRankModel } from '../db/ActivityTimeLimitRank'; import { ActivityTimeLimitRankModel } from '../db/ActivityTimeLimitRank';
import { RoleModel, RoleType } from '../db/Role'; import { RoleModel, RoleType } from '../db/Role';
import { GuildType } from '../db/Guild'; import { GuildType } from '../db/Guild';
import { ActivityGroupModel } from '../db/ActivityGroup';
/** /**
* 在服务重新启动时,将信息存入redis * 在服务重新启动时,将信息存入redis
@@ -47,9 +48,9 @@ export async function initAllRank() {
await setRankRedisFromDb(REDIS_KEY.PVP_RANK, {}); await setRankRedisFromDb(REDIS_KEY.PVP_RANK, {});
for(let {id, activityGroupId} of serverList) { for(let {id} of serverList) {
await initRank(id); await initRank(id);
await initActivitiesRank(id, activityGroupId) await initActivitiesRank(id)
} }
} }
@@ -74,8 +75,10 @@ export async function initRank(serverId: number) {
await setRankRedisFromDb(REDIS_KEY.HERO_RANK, { serverId }); await setRankRedisFromDb(REDIS_KEY.HERO_RANK, { serverId });
} }
export async function initActivitiesRank(serverId: number, activityGroupId: number[]) { export async function initActivitiesRank(serverId: number) {
let serverTime = await getServerCreateTime(serverId); let serverTime = await getServerCreateTime(serverId);
let activityGroup = await ActivityGroupModel.findByServerId(serverId);
let activityGroupId = activityGroup.map(cur => cur.groupId);
let activities = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TIME_LIMIT_RANK, new Date()); let activities = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TIME_LIMIT_RANK, new Date());
for(let activity of activities) { for(let activity of activities) {
let data = new TimeLimitRankData(activity, 0, serverTime); let data = new TimeLimitRankData(activity, 0, serverTime);
+58 -36
View File
@@ -34,6 +34,7 @@ import { ActivityModel, ActivityModelType } from '../db/Activity';
import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField'; import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField';
import { sendRankMail, takeSnapshot } from './activity/timeLimitRankService'; import { sendRankMail, takeSnapshot } from './activity/timeLimitRankService';
import { getActivitiesByType } from './activity/activityService'; import { getActivitiesByType } from './activity/activityService';
import { ActivityGroupModel } from '../db/ActivityGroup';
const PER_SECOND = 1 * 1000; const PER_SECOND = 1 * 1000;
const PER_DAY = 24 * 60 * 60; const PER_DAY = 24 * 60 * 60;
@@ -679,61 +680,82 @@ async function autoCreateServerSchedule(region: RegionType) {
// —————————————— 活动 start —————————————— // // —————————————— 活动 start —————————————— //
async function initTimeLimitRank() { async function initTimeLimitRank() {
let servers = await ServerlistModel.findByEnv(pinus.app.get('env')); let activities = await ActivityModel.findAllActivities();
for(let { serverId } of servers) { await updateTimeLimitRank(activities);
let serverTime = await getServerCreateTime(serverId);
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TIME_LIMIT_RANK);
for(let activity of activities) {
let data = new TimeLimitRankData(activity, 0, serverTime);
if(data.sendMailTime > Date.now()) {
await setSendRankMailSchedule(data, serverId);
}
if(data.rankEndTime > Date.now() && data.needSnapshot()) {
await setTakeRankSnapshotSchedule(data, serverId);
}
}
}
} }
export async function updateTimeLimitRank(activities: ActivityModelType[]) { export async function updateTimeLimitRank(activities: ActivityModelType[]) {
let servers = await ServerlistModel.findByEnv(pinus.app.get('env')); let sendMailDataMap = new Map<number, Map<number, { serverId: number, data: TimeLimitRankData}[]>>(); // activityId => sendTime => data
for(let { serverId, openTime } of servers) { let takeSnapDataMap = new Map<number, Map<number, { serverId: number, data: TimeLimitRankData}[]>>(); // activityId=>rankTime=>data
for(let activity of activities) { for(let activity of activities) {
let data = new TimeLimitRankData(activity, 0, openTime); let { activityId } = activity
if(data.sendMailTime > Date.now()) { let group = await ActivityGroupModel.findByActivity(activityId);
await setSendRankMailSchedule(data, serverId); for(let { serverIds } of group) {
} let servers = await ServerlistModel.findByServerIds(serverIds);
if(data.rankEndTime > Date.now() && data.needSnapshot()) { for(let { env, openTime, serverId } of servers) {
await setTakeRankSnapshotSchedule(data, serverId); if(env == pinus.app.get('env')) {
let data = new TimeLimitRankData(activity, 0, openTime);
if(data.sendMailTime > Date.now()) {
if(!sendMailDataMap.has(activityId)) {
sendMailDataMap.set(activityId, new Map());
}
if(!sendMailDataMap.get(activityId).has(data.sendMailTime)) {
sendMailDataMap.get(activityId).set(data.sendMailTime, []);
}
sendMailDataMap.get(activityId).get(data.sendMailTime).push({ serverId, data });
}
if(data.rankEndTime > Date.now() && data.needSnapshot()) {
if(!takeSnapDataMap.has(activityId)) {
takeSnapDataMap.set(activityId,new Map());
}
if(!takeSnapDataMap.get(activityId).has(data.rankEndTime)) {
takeSnapDataMap.get(activityId).set(data.rankEndTime, []);
}
takeSnapDataMap.get(activityId).get(data.rankEndTime).push({ serverId, data });
}
}
} }
} }
} }
for(let [activityId, map] of sendMailDataMap) {
for(let [sendMailTime, arr] of map) {
await setSendRankMailSchedule(sendMailTime, activityId, arr);
}
}
for(let [activityId, map] of takeSnapDataMap) {
for(let [rankEndTime, arr] of map) {
await setTakeRankSnapshotSchedule(rankEndTime, activityId, arr);
}
}
} }
async function setSendRankMailSchedule(data: TimeLimitRankData, serverId: number) { async function setSendRankMailSchedule(sendMailTime: number, activityId: number, arr: { serverId: number, data: TimeLimitRankData}[]) {
console.log('########### setSendRankMailSchedule1 ########') console.log('########### setSendRankMailSchedule1 ########', sendMailTime, activityId, arr.length)
if(scheduledJobs[`rankMail_${serverId}_${data.activityId}`]) { if(scheduledJobs[`rankMail_${sendMailTime}_${activityId}`]) {
scheduledJobs[`rankMail_${serverId}_${data.activityId}`].cancel(); scheduledJobs[`rankMail_${sendMailTime}_${activityId}`].cancel();
} }
scheduleJob(`rankMail_${serverId}_${data.activityId}`, data.sendMailTime, async () => { scheduleJob(`rankMail_${sendMailTime}_${activityId}`, sendMailTime, async () => {
console.log('########### setSendRankMailSchedule2 ########') console.log('########### setSendRankMailSchedule2 ########')
await sendRankMail(data, serverId); for(let { serverId, data } of arr) {
await sendRankMail(data, serverId);
}
}) })
} }
async function setTakeRankSnapshotSchedule(data: TimeLimitRankData, serverId: number) { async function setTakeRankSnapshotSchedule(rankEndTime: number, activityId: number, arr: { serverId: number, data: TimeLimitRankData}[]) {
console.log('########### setTakeRankSnapshotSchedule1 ########') console.log('########### setTakeRankSnapshotSchedule1 ########', rankEndTime, activityId, arr.length)
if(scheduledJobs[`snapshot${data.activityId}`]) { if(scheduledJobs[`snapshot_${rankEndTime}_${activityId}`]) {
scheduledJobs[`snapshot${data.activityId}`].cancel(); scheduledJobs[`snapshot_${rankEndTime}_${activityId}`].cancel();
} }
scheduleJob(`snapshot${data.activityId}`, data.rankEndTime, async () => { scheduleJob(`snapshot_${rankEndTime}_${activityId}`, rankEndTime, async () => {
console.log('########### setTakeRankSnapshotSchedule2 ########') console.log('########### setTakeRankSnapshotSchedule2 ########')
await takeSnapshot(data, serverId); for(let { serverId, data } of arr) {
await takeSnapshot(data, serverId);
}
}) })
} }
// —————————————— 活动 end —————————————— // // —————————————— 活动 end —————————————— //
+4
View File
@@ -41,6 +41,10 @@ export default class Activity_Group extends BaseModel {
return result; return result;
} }
public static async findByActivity(activityId: number) {
let result: ActivityGroupModelType[] = await ActivityGroupModel.find({ activities: activityId }).lean();
return result;
}
//查询组 //查询组
public static async findGroupsData(groupIds: number[]) { public static async findGroupsData(groupIds: number[]) {
let result: ActivityGroupModelType[] = await ActivityGroupModel.find({ groupId: { $in: groupIds } }).lean(); let result: ActivityGroupModelType[] = await ActivityGroupModel.find({ groupId: { $in: groupIds } }).lean();
+14 -14
View File
@@ -61,8 +61,8 @@ export default class Serverlist extends BaseModel {
@prop({ required: true, default: 1, enum: SERVER_STATUS }) @prop({ required: true, default: 1, enum: SERVER_STATUS })
serverStatus: number; // 服务器状态 serverStatus: number; // 服务器状态
@prop({ required: true, type: Number }) // @prop({ required: true, type: Number })
activityGroupId: number[]; // 活动组 // activityGroupId: number[]; // 活动组
public get status() { public get status() {
let now = nowSeconds(); let now = nowSeconds();
@@ -154,19 +154,19 @@ export default class Serverlist extends BaseModel {
return result; return result;
} }
public static async updateActivityGroup(id: string, pushArr: number[], pullArr: number[]) { // public static async updateActivityGroup(id: string, pushArr: number[], pullArr: number[]) {
// console.log(id, pushArr, pullArr) // // console.log(id, pushArr, pullArr)
let update = {}; // let update = {};
if(pushArr.length > 0) update['$push'] = { activityGroupId: { $each: pushArr } }; // if(pushArr.length > 0) update['$push'] = { activityGroupId: { $each: pushArr } };
if(pullArr.length > 0) update['$pull'] = { activityGroupId: { $in: pullArr } }; // if(pullArr.length > 0) update['$pull'] = { activityGroupId: { $in: pullArr } };
let result: ServerlistType[] = await ServerlistModel.findOneAndUpdate({ _id: id }, update).lean(); // let result: ServerlistType[] = await ServerlistModel.findOneAndUpdate({ _id: id }, update).lean();
return result; // return result;
} // }
public static async pullByGroupId(groupId: number) { // public static async pullByGroupId(groupId: number) {
let result = await ServerlistModel.updateMany({ activityGroupId: { $elemMatch: { $eq: groupId } }}, { $pull: { activityGroupId: groupId } }, { new: true }).lean(true); // let result = await ServerlistModel.updateMany({ activityGroupId: { $elemMatch: { $eq: groupId } }}, { $pull: { activityGroupId: groupId } }, { new: true }).lean(true);
return result; // return result;
} // }
public static async incRoleCnt(serverId: number) { 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 } });