diff --git a/game-server/app/servers/activity/handler/gachaHandler.ts b/game-server/app/servers/activity/handler/gachaHandler.ts index b16022965..24553e438 100644 --- a/game-server/app/servers/activity/handler/gachaHandler.ts +++ b/game-server/app/servers/activity/handler/gachaHandler.ts @@ -14,6 +14,7 @@ import { RECRUIT } from "../../../pubUtils/dicParam"; import { getActivityById } from "../../../services/activity/activityService"; import { checkTaskInGacha } from "../../../services/task/taskService"; import { createHeroes } from "../../../services/role/createHero"; +import { getRoleCreateTime, getServerCreateTime } from "../../../services/redisService"; export default function (app: Application) { new HandlerService(app, {}); @@ -247,8 +248,9 @@ export class GachaHandler { let activityData = await getActivityById(activityId); if (!activityData) return resResult(STATUS.ACTIVITY_MISSING); - let { createTime } = await RoleModel.findByRoleId(roleId); - let gachaData = new GachaData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let gachaData = new GachaData(activityData, createTime, serverTime); heroes = gachaData.heroes; if (!heroes.includes(pickHero)) { return resResult(STATUS.GACHA_CAN_NOT_PICK) diff --git a/game-server/app/servers/activity/handler/selfServiceShopHandler.ts b/game-server/app/servers/activity/handler/selfServiceShopHandler.ts index ced66c4fd..ca94b4677 100644 --- a/game-server/app/servers/activity/handler/selfServiceShopHandler.ts +++ b/game-server/app/servers/activity/handler/selfServiceShopHandler.ts @@ -12,6 +12,7 @@ import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../s import { random } from 'underscore'; import { RoleModel } from '../../../db/Role'; import { getActivityById } from '../../../services/activity/activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../../../services/redisService'; export default function (app: Application) { new HandlerService(app, {}); @@ -56,8 +57,9 @@ export class SelfServiceShopHandler { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SelfServiceShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SelfServiceShopData(activityData, createTime, serverTime); let item = playerData.getItem(index); if (item.countMax > 0) {//限制购买次数 @@ -116,8 +118,9 @@ export class SelfServiceShopHandler { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SelfServiceShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SelfServiceShopData(activityData, createTime, serverTime); let unitPrice = playerData.unitPrice;//购买价格 let unitCountMax = playerData.unitCountMax;//最大购买次数 let unitReward = playerData.unitReward;//购买获得资源 diff --git a/game-server/app/servers/activity/handler/thirtyDaysHandler.ts b/game-server/app/servers/activity/handler/thirtyDaysHandler.ts index c5c18ea16..60110789f 100644 --- a/game-server/app/servers/activity/handler/thirtyDaysHandler.ts +++ b/game-server/app/servers/activity/handler/thirtyDaysHandler.ts @@ -9,6 +9,8 @@ import { ActivityModel, ActivityModelType } from '../../../db/Activity'; import { ServerlistModel } from '../../../db/Serverlist'; import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService'; import { RewardParam } from '../../../domain/activityField/rewardField'; +import { getActivitiesByType } from '../../../services/activity/activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../../../services/redisService'; export default function (app: Application) { new HandlerService(app, {}); @@ -56,12 +58,13 @@ export class ThirtyDaysHandler { let todayIndex = await playerThirtyDaysActivityDays(roleId);//玩家当前的天数 - let { activityGroupId } = await ServerlistModel.findByServerId(serverId); - let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.THIRTY_DAYS, 1) + let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.THIRTY_DAYS); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); let activityDays = 0; for (let i = 0; i < activityArray.length; i++) { - let playerData = new ThirtyDaysData(activityArray[i], roleId); + let playerData = new ThirtyDaysData(activityArray[i], createTime, serverTime); if (playerData.activityId != activityId) { activityDays += playerData.days;//周期天数 } else { diff --git a/game-server/app/servers/activity/handler/timeLimitRankHandler.ts b/game-server/app/servers/activity/handler/timeLimitRankHandler.ts index 5b8b781fc..d53073431 100644 --- a/game-server/app/servers/activity/handler/timeLimitRankHandler.ts +++ b/game-server/app/servers/activity/handler/timeLimitRankHandler.ts @@ -6,7 +6,7 @@ import { getTimeLimitRankData, getTimeLimitRankDataShow, sendRankMail, takeSnaps import { getRankInHandler, Rank } from '../../../services/rankService'; import { getActivityById } from '../../../services/activity/activityService'; import { TimeLimitRankData } from '../../../domain/activityField/timeLimitRankField'; -import { hasKey } from '../../../services/redisService'; +import { getServerCreateTime, hasKey } from '../../../services/redisService'; import { KeyName } from '../../../domain/rank'; @@ -27,9 +27,10 @@ export class TimeLimitRankHandler { * @memberof TimeLimitRankHandler */ async getTimeLimitRankData(msg: { activityId: number }, session: BackendSession) { + const serverId = session.get('serverId'); const { activityId } = msg; - let playerData = await getTimeLimitRankDataShow(activityId); + let playerData = await getTimeLimitRankDataShow(activityId, serverId); if (!playerData) { return resResult(STATUS.ACTIVITY_MISSING); } @@ -48,7 +49,7 @@ export class TimeLimitRankHandler { const roleId = session.get('roleId'); const serverId = session.get('serverId'); - let playerData = await getTimeLimitRankData(activityId); + let playerData = await getTimeLimitRankData(activityId, serverId); if (!playerData) { return resResult(STATUS.ACTIVITY_MISSING); } @@ -72,23 +73,26 @@ export class TimeLimitRankHandler { async debugSendMail(msg: { magicWord: string, activityId: number }, session: BackendSession) { + let serverId = session.get('serverId'); const { magicWord, activityId } = msg; if (magicWord !== DEBUG_MAGIC_WORD) { return resResult(STATUS.TOKEN_ERR); } - let playerData = await getTimeLimitRankData(activityId); - await sendRankMail(playerData); + let playerData = await getTimeLimitRankData(activityId, serverId); + await sendRankMail(playerData, serverId); return resResult(STATUS.SUCCESS); } async debugTakeSnapshot(msg: { magicWord: string, activityId: number }, session: BackendSession) { + let serverId = session.get('serverId'); + const { magicWord, activityId } = msg; if (magicWord !== DEBUG_MAGIC_WORD) { return resResult(STATUS.TOKEN_ERR); } let activityData = await getActivityById(activityId); - - let playerData = new TimeLimitRankData(activityData, 0); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TimeLimitRankData(activityData, 0, serverTime); if(!playerData.needSnapshot) return resResult(STATUS.WRONG_PARMS); await takeSnapshot(playerData, activityData.groupId); return resResult(STATUS.SUCCESS); diff --git a/game-server/app/services/activity/activityService.ts b/game-server/app/services/activity/activityService.ts index 4385e5078..a3755b844 100644 --- a/game-server/app/services/activity/activityService.ts +++ b/game-server/app/services/activity/activityService.ts @@ -200,7 +200,7 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s } case ACTIVITY_TYPE.TIME_LIMIT_RANK: // 限时排行 { - activityData = await getTimeLimitRankDataShow(activityId); + activityData = await getTimeLimitRankDataShow(activityId, serverId); break; } case ACTIVITY_TYPE.TASK_PASS: // 限时排行 @@ -323,7 +323,7 @@ export async function checkActivityEditable(activities: ActivityModelType[]) { if(activity.type == ACTIVITY_TYPE.SIGN_IN || activity.type == ACTIVITY_TYPE.SIGN_IN_VIP) { // 签到活动的不显示期内也可以编辑 - let signInObj = new SignInData(activity, 0); + let signInObj = new SignInData(activity, 0, 0); if(signInObj.beginTime < now.getTime() && signInObj.endTime > now.getTime() ) { return false; } diff --git a/game-server/app/services/activity/dailyChallengesService.ts b/game-server/app/services/activity/dailyChallengesService.ts index 1a3408f71..5d0bdd3e3 100644 --- a/game-server/app/services/activity/dailyChallengesService.ts +++ b/game-server/app/services/activity/dailyChallengesService.ts @@ -4,6 +4,7 @@ import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from ' 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'; @@ -23,8 +24,10 @@ export async function dailyChallengesActivity(serverId: number, roleId: string) } let activityData: ActivityModelType = activityDataArray[0]; let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyChallengesData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyChallengesData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); return playerData; } @@ -41,8 +44,10 @@ export async function dailyChallengesActivity(serverId: number, roleId: string) export async function getPlayerDailyChallengesData(activityId: number, serverId: number, roleId: string) { let activityData: ActivityModelType = await getActivityById(activityId); let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyChallengesData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyChallengesData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); return playerData; diff --git a/game-server/app/services/activity/dailyCoinService.ts b/game-server/app/services/activity/dailyCoinService.ts index f74f676f8..67f8414b5 100644 --- a/game-server/app/services/activity/dailyCoinService.ts +++ b/game-server/app/services/activity/dailyCoinService.ts @@ -4,6 +4,7 @@ import { ActivityDailyCoinModel, ActivityDailyCoinModelType } from '../../db/Act 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'; @@ -22,8 +23,9 @@ export async function dailyCoinActivity(serverId: number, roleId: string) { return null; } let activityData: ActivityModelType = activityDataArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyCoinData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyCoinData(activityData, createTime, serverTime); let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex); playerData.setPlayerRecords(playerRecord); @@ -41,8 +43,9 @@ export async function dailyCoinActivity(serverId: number, roleId: string) { */ export async function getPlayerDailyCoinData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyCoinData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyCoinData(activityData, createTime, serverTime); let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex); playerData.setPlayerRecords(playerRecord); diff --git a/game-server/app/services/activity/dailyGKService.ts b/game-server/app/services/activity/dailyGKService.ts index eacbef138..404eae40c 100644 --- a/game-server/app/services/activity/dailyGKService.ts +++ b/game-server/app/services/activity/dailyGKService.ts @@ -4,6 +4,7 @@ import { ActivityDailyGKModel, ActivityDailyGKModelType } from '../../db/Activit 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'; @@ -23,8 +24,9 @@ export async function dailyGKActivity(serverId: number, roleId: string) { } let activityData: ActivityModelType = activityDataArray[0]; let playerRecord: ActivityDailyGKModelType = await ActivityDailyGKModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyGKData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyGKData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -41,8 +43,9 @@ export async function dailyGKActivity(serverId: number, roleId: string) { export async function getPlayerDailyGKData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); let playerRecord: ActivityDailyGKModelType = await ActivityDailyGKModel.findData(serverId, activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyGKData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyGKData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; @@ -58,8 +61,9 @@ export async function getPlayerDailyGKData(activityId: number, serverId: number, export async function challengeDailyGK(serverId: number, roleId: string, activityId: number, gk: number) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyGKData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyGKData(activityData, createTime, serverTime); let item = playerData.findItemByGK(gk); if (item) { let dayIndex = item.dayIndex; diff --git a/game-server/app/services/activity/dailyGiftsService.ts b/game-server/app/services/activity/dailyGiftsService.ts index be22a5d71..bf9dfa381 100644 --- a/game-server/app/services/activity/dailyGiftsService.ts +++ b/game-server/app/services/activity/dailyGiftsService.ts @@ -4,6 +4,7 @@ import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/A 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'; @@ -24,8 +25,9 @@ export async function dailyGiftsActivity(serverId: number, roleId: string) { } let activityData: ActivityModelType = activityDataArray[0]; let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyGiftsData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyGiftsData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); return playerData; } @@ -42,8 +44,9 @@ export async function dailyGiftsActivity(serverId: number, roleId: string) { export async function getPlayerDailyGiftsData(activityId: number, serverId: number, roleId: string) { let activityData: ActivityModelType = await getActivityById(activityId); let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyGiftsData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyGiftsData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); return playerData; diff --git a/game-server/app/services/activity/dailyMealService.ts b/game-server/app/services/activity/dailyMealService.ts index d134f9f11..50130e114 100644 --- a/game-server/app/services/activity/dailyMealService.ts +++ b/game-server/app/services/activity/dailyMealService.ts @@ -4,6 +4,7 @@ import { ActivityDailyMealModel, ActivityDailyMealModelType } from '../../db/Act 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'; @@ -22,8 +23,9 @@ export async function dailyMealActivity(serverId: number, roleId: string) { return null; } let activityData: ActivityModelType = activityDataArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyMealData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyMealData(activityData, createTime, serverTime); let playerLunchRecords: ActivityDailyMealModelType[] = await ActivityDailyMealModel.findData(serverId, activityData.activityId, roleId, DAILY_MEAL_TYPE.LUNCH, playerData.roundIndex); let playerDinnerRecords: ActivityDailyMealModelType[] = await ActivityDailyMealModel.findData(serverId, activityData.activityId, roleId, DAILY_MEAL_TYPE.DINNER, playerData.roundIndex); @@ -42,8 +44,9 @@ export async function dailyMealActivity(serverId: number, roleId: string) { */ export async function getPlayerDailyMealData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyMealData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyMealData(activityData, createTime, serverTime); let playerLunchRecords: ActivityDailyMealModelType[] = await ActivityDailyMealModel.findData(serverId, activityData.activityId, roleId, DAILY_MEAL_TYPE.LUNCH, playerData.roundIndex); let playerDinnerRecords: ActivityDailyMealModelType[] = await ActivityDailyMealModel.findData(serverId, activityData.activityId, roleId, DAILY_MEAL_TYPE.DINNER, playerData.roundIndex); diff --git a/game-server/app/services/activity/dailyRMBGiftsService.ts b/game-server/app/services/activity/dailyRMBGiftsService.ts index 164b8a2ce..929de8462 100644 --- a/game-server/app/services/activity/dailyRMBGiftsService.ts +++ b/game-server/app/services/activity/dailyRMBGiftsService.ts @@ -8,6 +8,7 @@ import { addReward, stringToRewardParam } from './giftPackageService'; import { ServerlistModel } from '../../db/Serverlist'; import { RoleModel } from '../../db/Role'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -40,8 +41,9 @@ export async function dailyRMBGiftsActivity(serverId: number, roleId: string) { */ export async function getPlayerDailyRMBGiftsData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyRMBGiftsData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime); // let productID = playerData.productID; // let playerOrders: UserOrderModelType[] = await UserOrderModel.findPlayerOrder(productID, roleId, activityId, 1); // let buyTime = moment(new Date()).startOf('d').toDate() @@ -74,8 +76,9 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string, code: STATUS.ACTIVITY_TYPE_ERROR, } } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new DailyRMBGiftsData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime); let bigGiftProductID = playerData.productID; if (bigGiftProductID == productID) {//一次性购买7天礼包 let playerRecord: ActivityDailyRMBGiftsModelType = await ActivityDailyRMBGiftsModel.findRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex); diff --git a/game-server/app/services/activity/firstGiftService.ts b/game-server/app/services/activity/firstGiftService.ts index 5e251ce13..2877d746d 100644 --- a/game-server/app/services/activity/firstGiftService.ts +++ b/game-server/app/services/activity/firstGiftService.ts @@ -4,7 +4,8 @@ import { ActivityFirstGiftModel, ActivityFirstGiftModelType } from '../../db/Act import { RoleModel, RoleType } from '../../db/Role'; import { ServerlistModel } from '../../db/Serverlist'; import { FirstGiftData } from '../../domain/activityField/firstGiftField'; -import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; +import { getActivitiesByType, getActivityById } from './activityService'; // /** // * 获取活动数据 @@ -46,8 +47,9 @@ export async function getPlayerFirstGiftData(activityId: number, serverId: numbe let activityData = await getActivityById(activityId); let playerRecord = await ActivityFirstGiftModel.findData(activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new FirstGiftData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new FirstGiftData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -73,10 +75,10 @@ export async function getPlayerFirstGiftDataShow(activityId: number, serverId: n * @param {number} serverId 区id */ export async function recordFirstGift(role: RoleType, serverId: number) { - let { activityGroupId } = await ServerlistModel.findByServerId(serverId); - let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.FIRST_GIFT, new Date()) - for (let obj of activityArray) { - let playerData = new FirstGiftData(obj, role.createTime); + let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.FIRST_GIFT); + let serverTime = await getServerCreateTime(serverId); + for (let obj of activities) { + let playerData = new FirstGiftData(obj, role.createTime, serverTime); for(let { pageIndex, targetMoney } of playerData.list) { if(role.totalPay >= targetMoney) { await ActivityFirstGiftModel.begin(obj.activityId, role.roleId, pageIndex ); diff --git a/game-server/app/services/activity/gachaService.ts b/game-server/app/services/activity/gachaService.ts index 12982b75d..c1394c110 100644 --- a/game-server/app/services/activity/gachaService.ts +++ b/game-server/app/services/activity/gachaService.ts @@ -12,6 +12,7 @@ import { HeroType } from "../../db/Hero"; import { NewHeroGachaItem } from "../../domain/activityField/newHeroGachaField"; import { getActivityById } from "./activityService"; import { transPiece } from "../role/util"; +import { getRoleCreateTime, getServerCreateTime } from "../redisService"; /** * 获取招募列表 @@ -43,8 +44,9 @@ export async function getLimitGacha(serverId: number, roleId: string, activityId let activityData = await getActivityById(activityId); if (!activityData) return false; - let { createTime } = await RoleModel.findByRoleId(roleId); - let gachaData = new GachaData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let gachaData = new GachaData(activityData, createTime, serverTime); let userGacha = await UserGachaModel.findByRole(roleId, gachaData.gachaId, activityId); userGacha = await refreshGacha(gameData.gacha.get(gachaData.gachaId), userGacha); gachaData.setUserGacha(userGacha); diff --git a/game-server/app/services/activity/growthFundService.ts b/game-server/app/services/activity/growthFundService.ts index 35c6a843a..5d95c4502 100644 --- a/game-server/app/services/activity/growthFundService.ts +++ b/game-server/app/services/activity/growthFundService.ts @@ -6,6 +6,7 @@ import { RoleModel } from '../../db/Role'; import { GrowthFundData } from '../../domain/activityField/growthFundField'; import { ServerlistModel } from '../../db/Serverlist'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -49,8 +50,9 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb let activityData = await getActivityById(activityId); let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new GrowthFundData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new GrowthFundData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); if (playerData.isVipActivity()) {//vip高阶需要购买 let buyRecords = await ActivityBuyRecordsModel.findRecordsByActivityId(activityData.activityId, roleId); @@ -134,8 +136,9 @@ export async function makeGrowthFund(roleId: string, roleName: string, sid: stri if (activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP && activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP && activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP) { return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new GrowthFundData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new GrowthFundData(activityData, createTime, serverTime); let pageData = playerData.findPageByProductID(productID); let pageIndex = pageData.pageIndex; await ActivityBuyRecordsModel.addRecord(activityId, roleId, activityData.type, pageIndex, true); diff --git a/game-server/app/services/activity/growthService.ts b/game-server/app/services/activity/growthService.ts index 7f46fb8c7..1ce5fbf3a 100644 --- a/game-server/app/services/activity/growthService.ts +++ b/game-server/app/services/activity/growthService.ts @@ -6,6 +6,7 @@ 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'; /** @@ -27,8 +28,9 @@ export async function growthActivity(serverId: number, roleId: string) { let playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityData.activityId, roleId); let userHeroes = await HeroModel.findByRole(roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new GrowthData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new GrowthData(activityData, createTime, serverTime); await playerData.setPlayerRecords(playerRecords, roleId, userHeroes); playerData.setPlayerPointRecord(playerPointRecord); return playerData; @@ -49,8 +51,9 @@ export async function getPlayerGrowthData(activityId: number, serverId: number, let userHeroes = await HeroModel.findByRole(roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new GrowthData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new GrowthData(activityData, createTime, serverTime); await playerData.setPlayerRecords(playerRecords, roleId, userHeroes); playerData.setPlayerPointRecord(playerPointRecord); return playerData; diff --git a/game-server/app/services/activity/guildPayService.ts b/game-server/app/services/activity/guildPayService.ts index a80a9e00f..8fb6fdcf7 100644 --- a/game-server/app/services/activity/guildPayService.ts +++ b/game-server/app/services/activity/guildPayService.ts @@ -5,6 +5,7 @@ import { GuildPayData } from "../../domain/activityField/guildPay"; import { getActivitiesByType, getActivityById, pushActivities, pushActivitiesToGuild, pushActivityInter } from "./activityService"; import { ServerlistModel } from '../../db/Serverlist'; import { ActivityGuildPayRecordModel } from "../../db/ActivityGuildPayRecord"; +import { getServerCreateTime } from "../redisService"; /** @@ -17,9 +18,8 @@ import { ActivityGuildPayRecordModel } from "../../db/ActivityGuildPayRecord"; */ export async function getGuildPayData(serverId: number, activityId: number, roleId: string, guildCode: string) { let activityData = await getActivityById(activityId); - let { openTime } = await ServerlistModel.findByServerId(serverId); - - let playerData = new GuildPayData(activityData, 0, openTime * 1000); + let serverTime = await getServerCreateTime(serverId); + let playerData = new GuildPayData(activityData, 0, serverTime); let receiveRecord = await ActivityGuildPayRecordModel.findData(serverId, activityId, playerData.roundIndex, roleId); playerData.setReceiveRecord(receiveRecord); if(guildCode) { diff --git a/game-server/app/services/activity/limitPackageService.ts b/game-server/app/services/activity/limitPackageService.ts index d9c867423..a42cd4f3c 100644 --- a/game-server/app/services/activity/limitPackageService.ts +++ b/game-server/app/services/activity/limitPackageService.ts @@ -6,7 +6,8 @@ import { RoleModel } from '../../db/Role'; import { ServerlistModel } from '../../db/Serverlist'; import { LimitShopData } from '../../domain/activityField/limitShopField'; import { deltaDays } from '../../pubUtils/util'; -import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; +import { getActivitiesByType, getActivityById } from './activityService'; import { addReward, stringToRewardParam } from './giftPackageService'; /** @@ -19,14 +20,14 @@ import { addReward, stringToRewardParam } from './giftPackageService'; */ export async function newPlayerLimitPackageActivity(serverId: number, roleId: string) { - let { activityGroupId } = await ServerlistModel.findByServerId(serverId); - let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, new Date) - if (activityArray.length == 0) { + let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE); + if (activities.length == 0) { return null; } - let activityData = activityArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new LimitShopData(activityData, createTime); + let activityData = activities[0]; + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new LimitShopData(activityData, createTime, serverTime); let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityData.activityId, roleId, playerData.roundIndex); playerData.setPlayerRecords(playerRecord); @@ -43,8 +44,9 @@ export async function newPlayerLimitPackageActivity(serverId: number, roleId: st */ export async function getPlayerLimitPackageData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new LimitShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new LimitShopData(activityData, createTime, serverTime); let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityId, roleId, playerData.roundIndex); playerData.setPlayerRecords(playerRecord); @@ -113,8 +115,9 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s activityData.type !== ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY) { return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new LimitShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new LimitShopData(activityData, createTime, serverTime); let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityData.activityId, roleId, playerData.roundIndex); playerData.setPlayerRecords(playerRecord); diff --git a/game-server/app/services/activity/luckyTurntableService.ts b/game-server/app/services/activity/luckyTurntableService.ts index fba5f8c8d..ec9831139 100644 --- a/game-server/app/services/activity/luckyTurntableService.ts +++ b/game-server/app/services/activity/luckyTurntableService.ts @@ -2,6 +2,7 @@ import { ActivityTurntableModel } from "../../db/ActivityTurntableRec"; import { RoleModel } from "../../db/Role"; import { LuckyTurntableData } from "../../domain/activityField/luckyTurntableField"; import { shouldRefresh } from "../../pubUtils/util"; +import { getRoleCreateTime, getServerCreateTime } from "../redisService"; import { getActivityById } from "./activityService"; /** @@ -19,8 +20,9 @@ import { getActivityById } from "./activityService"; playerRecord = await ActivityTurntableModel.refreshTodayCount(serverId, activityId, roleId); } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new LuckyTurntableData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new LuckyTurntableData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } diff --git a/game-server/app/services/activity/monopolyService.ts b/game-server/app/services/activity/monopolyService.ts index 905892918..c8ab4eb62 100644 --- a/game-server/app/services/activity/monopolyService.ts +++ b/game-server/app/services/activity/monopolyService.ts @@ -5,6 +5,7 @@ import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../../ 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'; @@ -25,8 +26,10 @@ export async function getMonopolyActivity(serverId: number, roleId: string) { let activityData: ActivityModelType = activityDataArray[0]; let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityData.activityId, roleId); let playerLandData: ActivityMonopolyLandModelType[] = await ActivityMonopolyLandModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new MonopolyData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new MonopolyData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerMonopolyData, playerLandData); return playerData; } @@ -47,8 +50,9 @@ export async function getPlayerMonopolyData(activityId: number, serverId: number } let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityData.activityId, roleId); let playerLandData: ActivityMonopolyLandModelType[] = await ActivityMonopolyLandModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new MonopolyData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new MonopolyData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerMonopolyData, playerLandData); return playerData; } diff --git a/game-server/app/services/activity/monthlyTicketService.ts b/game-server/app/services/activity/monthlyTicketService.ts index a4140ffb7..e3a16faab 100644 --- a/game-server/app/services/activity/monthlyTicketService.ts +++ b/game-server/app/services/activity/monthlyTicketService.ts @@ -14,6 +14,7 @@ import { DUNGEON_CONST, PVP, VIP } from '../../pubUtils/dicParam'; import { cal } from '../../pubUtils/util'; import { pinus } from 'pinus'; import { getGoldId } from '../role/rewardService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -35,8 +36,9 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty } let activityData = activityArray[0]; let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new MonthlyTicketData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new MonthlyTicketData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); if ((playerData.price > 0 && playerData.isOpen) || playerData.price === 0) { @@ -64,8 +66,9 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty export async function getPlayerMonthlyTicketData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new MonthlyTicketData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new MonthlyTicketData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -81,8 +84,9 @@ export async function getPlayerMonthlyTicketData(activityId: number, serverId: n export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName: string, sid: string, serverId: number, activityId: number,) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new MonthlyTicketData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new MonthlyTicketData(activityData, createTime, serverTime); let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId); if (playerData.price > 0 && !playerRecord) {//没有购买过 @@ -117,8 +121,9 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string, return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new MonthlyTicketData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new MonthlyTicketData(activityData, createTime, serverTime); let endTime = playerData.isForever? moment(playerData.endTime).toDate(): moment(new Date()).startOf('d').add(playerData.days, 'day').toDate(); console.log('endTime', playerData.isForever, moment(new Date()).startOf('d'), endTime, playerData.days) diff --git a/game-server/app/services/activity/newHeroGKService.ts b/game-server/app/services/activity/newHeroGKService.ts index 8e75da3d0..7f3f4bc3f 100644 --- a/game-server/app/services/activity/newHeroGKService.ts +++ b/game-server/app/services/activity/newHeroGKService.ts @@ -4,6 +4,7 @@ import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/Act 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'; @@ -23,8 +24,10 @@ export async function newHeroGKActivity(serverId: number, roleId: string) { } let activityData: ActivityModelType = activityDataArray[0]; let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new NewHeroGKData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGKData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -42,8 +45,9 @@ export async function getPlayerNewHeroGKData(activityId: number, serverId: numbe let activityData = await getActivityById(activityId); let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new NewHeroGKData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGKData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; @@ -61,8 +65,10 @@ export async function challengeNewHeroGK(serverId: number, roleId: string, activ let activityData: ActivityModelType = await getActivityById(activityId); let playerRecords = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId); let records = playerRecords && playerRecords.records ? playerRecords.records : []; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new NewHeroGKData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGKData(activityData, createTime, serverTime); let item = playerData.findItemByGK(pageIndex, gk); if (item) { let index = item.index; diff --git a/game-server/app/services/activity/newHeroGachaService.ts b/game-server/app/services/activity/newHeroGachaService.ts index 11fa75670..a15387ef3 100644 --- a/game-server/app/services/activity/newHeroGachaService.ts +++ b/game-server/app/services/activity/newHeroGachaService.ts @@ -4,6 +4,7 @@ import { ActivityNewHeroGachaModel, ActivityNewHeroGachaModelType } from '../../ 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'; @@ -23,8 +24,9 @@ export async function newHeroGachaActivity(serverId: number, roleId: string) { } let activityData: ActivityModelType = activityDataArray[0]; let playerRecord: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findData(serverId, activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new NewHeroGachaData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGachaData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -42,8 +44,9 @@ export async function getPlayerNewHeroGachaData(activityId: number, serverId: nu let activityData = await getActivityById(activityId); let playerRecord: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findData(serverId, activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new NewHeroGachaData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGachaData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; diff --git a/game-server/app/services/activity/newHeroGiftsService.ts b/game-server/app/services/activity/newHeroGiftsService.ts index f9c227676..4c08a1a89 100644 --- a/game-server/app/services/activity/newHeroGiftsService.ts +++ b/game-server/app/services/activity/newHeroGiftsService.ts @@ -5,6 +5,7 @@ import { NewHeroGiftData } from '../../domain/activityField/newHeroGiftField'; import { ServerlistModel } from '../../db/Serverlist'; import { RoleModel } from '../../db/Role'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -38,8 +39,9 @@ export async function getNewHeroGiftsActivity(serverId: number, roleId: string) export async function getPlayerNewHeroGiftsData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new NewHeroGiftData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGiftData(activityData, createTime, serverTime); let playerRecord: ActivityNewHeroGiftModelType = await ActivityNewHeroGiftModel.findData(serverId, activityId, roleId); playerData.setPlayerRecords(playerRecord); return playerData; diff --git a/game-server/app/services/activity/rechargeMoneyService.ts b/game-server/app/services/activity/rechargeMoneyService.ts index 2d99abff6..ffe76b70e 100644 --- a/game-server/app/services/activity/rechargeMoneyService.ts +++ b/game-server/app/services/activity/rechargeMoneyService.ts @@ -4,7 +4,7 @@ import moment = require('moment'); import { RoleModel } from '../../db/Role'; import { getActivitiesByType, getActivityById, pushActivities, pushActivityInter } from './activityService'; import { ACTIVITY_TYPE } from '../../consts'; -import { getRoleOnlineInfo } from '../redisService'; +import { getRoleCreateTime, getRoleOnlineInfo, getServerCreateTime } from '../redisService'; /** * 玩家活动数据 @@ -16,8 +16,9 @@ import { getRoleOnlineInfo } from '../redisService'; */ export async function getPlayerRechargeMoneyData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RechargeMoneyData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RechargeMoneyData(activityData, createTime, serverTime); let beginTime = moment(playerData.beginTime).startOf('d').toDate(); let endTime = moment(new Date()).endOf('d').toDate(); let playerRecord: ActivityRechargeMoneyModelType[] = await ActivityRechargeMoneyModel.findDataByTime(serverId, roleId, beginTime, endTime); diff --git a/game-server/app/services/activity/refreshShopService.ts b/game-server/app/services/activity/refreshShopService.ts index 17b6db1f0..ab9e29392 100644 --- a/game-server/app/services/activity/refreshShopService.ts +++ b/game-server/app/services/activity/refreshShopService.ts @@ -6,7 +6,8 @@ import { RoleModel } from '../../db/Role'; import { ServerlistModel } from '../../db/Serverlist'; import { RefreshShopData } from '../../domain/activityField/refreshShopField'; import { deltaDays } from '../../pubUtils/util'; -import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; +import { getActivitiesByType, getActivityById } from './activityService'; import { addReward, stringToRewardParam } from './giftPackageService'; /** @@ -19,14 +20,14 @@ import { addReward, stringToRewardParam } from './giftPackageService'; */ export async function getRefreshShopActivity(serverId: number, roleId: string) { - let { activityGroupId } = await ServerlistModel.findByServerId(serverId); - let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.REFRESH_SHOP, new Date) + let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.REFRESH_SHOP); if (activityArray.length == 0) { return null; } let activityData = activityArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RefreshShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RefreshShopData(activityData, createTime, serverTime); let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityData.activityId, roleId, playerData.roundIndex); if (!playerRecord) {//生成商店可购买商品的数据 @@ -48,13 +49,14 @@ export async function getRefreshShopActivity(serverId: number, roleId: string) { */ export async function getPlayerRefreshShopData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RefreshShopData(activityData, createTime); + let role = await RoleModel.findByRoleId(roleId, 'lv createTime'); + let createTime = await getRoleCreateTime(roleId, role); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RefreshShopData(activityData, createTime, serverTime); let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityId, roleId, playerData.roundIndex); if (!playerRecord) {//生成商店可购买商品的数据 - let { lv } = await RoleModel.findByRoleId(roleId); - let randomGoods = playerData.randomGoodsItems(lv); + let randomGoods = playerData.randomGoodsItems(role.lv); playerRecord = await ActivityRefreshShopModel.createShop(activityData.activityId, roleId, playerData.roundIndex, randomGoods); } playerData.setPlayerRecords(playerRecord); @@ -71,13 +73,14 @@ export async function getPlayerRefreshShopData(activityId: number, serverId: num */ export async function getPlayerRefreshShopDataByRoundIndex(activityId: number, serverId: number, roleId: string, roundIndex: number) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RefreshShopData(activityData, createTime); + let role = await RoleModel.findByRoleId(roleId, 'lv createTime'); + let createTime = await getRoleCreateTime(roleId, role); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RefreshShopData(activityData, createTime, serverTime); playerData.roundIndex = roundIndex; let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityId, roleId, playerData.roundIndex); if (!playerRecord) {//生成商店可购买商品的数据 - let { lv } = await RoleModel.findByRoleId(roleId); - let randomGoods = playerData.randomGoodsItems(lv); + let randomGoods = playerData.randomGoodsItems(role.lv); playerRecord = await ActivityRefreshShopModel.createShop(activityData.activityId, roleId, playerData.roundIndex, randomGoods); } playerData.setPlayerRecords(playerRecord); @@ -121,8 +124,9 @@ export async function makeRefreshShopReward(roleId: string, roleName: string, si if (activityData.type !== ACTIVITY_TYPE.REFRESH_SHOP) { return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RefreshShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RefreshShopData(activityData, createTime, serverTime); if (roundIndex) { playerData.roundIndex = roundIndex; } diff --git a/game-server/app/services/activity/refreshTaskService.ts b/game-server/app/services/activity/refreshTaskService.ts index 2d04c49c2..75307a8ab 100644 --- a/game-server/app/services/activity/refreshTaskService.ts +++ b/game-server/app/services/activity/refreshTaskService.ts @@ -5,6 +5,7 @@ import { ActivityRefreshTaskPointModel, ActivityRefreshTaskPointModelType } from 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'; @@ -23,8 +24,9 @@ export async function getRefreshTaskActivity(serverId: number, roleId: string) { return null; } let activityData: ActivityModelType = activityDataArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RefreshTaskData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RefreshTaskData(activityData, createTime, serverTime); let playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex); let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityData.activityId, roleId); playerData.setPlayerRecords(playerRecords, pointRecordData); @@ -42,8 +44,9 @@ export async function getRefreshTaskActivity(serverId: number, roleId: string) { */ export async function getPlayerRefreshTaskData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new RefreshTaskData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new RefreshTaskData(activityData, createTime, serverTime); let playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityId, roleId, playerData.roundIndex); let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityId, roleId); playerData.setPlayerRecords(playerRecords, pointRecordData); diff --git a/game-server/app/services/activity/selfServiceShopActivityService.ts b/game-server/app/services/activity/selfServiceShopActivityService.ts index a8bbf4a5f..0ffb717ba 100644 --- a/game-server/app/services/activity/selfServiceShopActivityService.ts +++ b/game-server/app/services/activity/selfServiceShopActivityService.ts @@ -10,6 +10,7 @@ import { addReward, stringToRewardParam } from './giftPackageService'; import moment = require('moment'); import { RoleModel } from '../../db/Role'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -43,8 +44,9 @@ export async function getSelfServiceShopActivityData(serverId: number, roleId: s */ export async function getPlayerActivityData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SelfServiceShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SelfServiceShopData(activityData, createTime, serverTime); let playerRecords: ActivitySelfServiceShopModelType[] = await ActivitySelfServiceShopModel.findDataByPriceType(serverId, activityId, roleId, playerData.roundIndex); @@ -127,8 +129,9 @@ export async function makeSelfServerShop(roleId: string, roleName: string, sid: code: STATUS.ACTIVITY_MISSING, } } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SelfServiceShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SelfServiceShopData(activityData, createTime, serverTime); let item: SelfServiceShopItem = playerData.getItemByProductID(productID); if (!item) { return { diff --git a/game-server/app/services/activity/sevenDaysService.ts b/game-server/app/services/activity/sevenDaysService.ts index 9e99c78d7..0b027472d 100644 --- a/game-server/app/services/activity/sevenDaysService.ts +++ b/game-server/app/services/activity/sevenDaysService.ts @@ -8,6 +8,7 @@ import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from ' import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts'; import { RoleModel } from '../../db/Role'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -52,8 +53,9 @@ export async function sevenDaysActivity(serverId: number, roleId: string, type: */ export async function getPlayerSevenDaysData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SevenDaysData(activityData, createTime) + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SevenDaysData(activityData, createTime, serverTime); //成长数据 let playerGrowthRecords: ActivityGrowthModelType[] = await ActivityGrowthModel.findData(serverId, activityId, roleId); let playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityId, roleId); diff --git a/game-server/app/services/activity/signInService.ts b/game-server/app/services/activity/signInService.ts index 437528cb5..fb670aca6 100644 --- a/game-server/app/services/activity/signInService.ts +++ b/game-server/app/services/activity/signInService.ts @@ -5,6 +5,7 @@ import { ActivitySignInModel, ActivitySignInModelType } from '../../db/ActivityS 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'; /** @@ -23,8 +24,9 @@ export async function signInActivity(serverId: number, roleId: string) { return null; } let activityData = activityArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SignInData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SignInData(activityData, createTime, serverTime); let curDate = moment(new Date()).valueOf(); if (curDate < playerData.beginTime || curDate > playerData.endTime) {//未开启 return null; @@ -50,8 +52,9 @@ export async function signInVIPActivity(serverId: number, roleId: string) { return null; } let activityData = activityArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SignInData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SignInData(activityData, createTime, serverTime); let curDate = moment(new Date()).valueOf(); if (curDate < playerData.beginTime || curDate > playerData.endTime) {//未开启 @@ -80,8 +83,9 @@ export async function newPlayerSignInActivity(serverId: number, roleId: string) return null; } let activityData = activityArray[0]; - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SignInData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SignInData(activityData, createTime, serverTime); let betinTime = null; let endTime = null @@ -122,8 +126,10 @@ export async function getPlayerSignInData(activityId: number, serverId: number, && activityData.type !== ACTIVITY_TYPE.COMMON_SIGN_IN) { return null; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SignInData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + + let playerData = new SignInData(activityData, createTime, serverTime); let playerRecords: ActivitySignInModelType = await ActivitySignInModel.findData(activityId, roleId, playerData.roundIndex); playerData.setPlayerRecords(playerRecords); @@ -159,8 +165,9 @@ export async function makeSignInVIP(roleId: string, roleName: string, sid: strin if (activityData.type !== ACTIVITY_TYPE.SIGN_IN_VIP) { return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new SignInData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new SignInData(activityData, createTime, serverTime); await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex); diff --git a/game-server/app/services/activity/taskPassService.ts b/game-server/app/services/activity/taskPassService.ts index 4dd209968..5996235b3 100644 --- a/game-server/app/services/activity/taskPassService.ts +++ b/game-server/app/services/activity/taskPassService.ts @@ -3,13 +3,15 @@ import { ActivityModelType } from "../../db/Activity"; import { ActivityTaskPassModel } from "../../db/ActivityTaskPass"; import { RoleModel } from "../../db/Role"; import { TaskPassData } from "../../domain/activityField/taskPassField"; +import { getRoleCreateTime, getServerCreateTime } from "../redisService"; import { getActivityById } from "./activityService"; export async function getTaskPassData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TaskPassData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TaskPassData(activityData, createTime, serverTime); let record = await ActivityTaskPassModel.findData(serverId, activityId, roleId, playerData.roundIndex); playerData.setPlayerRecord(record); @@ -43,8 +45,9 @@ export async function getTaskPassDataShow(activityId: number, serverId: number, if (activityData.type !== ACTIVITY_TYPE.TASK_PASS) { return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TaskPassData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TaskPassData(activityData, createTime, serverTime); let roundIndex = playerData.roundIndex; await ActivityTaskPassModel.buy(serverId, activityId, roleId, roundIndex, productID); return { @@ -63,8 +66,9 @@ export async function getTaskPassDataShow(activityId: number, serverId: number, */ export async function addTaskPassPoint(serverId: number, activityId: number, roleId: string, addPoint: number) { let activity = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let data = new TaskPassData(activity, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let data = new TaskPassData(activity, createTime, serverTime); let result = await ActivityTaskPassModel.addPoint(serverId, activityId, roleId, data.roundIndex, addPoint); return result.totalPoint; } \ No newline at end of file diff --git a/game-server/app/services/activity/thirtyDaysService.ts b/game-server/app/services/activity/thirtyDaysService.ts index 57542973b..ca0e7dfcb 100644 --- a/game-server/app/services/activity/thirtyDaysService.ts +++ b/game-server/app/services/activity/thirtyDaysService.ts @@ -7,6 +7,7 @@ import moment = require('moment'); import { deltaDays } from '../../pubUtils/util'; import { ServerlistModel } from '../../db/Serverlist'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -42,9 +43,9 @@ export async function getPlayerThirtyDaysData(activityId: number, serverId: numb let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activityId, roleId); let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId); - - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new ThirtyDaysData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new ThirtyDaysData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); playerData.setPlayerPointRecords(playerPointRecords); @@ -68,8 +69,9 @@ export async function addPlayerThirtyDaysTask(activityId: number, serverId: numb let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activityId, roleId); let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new ThirtyDaysData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new ThirtyDaysData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecords); playerData.setPlayerPointRecords(playerPointRecords); return playerData; diff --git a/game-server/app/services/activity/timeLimitRankService.ts b/game-server/app/services/activity/timeLimitRankService.ts index 7e2123153..536123269 100644 --- a/game-server/app/services/activity/timeLimitRankService.ts +++ b/game-server/app/services/activity/timeLimitRankService.ts @@ -7,6 +7,7 @@ import { TimeLimitRankData } from "../../domain/activityField/timeLimitRankField import { GuildRankInfo, RoleRankInfo } from "../../domain/rank"; import { sendMailByContent, sendMailToGuildByContent } from "../mailService"; import { Rank } from "../rankService"; +import { getServerCreateTime } from "../redisService"; import { getActivitiesByType, getActivityById } from "./activityService"; import { stringToRewardInter } from "./giftPackageService"; @@ -19,15 +20,16 @@ import { stringToRewardInter } from "./giftPackageService"; * @param {string} roleId 角色Id * */ - export async function getTimeLimitRankData(activityId: number) { + export async function getTimeLimitRankData(activityId: number, serverId: number) { let activityData = await getActivityById(activityId); + let serverTime = await getServerCreateTime(serverId); - let playerData = new TimeLimitRankData(activityData, 0); + let playerData = new TimeLimitRankData(activityData, 0, serverTime); return playerData; } -export async function getTimeLimitRankDataShow(activityId: number) { - let playerData = await getTimeLimitRankData(activityId); +export async function getTimeLimitRankDataShow(activityId: number, serverId: number) { + let playerData = await getTimeLimitRankData(activityId, serverId); if(playerData && playerData.canShow && playerData.canShow()) { return playerData.getShowResult(); } @@ -44,7 +46,7 @@ export async function getTimeLimitRankDataShow(activityId: number) { export async function recordGuildFund(serverId: number, guild: GuildType, fund: number) { let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TIME_LIMIT_RANK); for(let activity of activities) { - let playerData = new TimeLimitRankData(activity, 0); + let playerData = new TimeLimitRankData(activity, 0, 0); if(playerData.canRecord() && playerData.rankType == RANK_TYPE.GUILD_FUND) { await ActivityTimeLimitRankModel.addGuildScore(serverId, playerData.activityId, playerData.rankType, guild.code, fund, guild._id); @@ -61,73 +63,65 @@ export async function recordGuildFund(serverId: number, guild: GuildType, fund: * @param data {TimeLimitRankData} 活动数据 * @returns */ -export async function sendRankMail(data: TimeLimitRankData) { - let group = await ActivityGroupModel.findGroupData(data.groupId); - let serverIds = group?.serverIds||[]; - for(let serverId of serverIds) { - let redisKey = getRedisKeyByRankType(data.rankType, true); - console.log('#### redisKey', redisKey, serverId) - if (!redisKey) return null; - let r = new Rank(redisKey, { activityId: data.activityId, serverId }); - console.log('#### getRankByRange',r.infoKey, await r.getRankByRange()) - if(r.infoKey == REDIS_KEY.GUILD_INFO) { - let allRank = (await r.getRankByRange()); - - for(let { rank, code, name, leader } of allRank) { - let reward = data.getRewardByRank(rank); - if(reward) { - await sendMailToGuildByContent(MAIL_TYPE.TIME_LIMIT_RANK, code, { - params: [data.tabName,`${rank}`], - goods: stringToRewardInter(reward.guildRewards) - }); - if(leader.roleId) await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, leader.roleId, { - params: [data.tabName,`${rank}`], - goods: stringToRewardInter(reward.rewards) - }); - } +export async function sendRankMail(data: TimeLimitRankData, serverId: number) { + let redisKey = getRedisKeyByRankType(data.rankType, true); + console.log('#### redisKey', redisKey, serverId) + if (!redisKey) return null; + let r = new Rank(redisKey, { activityId: data.activityId, serverId }); + console.log('#### getRankByRange',r.infoKey, await r.getRankByRange()) + if(r.infoKey == REDIS_KEY.GUILD_INFO) { + let allRank = (await r.getRankByRange()); + + for(let { rank, code, name, leader } of allRank) { + let reward = data.getRewardByRank(rank); + if(reward) { + await sendMailToGuildByContent(MAIL_TYPE.TIME_LIMIT_RANK, code, { + params: [data.tabName,`${rank}`], + goods: stringToRewardInter(reward.guildRewards) + }); + if(leader.roleId) await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, leader.roleId, { + params: [data.tabName,`${rank}`], + goods: stringToRewardInter(reward.rewards) + }); } - } else { - let allRank = (await r.getRankByRange()); - - for(let { rank, roleId } of allRank) { - let reward = data.getRewardByRank(rank); - if(reward) { - await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, roleId, { - params: [data.tabName, `${rank}`], - goods: stringToRewardInter(reward.rewards) - }); - } + } + } else { + let allRank = (await r.getRankByRange()); + + for(let { rank, roleId } of allRank) { + let reward = data.getRewardByRank(rank); + if(reward) { + await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, roleId, { + params: [data.tabName, `${rank}`], + goods: stringToRewardInter(reward.rewards) + }); } } } } -export async function takeSnapshot(data: TimeLimitRankData, groupId: number) { +export async function takeSnapshot(data: TimeLimitRankData, serverId: number) { let redisKey = getRedisKeyByRankType(data.rankType); let targetRedisKey = getRedisKeyByRankType(data.rankType, true); if (!redisKey || !targetRedisKey || redisKey == targetRedisKey) return null; - let activityGroup = await ActivityGroupModel.findGroupData(groupId); - let serverIds = activityGroup? activityGroup.serverIds: []; let insertInfos: ActivityTimeLimitRankModelTypeParam[] = []; - for(let serverId of serverIds) { - let r = new Rank(redisKey, { serverId, activityId: data.activityId }); - let allRank = await r.getRankDataByRankWithoutDetail(); - let targetR = new Rank(targetRedisKey, { serverId, activityId: data.activityId }); - for(let rank of allRank) { - await targetR.setRank(rank.myId, rank.scores); + let r = new Rank(redisKey, { serverId, activityId: data.activityId }); + let allRank = await r.getRankDataByRankWithoutDetail(); + let targetR = new Rank(targetRedisKey, { serverId, activityId: data.activityId }); + for(let rank of allRank) { + await targetR.setRank(rank.myId, rank.scores); - let insertBaseInfo = { - serverId, activityId: data.activityId, rankType: data.rankType, score: rank.scores[0]||0, time: rank.scores[1]||0 - } - if(rank.myId.roleId) { - let role = await RoleModel.findByRoleId(rank.myId.roleId, '_id roleId'); - if(role) insertInfos.push({ ...insertBaseInfo, roleId: role.roleId, role: role._id }); - } else if(rank.myId.guildCode) { - let guild = await GuildModel.findByCode(rank.myId.guildCode, serverId, '_id guildCode'); - if(guild) insertInfos.push({ ...insertBaseInfo, guildCode: guild.code, guild: guild._id }); - } + let insertBaseInfo = { + serverId, activityId: data.activityId, rankType: data.rankType, score: rank.scores[0]||0, time: rank.scores[1]||0 + } + if(rank.myId.roleId) { + let role = await RoleModel.findByRoleId(rank.myId.roleId, '_id roleId'); + if(role) insertInfos.push({ ...insertBaseInfo, roleId: role.roleId, role: role._id }); + } else if(rank.myId.guildCode) { + let guild = await GuildModel.findByCode(rank.myId.guildCode, serverId, '_id guildCode'); + if(guild) insertInfos.push({ ...insertBaseInfo, guildCode: guild.code, guild: guild._id }); } } await ActivityTimeLimitRankModel.insertRanks(insertInfos); diff --git a/game-server/app/services/activity/treasureHuntService.ts b/game-server/app/services/activity/treasureHuntService.ts index 4d9a23361..a319d97ad 100644 --- a/game-server/app/services/activity/treasureHuntService.ts +++ b/game-server/app/services/activity/treasureHuntService.ts @@ -13,6 +13,7 @@ import { addReward, stringToRewardParam } from './giftPackageService'; import { RewardParam } from '../../domain/activityField/rewardField'; import { RoleModel } from '../../db/Role'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -29,8 +30,9 @@ export async function treasureHuntActivity(serverId: number, roleId: string) { return null; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -64,8 +66,9 @@ export async function treasureHuntTaskActivity(serverId: number, roleId: string) return null; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -87,8 +90,9 @@ export async function treasureHuntTaskActivity(serverId: number, roleId: string) export async function getPlayerTreasureHuntData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) { let activityData = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -109,8 +113,9 @@ export async function getPlayerTreasureHuntData(activityId: number, serverId: nu export async function getPlayerTreasureHuntFirstPageData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -124,8 +129,9 @@ export async function getPlayerTreasureHuntFirstPageData(activityId: number, ser export async function getPlayerTreasureHuntShopData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -139,8 +145,9 @@ export async function getPlayerTreasureHuntShopData(activityId: number, serverId export async function getPlayerTreasureHuntTaskData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -154,8 +161,9 @@ export async function getPlayerTreasureHuntTaskData(activityId: number, serverId export async function getPlayerTreasureHuntChallengeData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -167,8 +175,9 @@ export async function getPlayerTreasureHuntChallengeData(activityId: number, ser export async function getPlayerTreasureHuntTreasureShopData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) { let activityData: ActivityModelType = await getActivityById(activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new TreasureHuntData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new TreasureHuntData(activityData, createTime, serverTime); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; @@ -222,9 +231,10 @@ async function getNewActivityData(serverId: number, roleId: string) { let huntRoundIndex: number = 0; // 寻宝骑兵-周期数 let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序 let treasureHuntDataArray: TreasureHuntData[] = []; - let { createTime } = await RoleModel.findByRoleId(roleId); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); for (let obj of activityArray) { - treasureHuntDataArray.push(new TreasureHuntData(obj, createTime)); + treasureHuntDataArray.push(new TreasureHuntData(obj, createTime, serverTime)); } let isOver = false; let huntBeginTime = moment(SERVER_OPEN_TIME).startOf('d').add(1, 'd').toDate(); @@ -255,9 +265,10 @@ async function getNextActivityData(serverId: number, roleId: string, oldHuntActi let huntRoundIndex: number = oldHuntRoundIndex; // 寻宝骑兵-周期数 let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序 let treasureHuntDataArray: TreasureHuntData[] = []; - let { createTime } = await RoleModel.findByRoleId(roleId); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); for (let obj of activityArray) { - treasureHuntDataArray.push(new TreasureHuntData(obj, createTime)); + treasureHuntDataArray.push(new TreasureHuntData(obj, createTime, serverTime)); } let isOver = false; let huntBeginTime = moment(oldHuntEndTime).add(1, 'd').startOf('d').toDate(); diff --git a/game-server/app/services/activity/vipRechargeMoneyService.ts b/game-server/app/services/activity/vipRechargeMoneyService.ts index 7548e229e..bee346bfb 100644 --- a/game-server/app/services/activity/vipRechargeMoneyService.ts +++ b/game-server/app/services/activity/vipRechargeMoneyService.ts @@ -5,6 +5,7 @@ import { VipRechargeMoneyData } from '../../domain/activityField/vipRechargeMone import { ServerlistModel } from '../../db/Serverlist'; import { RoleModel } from '../../db/Role'; import { getActivityById } from './activityService'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; /** * 获取活动数据 @@ -23,8 +24,10 @@ export async function vipRechargeMoneyActivity(serverId: number, roleId: string) } let activityData = activityArray[0]; let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityData.activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new VipRechargeMoneyData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new VipRechargeMoneyData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -44,8 +47,9 @@ export async function getPlayerVipRechargeMoneyData(activityId: number, serverId } let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new VipRechargeMoneyData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new VipRechargeMoneyData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } diff --git a/game-server/app/services/activity/yuanbaoService.ts b/game-server/app/services/activity/yuanbaoService.ts index 8cc423e4c..05f806e88 100644 --- a/game-server/app/services/activity/yuanbaoService.ts +++ b/game-server/app/services/activity/yuanbaoService.ts @@ -5,6 +5,7 @@ import { ServerlistModel } from '../../db/Serverlist'; 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 { addReward, stringToRewardParam } from './giftPackageService'; @@ -25,8 +26,10 @@ export async function yuanbaoActivity(serverId: number, roleId: string) { } let activityData = activityArray[0]; let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityData.activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new YuanBaoShopData(activityData, createTime); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new YuanBaoShopData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -43,8 +46,9 @@ export async function getPlayerYuanbaoShopData(activityId: number, serverId: num let activityData = await getActivityById(activityId); let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityId, roleId); - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new YuanBaoShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new YuanBaoShopData(activityData, createTime, serverTime); playerData.setPlayerRecords(playerRecord); return playerData; } @@ -66,8 +70,9 @@ export async function makeYuanbaoShopReward(roleId: string, roleName: string, si if (activityData.type !== ACTIVITY_TYPE.YUAN_BAO_SHOP) { return STATUS.ACTIVITY_TYPE_ERROR; } - let { createTime } = await RoleModel.findByRoleId(roleId); - let playerData = new YuanBaoShopData(activityData, createTime); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new YuanBaoShopData(activityData, createTime, serverTime); let item = playerData.findItem(productID); let rewardParamArr: Array = []; diff --git a/game-server/app/services/gmService.ts b/game-server/app/services/gmService.ts index 0fb8686c7..9e6f1ed14 100644 --- a/game-server/app/services/gmService.ts +++ b/game-server/app/services/gmService.ts @@ -218,21 +218,21 @@ export function getActivityProducts(activity: ActivityModelType) { switch(activity.type) { case ACTIVITY_TYPE.SIGN_IN_VIP: // 高级签到 { - let data = new SignInData(activity, 0); + let data = new SignInData(activity, 0, 0); return [getDicRMB(data.productID)]; } case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE: // 新手限定RMB购买礼包 case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY: // 日限购 case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY: // 周限购 { - let data = new LimitShopData(activity, 0); + let data = new LimitShopData(activity, 0, 0); return data.list.map(item => { return getDicRMB(item.productID); }); } case ACTIVITY_TYPE.YUAN_BAO_SHOP: // 元宝 { - let data = new YuanBaoShopData(activity, 0); + let data = new YuanBaoShopData(activity, 0, 0); return data.list.map(item => { return getDicRMB(item.productID); }); @@ -240,12 +240,12 @@ export function getActivityProducts(activity: ActivityModelType) { case ACTIVITY_TYPE.MONTHLY_TICKET_1: case ACTIVITY_TYPE.MONTHLY_TICKET_2: { - let data = new MonthlyTicketData(activity, 0); + let data = new MonthlyTicketData(activity, 0, 0); return [getDicRMB(data.productID)]; } case ACTIVITY_TYPE.DAILY_RMB_GIFTS: { - let data = new DailyRMBGiftsData(activity, 0); + let data = new DailyRMBGiftsData(activity, 0, 0); return [getDicRMB(data.productID)]; } case ACTIVITY_TYPE.POP_UP_SHOP://弹出礼包 @@ -263,14 +263,14 @@ export function getActivityProducts(activity: ActivityModelType) { case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP://镇念塔成长基金(高阶) case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP://精英成长基金(高阶) { - let data = new GrowthFundData(activity, 0); + let data = new GrowthFundData(activity, 0, 0); return data.list.map(item => { return getDicRMB(item.productID); }); } case ACTIVITY_TYPE.TREASURE_HUNT: { - let data = new TreasureHuntData(activity, 0); + let data = new TreasureHuntData(activity, 0, 0); let shop = data.shop; return shop.list.map(item => { return getDicRMB(item.productID); @@ -278,7 +278,7 @@ export function getActivityProducts(activity: ActivityModelType) { } case ACTIVITY_TYPE.REFRESH_SHOP: { - let data = new RefreshShopData(activity, 0); + let data = new RefreshShopData(activity, 0, 0); let products: { label: string, value: string }[] = []; for(let shop of data.list) { for(let item of shop.items) { @@ -322,7 +322,7 @@ export async function getParamStr(activity: ActivityModelType, productID: string let { activityGroupId } = await ServerlistModel.findByServerId(role.serverId); let monopolyActivitys = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.MONOPOLY, 1); let parentActivity = monopolyActivitys.find(activity => { - let data = new MonopolyData(activity, 0); + let data = new MonopolyData(activity, 0, 0); let curShop = data.list.find(land => { // 找到关联活动 return land.shopActivityId == activity.activityId; }); diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index 83a8e41c8..4325b79cf 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -13,7 +13,7 @@ import { getRandSingleEelm } from '../pubUtils/util'; import { ActivityModel } from '../db/Activity'; import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField'; import { ActivityTimeLimitRankModel } from '../db/ActivityTimeLimitRank'; -import { RoleType } from '../db/Role'; +import { RoleModel, RoleType } from '../db/Role'; import { GuildType } from '../db/Guild'; /** @@ -75,9 +75,10 @@ export async function initRank(serverId: number) { } export async function initActivitiesRank(serverId: number, activityGroupId: number[]) { + let serverTime = await getServerCreateTime(serverId); let activities = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TIME_LIMIT_RANK, new Date()); for(let activity of activities) { - let data = new TimeLimitRankData(activity, 0); + let data = new TimeLimitRankData(activity, 0, serverTime); if(data.beginTime <= Date.now() && data.endTime >= Date.now()) { let redisKey = getRedisKeyByRankType(data.rankType, true); @@ -355,12 +356,15 @@ export async function getRoleOnlineInfo(roleId: string) { } } -export async function getRoleCreateTime(roleId: string) { +export async function getRoleCreateTime(roleId: string, role?: RoleType) { + if(role && role.createTime) return role.createTime; + let onlineInfo = await getRoleOnlineInfo(roleId); if(onlineInfo.isOnline) { return onlineInfo.createtime; } else { - return null + let role = await RoleModel.findByRoleId(roleId); + return role?.createTime||0; } } @@ -451,10 +455,12 @@ export async function readDataBase() { async function setServerList() { const serverList = await ServerlistModel.getAllServerList(); await redisClient().delAsync(REDIS_KEY.SERVER); + await redisClient().delAsync(REDIS_KEY.SERVER_OPEN_TIME); for(let { id, name, openTime } of serverList) { // console.log(roleId); - await redisClient().hsetAsync(REDIS_KEY.SERVER, `${id}`, `${name}|${openTime}`); + await redisClient().hsetAsync(REDIS_KEY.SERVER, `${id}`, `${name}`); + await redisClient().hsetAsync(REDIS_KEY.SERVER_OPEN_TIME, `${id}`, `${openTime}`); } } @@ -472,14 +478,12 @@ export async function getAllServers() { } export async function getServerName(serverId: number) { - let value = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`); - let name = value.split('|')[0]; + let name = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`); return name||'常山少年' } export async function getServerCreateTime(serverId: number) { - let value = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`); - let time = value.split('|')[1]; + let time = await redisClient().hgetAsync(REDIS_KEY.SERVER_OPEN_TIME, `${serverId}`); return parseInt(time); } diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index cc1ff5c1c..adc1dd0de 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -4,7 +4,7 @@ import { PVPConfigModel, PVPConfigType } from '../db/SystemConfig'; import { nowSeconds, getTimeFun, getSeconds } from '../pubUtils/timeUtil'; import { getTodayGuildActivity, gameData } from '../pubUtils/data'; import { pvpSeasonEnd } from './pvpService'; -import { getAllOnlineRoles, getAllServers, delGuildActivityRank } from './redisService'; +import { getAllOnlineRoles, getAllServers, delGuildActivityRank, getServerCreateTime } from './redisService'; import { GUILD_ACTIVITY_TYPE, REFRESH_TIME, COUNTER, AUCTION_TIME, GM_MAIL_TYPE, SERVER_TIMER, ACTIVITY_TYPE } from '../consts'; import { pinus } from 'pinus'; import { settleGuildWeekly } from './guildService'; @@ -33,6 +33,7 @@ import { ServerMailModel, ServerMailType } from '../db/ServerMail'; import { ActivityModel, ActivityModelType } from '../db/Activity'; import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField'; import { sendRankMail, takeSnapshot } from './activity/timeLimitRankService'; +import { getActivitiesByType } from './activity/activityService'; const PER_SECOND = 1 * 1000; const PER_DAY = 24 * 60 * 60; @@ -679,51 +680,51 @@ async function autoCreateServerSchedule(region: RegionType) { // —————————————— 活动 start —————————————— // async function initTimeLimitRank() { let servers = await ServerlistModel.findByEnv(pinus.app.get('env')); - let activityGroupId: number[] = []; - for(let { activityGroupId: ids } of servers) { - for(let id of ids) { - if(activityGroupId.indexOf(id) == -1) activityGroupId.push(id); - } - } - let activities = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TIME_LIMIT_RANK, 1); - for(let activity of activities) { - let data = new TimeLimitRankData(activity, 0); - if(data.sendMailTime > Date.now()) { - await setSendRankMailSchedule(data); - } - if(data.rankEndTime > Date.now() && data.needSnapshot()) { - await setTakeRankSnapshotSchedule(data, activity.groupId); + 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); + } } } } export async function updateTimeLimitRank(activities: ActivityModelType[]) { - for(let activity of activities) { - let data = new TimeLimitRankData(activity, 0); - if(data.sendMailTime > Date.now()) { - await setSendRankMailSchedule(data); - } - if(data.rankEndTime > Date.now() && data.needSnapshot()) { - await setTakeRankSnapshotSchedule(data, activity.groupId); + 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); + } } } } -async function setSendRankMailSchedule(data: TimeLimitRankData) { +async function setSendRankMailSchedule(data: TimeLimitRankData, serverId: number) { console.log('########### setSendRankMailSchedule1 ########') - if(scheduledJobs[`rankMail${data.activityId}`]) { - scheduledJobs[`rankMail${data.activityId}`].cancel(); + if(scheduledJobs[`rankMail_${serverId}_${data.activityId}`]) { + scheduledJobs[`rankMail_${serverId}_${data.activityId}`].cancel(); } - scheduleJob(`rankMail${data.activityId}`, data.sendMailTime, async () => { + scheduleJob(`rankMail_${serverId}_${data.activityId}`, data.sendMailTime, async () => { console.log('########### setSendRankMailSchedule2 ########') - await sendRankMail(data); + await sendRankMail(data, serverId); }) } -async function setTakeRankSnapshotSchedule(data: TimeLimitRankData, groupId: number) { +async function setTakeRankSnapshotSchedule(data: TimeLimitRankData, serverId: number) { console.log('########### setTakeRankSnapshotSchedule1 ########') if(scheduledJobs[`snapshot${data.activityId}`]) { @@ -732,7 +733,7 @@ async function setTakeRankSnapshotSchedule(data: TimeLimitRankData, groupId: num scheduleJob(`snapshot${data.activityId}`, data.rankEndTime, async () => { console.log('########### setTakeRankSnapshotSchedule2 ########') - await takeSnapshot(data, groupId); + await takeSnapshot(data, serverId); }) } // —————————————— 活动 end —————————————— // \ No newline at end of file diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index 5ee72b185..8d715bee7 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -212,6 +212,7 @@ export enum REDIS_KEY { GUILD_INFO ="guildInfo", // 公会信息 GUILD_ACTIVE_RANK ="guildActiveRank", // 公会周活跃排行榜 SERVER ='server', // 服务器列表 + SERVER_OPEN_TIME = 'serverOpenTime', // 服务器开服时间 ONLINE_USERS ='onlineUsers', // 在线用户情况 ONLINE_TIME ='onlineTime', // 玩家在线时间 CHANNEL_SERVERS ='chat:channelServers', // 渠道对应的 chat 服务器 Id, diff --git a/shared/domain/activityField/activityField.ts b/shared/domain/activityField/activityField.ts index a95c55b67..14b1a01c9 100644 --- a/shared/domain/activityField/activityField.ts +++ b/shared/domain/activityField/activityField.ts @@ -46,7 +46,7 @@ export abstract class ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number, serverTime?: number) { + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { this.activityId = activityData.activityId; this.groupId = activityData.groupId; this.delayDay = activityData.delayDay ? activityData.delayDay : 0; @@ -62,7 +62,7 @@ export abstract class ActivityBase { console.log('***** activityData', activityData.timeType) switch (activityData.timeType) { case ACTIVITY_TIME_TYPE.SERVER_OPEN_TIME: { - this.beginTime = moment(serverTime).add(this.delayDay, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf(); + this.beginTime = moment(serverTime * 1000).add(this.delayDay, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf(); if (activityData.days > 0) { this.endTime = moment(this.beginTime).add(activityData.days, 'd').valueOf(); } else { diff --git a/shared/domain/activityField/dailyChallengesField.ts b/shared/domain/activityField/dailyChallengesField.ts index ad314faff..7c94be75f 100644 --- a/shared/domain/activityField/dailyChallengesField.ts +++ b/shared/domain/activityField/dailyChallengesField.ts @@ -73,8 +73,8 @@ export class DailyChallengesData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/dailyCoinField.ts b/shared/domain/activityField/dailyCoinField.ts index 4d463bd89..5fad26e56 100644 --- a/shared/domain/activityField/dailyCoinField.ts +++ b/shared/domain/activityField/dailyCoinField.ts @@ -110,8 +110,8 @@ export class DailyCoinData extends ActivityBase { } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/dailyGKField.ts b/shared/domain/activityField/dailyGKField.ts index 6ccba6c87..aa18cda49 100644 --- a/shared/domain/activityField/dailyGKField.ts +++ b/shared/domain/activityField/dailyGKField.ts @@ -55,8 +55,8 @@ export class DailyGKData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/dailyGiftsField.ts b/shared/domain/activityField/dailyGiftsField.ts index 5570ca08e..add702137 100644 --- a/shared/domain/activityField/dailyGiftsField.ts +++ b/shared/domain/activityField/dailyGiftsField.ts @@ -72,8 +72,8 @@ export class DailyGiftsData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/dailyMealField.ts b/shared/domain/activityField/dailyMealField.ts index 6a5b53d48..eca2d5ed5 100644 --- a/shared/domain/activityField/dailyMealField.ts +++ b/shared/domain/activityField/dailyMealField.ts @@ -66,8 +66,8 @@ export class DailyMealData extends ActivityBase { // console.log('ddddddddddddbbbbbbb') } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime); this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/dailyRMBGiftsField.ts b/shared/domain/activityField/dailyRMBGiftsField.ts index 6966bc9ad..5cac80a89 100644 --- a/shared/domain/activityField/dailyRMBGiftsField.ts +++ b/shared/domain/activityField/dailyRMBGiftsField.ts @@ -100,8 +100,8 @@ export class DailyRMBGiftsData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/firstGiftField.ts b/shared/domain/activityField/firstGiftField.ts index b49c51434..690dc6e8e 100644 --- a/shared/domain/activityField/firstGiftField.ts +++ b/shared/domain/activityField/firstGiftField.ts @@ -143,8 +143,8 @@ export class FirstGiftData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/gachaField.ts b/shared/domain/activityField/gachaField.ts index f90ad7180..c82457fb2 100644 --- a/shared/domain/activityField/gachaField.ts +++ b/shared/domain/activityField/gachaField.ts @@ -38,8 +38,8 @@ export class GachaData extends ActivityBase { this.floor = userGacha.floor; } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) } } diff --git a/shared/domain/activityField/growthField.ts b/shared/domain/activityField/growthField.ts index 2700de81b..5765cbcc2 100644 --- a/shared/domain/activityField/growthField.ts +++ b/shared/domain/activityField/growthField.ts @@ -149,8 +149,8 @@ export class GrowthData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/growthFundField.ts b/shared/domain/activityField/growthFundField.ts index c3ad0531b..c9aa0ec32 100644 --- a/shared/domain/activityField/growthFundField.ts +++ b/shared/domain/activityField/growthFundField.ts @@ -164,7 +164,7 @@ export class GrowthFundData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number, serverTime?: number) { + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { super(activityData, createTime, serverTime) this.initData(activityData.data) } diff --git a/shared/domain/activityField/guildPay.ts b/shared/domain/activityField/guildPay.ts index e62276a01..5acfb14ba 100644 --- a/shared/domain/activityField/guildPay.ts +++ b/shared/domain/activityField/guildPay.ts @@ -42,7 +42,7 @@ export class GuildPayData extends ActivityBase { payMemberCnt: number = 0; payRecord: string[] = []; - constructor(activityData: ActivityModelType, createTime: number, serverTime?: number) { + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { super(activityData, createTime, serverTime) this.initData(activityData.data) } diff --git a/shared/domain/activityField/limitShopField.ts b/shared/domain/activityField/limitShopField.ts index 430fc9da4..dd7bfd368 100644 --- a/shared/domain/activityField/limitShopField.ts +++ b/shared/domain/activityField/limitShopField.ts @@ -90,8 +90,8 @@ export class LimitShopData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/luckyTurntableField.ts b/shared/domain/activityField/luckyTurntableField.ts index 13ae80071..97d46fef6 100644 --- a/shared/domain/activityField/luckyTurntableField.ts +++ b/shared/domain/activityField/luckyTurntableField.ts @@ -182,8 +182,8 @@ export class LuckyTurntableData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/monopolyField.ts b/shared/domain/activityField/monopolyField.ts index 63b07f312..51e20f05a 100644 --- a/shared/domain/activityField/monopolyField.ts +++ b/shared/domain/activityField/monopolyField.ts @@ -68,8 +68,8 @@ export class MonopolyData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/monthlyTicketField.ts b/shared/domain/activityField/monthlyTicketField.ts index de16d8368..d03a2d84b 100644 --- a/shared/domain/activityField/monthlyTicketField.ts +++ b/shared/domain/activityField/monthlyTicketField.ts @@ -36,8 +36,8 @@ export class MonthlyTicketData extends ActivityBase { isOpen: boolean = false; // 是否开启中 todayIndex: number = 0; // 现在可以领取第几天的奖励 - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data); this.isForever = activityData.type == ACTIVITY_TYPE.MONTHLY_TICKET_2; } diff --git a/shared/domain/activityField/newHeroGKField.ts b/shared/domain/activityField/newHeroGKField.ts index 7b6b8827e..7e42c6c3e 100644 --- a/shared/domain/activityField/newHeroGKField.ts +++ b/shared/domain/activityField/newHeroGKField.ts @@ -97,8 +97,8 @@ export class NewHeroGKData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/newHeroGachaField.ts b/shared/domain/activityField/newHeroGachaField.ts index 6402d48cf..d116da73b 100644 --- a/shared/domain/activityField/newHeroGachaField.ts +++ b/shared/domain/activityField/newHeroGachaField.ts @@ -72,8 +72,8 @@ export class NewHeroGachaData extends ActivityBase { } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } diff --git a/shared/domain/activityField/newHeroGiftField.ts b/shared/domain/activityField/newHeroGiftField.ts index b3c2a937c..638bedc4d 100644 --- a/shared/domain/activityField/newHeroGiftField.ts +++ b/shared/domain/activityField/newHeroGiftField.ts @@ -64,8 +64,8 @@ export class NewHeroGiftData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/popUpShopField.ts b/shared/domain/activityField/popUpShopField.ts index a8ad9c59f..0d7d1776e 100644 --- a/shared/domain/activityField/popUpShopField.ts +++ b/shared/domain/activityField/popUpShopField.ts @@ -61,7 +61,7 @@ export class PopUpShopData extends ActivityBase { maxPrice: number = 0; // 礼包上限 constructor(activityData: ActivityModelType) { - super(activityData, 0); + super(activityData, 0, 0); this.initData(activityData.data) } diff --git a/shared/domain/activityField/rechargeMoneyField.ts b/shared/domain/activityField/rechargeMoneyField.ts index 82ce64c96..60be28125 100644 --- a/shared/domain/activityField/rechargeMoneyField.ts +++ b/shared/domain/activityField/rechargeMoneyField.ts @@ -134,8 +134,8 @@ export class RechargeMoneyData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/refreshShopField.ts b/shared/domain/activityField/refreshShopField.ts index b977a6c45..66dd11620 100644 --- a/shared/domain/activityField/refreshShopField.ts +++ b/shared/domain/activityField/refreshShopField.ts @@ -169,8 +169,8 @@ export class RefreshShopData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/refreshTaskField.ts b/shared/domain/activityField/refreshTaskField.ts index acca05e00..aa94e2e39 100644 --- a/shared/domain/activityField/refreshTaskField.ts +++ b/shared/domain/activityField/refreshTaskField.ts @@ -131,7 +131,7 @@ export class RefreshTaskData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number, serverTime?: number) { + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { super(activityData, createTime, serverTime) this.initData(activityData.data) } diff --git a/shared/domain/activityField/selfServiceShopField.ts b/shared/domain/activityField/selfServiceShopField.ts index 9ff43e440..441ef77b9 100644 --- a/shared/domain/activityField/selfServiceShopField.ts +++ b/shared/domain/activityField/selfServiceShopField.ts @@ -104,8 +104,8 @@ export class SelfServiceShopData extends ActivityBase { this.roundIndex = Math.ceil(this.todayIndex / this.days); } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/signInField.ts b/shared/domain/activityField/signInField.ts index 0661f0895..dcd6e1000 100644 --- a/shared/domain/activityField/signInField.ts +++ b/shared/domain/activityField/signInField.ts @@ -108,8 +108,8 @@ export class SignInData extends ActivityBase { } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/taskPassField.ts b/shared/domain/activityField/taskPassField.ts index 99dce0a5f..52c810dda 100644 --- a/shared/domain/activityField/taskPassField.ts +++ b/shared/domain/activityField/taskPassField.ts @@ -146,8 +146,8 @@ export class TaskPassData extends ActivityBase { totalPoint: number = 0; map: Map = new Map(); // pageIndex => rewards的index - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } diff --git a/shared/domain/activityField/thirtyDaysField.ts b/shared/domain/activityField/thirtyDaysField.ts index 562612602..b83a70814 100644 --- a/shared/domain/activityField/thirtyDaysField.ts +++ b/shared/domain/activityField/thirtyDaysField.ts @@ -242,7 +242,7 @@ export class ThirtyDaysData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number, serverTime?: number) { + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { super(activityData, createTime, serverTime) this.initData(activityData.data) } diff --git a/shared/domain/activityField/timeLimitRankField.ts b/shared/domain/activityField/timeLimitRankField.ts index 956d3c1f7..4d7a4a34a 100644 --- a/shared/domain/activityField/timeLimitRankField.ts +++ b/shared/domain/activityField/timeLimitRankField.ts @@ -83,8 +83,8 @@ export class TimeLimitRankData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime); this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/treasureHuntField.ts b/shared/domain/activityField/treasureHuntField.ts index 97723b600..69d7a9dba 100644 --- a/shared/domain/activityField/treasureHuntField.ts +++ b/shared/domain/activityField/treasureHuntField.ts @@ -341,7 +341,7 @@ export class TreasureHuntData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number, sererTime?: number) { + constructor(activityData: ActivityModelType, createTime: number, sererTime: number) { super(activityData, createTime, sererTime); this.initData(activityData.data) } diff --git a/shared/domain/activityField/vipRechargeMoneyField.ts b/shared/domain/activityField/vipRechargeMoneyField.ts index 916101c35..38b061316 100644 --- a/shared/domain/activityField/vipRechargeMoneyField.ts +++ b/shared/domain/activityField/vipRechargeMoneyField.ts @@ -61,8 +61,8 @@ export class VipRechargeMoneyData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file diff --git a/shared/domain/activityField/yuanBaoShopField.ts b/shared/domain/activityField/yuanBaoShopField.ts index a90af6b0a..db83f4ebe 100644 --- a/shared/domain/activityField/yuanBaoShopField.ts +++ b/shared/domain/activityField/yuanBaoShopField.ts @@ -62,8 +62,8 @@ export class YuanBaoShopData extends ActivityBase { } } - constructor(activityData: ActivityModelType, createTime: number) { - super(activityData, createTime) + constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { + super(activityData, createTime, serverTime) this.initData(activityData.data) } } \ No newline at end of file