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