活动:时间

This commit is contained in:
陆莹
2022-03-23 13:54:04 +08:00
parent 29c5ae8a0a
commit 7bb8250060
70 changed files with 456 additions and 342 deletions
@@ -14,6 +14,7 @@ import { RECRUIT } from "../../../pubUtils/dicParam";
import { getActivityById } from "../../../services/activity/activityService"; import { getActivityById } from "../../../services/activity/activityService";
import { checkTaskInGacha } from "../../../services/task/taskService"; import { checkTaskInGacha } from "../../../services/task/taskService";
import { createHeroes } from "../../../services/role/createHero"; import { createHeroes } from "../../../services/role/createHero";
import { getRoleCreateTime, getServerCreateTime } from "../../../services/redisService";
export default function (app: Application) { export default function (app: Application) {
new HandlerService(app, {}); new HandlerService(app, {});
@@ -247,8 +248,9 @@ export class GachaHandler {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
if (!activityData) return resResult(STATUS.ACTIVITY_MISSING); if (!activityData) return resResult(STATUS.ACTIVITY_MISSING);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let gachaData = new GachaData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let gachaData = new GachaData(activityData, createTime, serverTime);
heroes = gachaData.heroes; heroes = gachaData.heroes;
if (!heroes.includes(pickHero)) { if (!heroes.includes(pickHero)) {
return resResult(STATUS.GACHA_CAN_NOT_PICK) return resResult(STATUS.GACHA_CAN_NOT_PICK)
@@ -12,6 +12,7 @@ import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../s
import { random } from 'underscore'; import { random } from 'underscore';
import { RoleModel } from '../../../db/Role'; import { RoleModel } from '../../../db/Role';
import { getActivityById } from '../../../services/activity/activityService'; import { getActivityById } from '../../../services/activity/activityService';
import { getRoleCreateTime, getServerCreateTime } from '../../../services/redisService';
export default function (app: Application) { export default function (app: Application) {
new HandlerService(app, {}); new HandlerService(app, {});
@@ -56,8 +57,9 @@ export class SelfServiceShopHandler {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SelfServiceShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
let item = playerData.getItem(index); let item = playerData.getItem(index);
if (item.countMax > 0) {//限制购买次数 if (item.countMax > 0) {//限制购买次数
@@ -116,8 +118,9 @@ export class SelfServiceShopHandler {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SelfServiceShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
let unitPrice = playerData.unitPrice;//购买价格 let unitPrice = playerData.unitPrice;//购买价格
let unitCountMax = playerData.unitCountMax;//最大购买次数 let unitCountMax = playerData.unitCountMax;//最大购买次数
let unitReward = playerData.unitReward;//购买获得资源 let unitReward = playerData.unitReward;//购买获得资源
@@ -9,6 +9,8 @@ import { ActivityModel, ActivityModelType } from '../../../db/Activity';
import { ServerlistModel } from '../../../db/Serverlist'; import { ServerlistModel } from '../../../db/Serverlist';
import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService'; import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService';
import { RewardParam } from '../../../domain/activityField/rewardField'; import { RewardParam } from '../../../domain/activityField/rewardField';
import { getActivitiesByType } from '../../../services/activity/activityService';
import { getRoleCreateTime, getServerCreateTime } from '../../../services/redisService';
export default function (app: Application) { export default function (app: Application) {
new HandlerService(app, {}); new HandlerService(app, {});
@@ -56,12 +58,13 @@ export class ThirtyDaysHandler {
let todayIndex = await playerThirtyDaysActivityDays(roleId);//玩家当前的天数 let todayIndex = await playerThirtyDaysActivityDays(roleId);//玩家当前的天数
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.THIRTY_DAYS);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.THIRTY_DAYS, 1) let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId);
let activityDays = 0; let activityDays = 0;
for (let i = 0; i < activityArray.length; i++) { 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) { if (playerData.activityId != activityId) {
activityDays += playerData.days;//周期天数 activityDays += playerData.days;//周期天数
} else { } else {
@@ -6,7 +6,7 @@ import { getTimeLimitRankData, getTimeLimitRankDataShow, sendRankMail, takeSnaps
import { getRankInHandler, Rank } from '../../../services/rankService'; import { getRankInHandler, Rank } from '../../../services/rankService';
import { getActivityById } from '../../../services/activity/activityService'; import { getActivityById } from '../../../services/activity/activityService';
import { TimeLimitRankData } from '../../../domain/activityField/timeLimitRankField'; import { TimeLimitRankData } from '../../../domain/activityField/timeLimitRankField';
import { hasKey } from '../../../services/redisService'; import { getServerCreateTime, hasKey } from '../../../services/redisService';
import { KeyName } from '../../../domain/rank'; import { KeyName } from '../../../domain/rank';
@@ -27,9 +27,10 @@ export class TimeLimitRankHandler {
* @memberof TimeLimitRankHandler * @memberof TimeLimitRankHandler
*/ */
async getTimeLimitRankData(msg: { activityId: number }, session: BackendSession) { async getTimeLimitRankData(msg: { activityId: number }, session: BackendSession) {
const serverId = session.get('serverId');
const { activityId } = msg; const { activityId } = msg;
let playerData = await getTimeLimitRankDataShow(activityId); let playerData = await getTimeLimitRankDataShow(activityId, serverId);
if (!playerData) { if (!playerData) {
return resResult(STATUS.ACTIVITY_MISSING); return resResult(STATUS.ACTIVITY_MISSING);
} }
@@ -48,7 +49,7 @@ export class TimeLimitRankHandler {
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
let playerData = await getTimeLimitRankData(activityId); let playerData = await getTimeLimitRankData(activityId, serverId);
if (!playerData) { if (!playerData) {
return resResult(STATUS.ACTIVITY_MISSING); return resResult(STATUS.ACTIVITY_MISSING);
} }
@@ -72,23 +73,26 @@ export class TimeLimitRankHandler {
async debugSendMail(msg: { magicWord: string, activityId: number }, session: BackendSession) { async debugSendMail(msg: { magicWord: string, activityId: number }, session: BackendSession) {
let serverId = session.get('serverId');
const { magicWord, activityId } = msg; const { magicWord, activityId } = msg;
if (magicWord !== DEBUG_MAGIC_WORD) { if (magicWord !== DEBUG_MAGIC_WORD) {
return resResult(STATUS.TOKEN_ERR); return resResult(STATUS.TOKEN_ERR);
} }
let playerData = await getTimeLimitRankData(activityId); let playerData = await getTimeLimitRankData(activityId, serverId);
await sendRankMail(playerData); await sendRankMail(playerData, serverId);
return resResult(STATUS.SUCCESS); return resResult(STATUS.SUCCESS);
} }
async debugTakeSnapshot(msg: { magicWord: string, activityId: number }, session: BackendSession) { async debugTakeSnapshot(msg: { magicWord: string, activityId: number }, session: BackendSession) {
let serverId = session.get('serverId');
const { magicWord, activityId } = msg; const { magicWord, activityId } = msg;
if (magicWord !== DEBUG_MAGIC_WORD) { if (magicWord !== DEBUG_MAGIC_WORD) {
return resResult(STATUS.TOKEN_ERR); return resResult(STATUS.TOKEN_ERR);
} }
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let serverTime = await getServerCreateTime(serverId);
let playerData = new TimeLimitRankData(activityData, 0); let playerData = new TimeLimitRankData(activityData, 0, serverTime);
if(!playerData.needSnapshot) return resResult(STATUS.WRONG_PARMS); if(!playerData.needSnapshot) return resResult(STATUS.WRONG_PARMS);
await takeSnapshot(playerData, activityData.groupId); await takeSnapshot(playerData, activityData.groupId);
return resResult(STATUS.SUCCESS); return resResult(STATUS.SUCCESS);
@@ -200,7 +200,7 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s
} }
case ACTIVITY_TYPE.TIME_LIMIT_RANK: // 限时排行 case ACTIVITY_TYPE.TIME_LIMIT_RANK: // 限时排行
{ {
activityData = await getTimeLimitRankDataShow(activityId); activityData = await getTimeLimitRankDataShow(activityId, serverId);
break; break;
} }
case ACTIVITY_TYPE.TASK_PASS: // 限时排行 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) { 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() ) { if(signInObj.beginTime < now.getTime() && signInObj.endTime > now.getTime() ) {
return false; return false;
} }
@@ -4,6 +4,7 @@ import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from '
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyChallengesData } from '../../domain/activityField/dailyChallengesField'; import { DailyChallengesData } from '../../domain/activityField/dailyChallengesField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -23,8 +24,10 @@ export async function dailyChallengesActivity(serverId: number, roleId: string)
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityData.activityId, roleId); 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); playerData.setPlayerRecords(playerRecords);
return playerData; return playerData;
} }
@@ -41,8 +44,10 @@ export async function dailyChallengesActivity(serverId: number, roleId: string)
export async function getPlayerDailyChallengesData(activityId: number, serverId: number, roleId: string) { export async function getPlayerDailyChallengesData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityId, roleId); 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); playerData.setPlayerRecords(playerRecords);
return playerData; return playerData;
@@ -4,6 +4,7 @@ import { ActivityDailyCoinModel, ActivityDailyCoinModelType } from '../../db/Act
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyCoinData } from '../../domain/activityField/dailyCoinField'; import { DailyCoinData } from '../../domain/activityField/dailyCoinField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -22,8 +23,9 @@ export async function dailyCoinActivity(serverId: number, roleId: string) {
return null; return null;
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyCoinData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyCoinData(activityData, createTime, serverTime);
let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex); let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecords(playerRecord); 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) { export async function getPlayerDailyCoinData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyCoinData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyCoinData(activityData, createTime, serverTime);
let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex); let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
@@ -4,6 +4,7 @@ import { ActivityDailyGKModel, ActivityDailyGKModelType } from '../../db/Activit
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyGKData } from '../../domain/activityField/dailyGKField'; import { DailyGKData } from '../../domain/activityField/dailyGKField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -23,8 +24,9 @@ export async function dailyGKActivity(serverId: number, roleId: string) {
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let playerRecord: ActivityDailyGKModelType = await ActivityDailyGKModel.findData(serverId, activityData.activityId, roleId); let playerRecord: ActivityDailyGKModelType = await ActivityDailyGKModel.findData(serverId, activityData.activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyGKData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyGKData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -41,8 +43,9 @@ export async function dailyGKActivity(serverId: number, roleId: string) {
export async function getPlayerDailyGKData(activityId: number, serverId: number, roleId: string) { export async function getPlayerDailyGKData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let playerRecord: ActivityDailyGKModelType = await ActivityDailyGKModel.findData(serverId, activityId, roleId); let playerRecord: ActivityDailyGKModelType = await ActivityDailyGKModel.findData(serverId, activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyGKData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyGKData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; 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) { export async function challengeDailyGK(serverId: number, roleId: string, activityId: number, gk: number) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyGKData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyGKData(activityData, createTime, serverTime);
let item = playerData.findItemByGK(gk); let item = playerData.findItemByGK(gk);
if (item) { if (item) {
let dayIndex = item.dayIndex; let dayIndex = item.dayIndex;
@@ -4,6 +4,7 @@ import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/A
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyGiftsData } from '../../domain/activityField/dailyGiftsField'; import { DailyGiftsData } from '../../domain/activityField/dailyGiftsField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -24,8 +25,9 @@ export async function dailyGiftsActivity(serverId: number, roleId: string) {
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityData.activityId, roleId); let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityData.activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyGiftsData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyGiftsData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecords); playerData.setPlayerRecords(playerRecords);
return playerData; return playerData;
} }
@@ -42,8 +44,9 @@ export async function dailyGiftsActivity(serverId: number, roleId: string) {
export async function getPlayerDailyGiftsData(activityId: number, serverId: number, roleId: string) { export async function getPlayerDailyGiftsData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityId, roleId); let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyGiftsData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyGiftsData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecords); playerData.setPlayerRecords(playerRecords);
return playerData; return playerData;
@@ -4,6 +4,7 @@ import { ActivityDailyMealModel, ActivityDailyMealModelType } from '../../db/Act
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { DailyMealData } from '../../domain/activityField/dailyMealField'; import { DailyMealData } from '../../domain/activityField/dailyMealField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -22,8 +23,9 @@ export async function dailyMealActivity(serverId: number, roleId: string) {
return null; return null;
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyMealData(activityData, createTime); 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 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); 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) { export async function getPlayerDailyMealData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyMealData(activityData, createTime); 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 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); let playerDinnerRecords: ActivityDailyMealModelType[] = await ActivityDailyMealModel.findData(serverId, activityData.activityId, roleId, DAILY_MEAL_TYPE.DINNER, playerData.roundIndex);
@@ -8,6 +8,7 @@ import { addReward, stringToRewardParam } from './giftPackageService';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { 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) { export async function getPlayerDailyRMBGiftsData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyRMBGiftsData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime);
// let productID = playerData.productID; // let productID = playerData.productID;
// let playerOrders: UserOrderModelType[] = await UserOrderModel.findPlayerOrder(productID, roleId, activityId, 1); // let playerOrders: UserOrderModelType[] = await UserOrderModel.findPlayerOrder(productID, roleId, activityId, 1);
// let buyTime = moment(new Date()).startOf('d').toDate() // 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, code: STATUS.ACTIVITY_TYPE_ERROR,
} }
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new DailyRMBGiftsData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime);
let bigGiftProductID = playerData.productID; let bigGiftProductID = playerData.productID;
if (bigGiftProductID == productID) {//一次性购买7天礼包 if (bigGiftProductID == productID) {//一次性购买7天礼包
let playerRecord: ActivityDailyRMBGiftsModelType = await ActivityDailyRMBGiftsModel.findRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex); let playerRecord: ActivityDailyRMBGiftsModelType = await ActivityDailyRMBGiftsModel.findRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex);
@@ -4,7 +4,8 @@ import { ActivityFirstGiftModel, ActivityFirstGiftModelType } from '../../db/Act
import { RoleModel, RoleType } from '../../db/Role'; import { RoleModel, RoleType } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { FirstGiftData } from '../../domain/activityField/firstGiftField'; 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 activityData = await getActivityById(activityId);
let playerRecord = await ActivityFirstGiftModel.findData(activityId, roleId); let playerRecord = await ActivityFirstGiftModel.findData(activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new FirstGiftData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new FirstGiftData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -73,10 +75,10 @@ export async function getPlayerFirstGiftDataShow(activityId: number, serverId: n
* @param {number} serverId 区id * @param {number} serverId 区id
*/ */
export async function recordFirstGift(role: RoleType, serverId: number) { export async function recordFirstGift(role: RoleType, serverId: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.FIRST_GIFT);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.FIRST_GIFT, new Date()) let serverTime = await getServerCreateTime(serverId);
for (let obj of activityArray) { for (let obj of activities) {
let playerData = new FirstGiftData(obj, role.createTime); let playerData = new FirstGiftData(obj, role.createTime, serverTime);
for(let { pageIndex, targetMoney } of playerData.list) { for(let { pageIndex, targetMoney } of playerData.list) {
if(role.totalPay >= targetMoney) { if(role.totalPay >= targetMoney) {
await ActivityFirstGiftModel.begin(obj.activityId, role.roleId, pageIndex ); await ActivityFirstGiftModel.begin(obj.activityId, role.roleId, pageIndex );
@@ -12,6 +12,7 @@ import { HeroType } from "../../db/Hero";
import { NewHeroGachaItem } from "../../domain/activityField/newHeroGachaField"; import { NewHeroGachaItem } from "../../domain/activityField/newHeroGachaField";
import { getActivityById } from "./activityService"; import { getActivityById } from "./activityService";
import { transPiece } from "../role/util"; 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); let activityData = await getActivityById(activityId);
if (!activityData) return false; if (!activityData) return false;
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let gachaData = new GachaData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let gachaData = new GachaData(activityData, createTime, serverTime);
let userGacha = await UserGachaModel.findByRole(roleId, gachaData.gachaId, activityId); let userGacha = await UserGachaModel.findByRole(roleId, gachaData.gachaId, activityId);
userGacha = await refreshGacha(gameData.gacha.get(gachaData.gachaId), userGacha); userGacha = await refreshGacha(gameData.gacha.get(gachaData.gachaId), userGacha);
gachaData.setUserGacha(userGacha); gachaData.setUserGacha(userGacha);
@@ -6,6 +6,7 @@ import { RoleModel } from '../../db/Role';
import { GrowthFundData } from '../../domain/activityField/growthFundField'; import { GrowthFundData } from '../../domain/activityField/growthFundField';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { getActivityById } from './activityService'; import { 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 activityData = await getActivityById(activityId);
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activityId, roleId); let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new GrowthFundData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new GrowthFundData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecords); playerData.setPlayerRecords(playerRecords);
if (playerData.isVipActivity()) {//vip高阶需要购买 if (playerData.isVipActivity()) {//vip高阶需要购买
let buyRecords = await ActivityBuyRecordsModel.findRecordsByActivityId(activityData.activityId, roleId); 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) { 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; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new GrowthFundData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new GrowthFundData(activityData, createTime, serverTime);
let pageData = playerData.findPageByProductID(productID); let pageData = playerData.findPageByProductID(productID);
let pageIndex = pageData.pageIndex; let pageIndex = pageData.pageIndex;
await ActivityBuyRecordsModel.addRecord(activityId, roleId, activityData.type, pageIndex, true); await ActivityBuyRecordsModel.addRecord(activityId, roleId, activityData.type, pageIndex, true);
@@ -6,6 +6,7 @@ import { HeroModel } from '../../db/Hero';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { GrowthData } from '../../domain/activityField/growthField'; import { GrowthData } from '../../domain/activityField/growthField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; 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 playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityData.activityId, roleId);
let userHeroes = await HeroModel.findByRole(roleId); let userHeroes = await HeroModel.findByRole(roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new GrowthData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new GrowthData(activityData, createTime, serverTime);
await playerData.setPlayerRecords(playerRecords, roleId, userHeroes); await playerData.setPlayerRecords(playerRecords, roleId, userHeroes);
playerData.setPlayerPointRecord(playerPointRecord); playerData.setPlayerPointRecord(playerPointRecord);
return playerData; return playerData;
@@ -49,8 +51,9 @@ export async function getPlayerGrowthData(activityId: number, serverId: number,
let userHeroes = await HeroModel.findByRole(roleId); let userHeroes = await HeroModel.findByRole(roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new GrowthData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new GrowthData(activityData, createTime, serverTime);
await playerData.setPlayerRecords(playerRecords, roleId, userHeroes); await playerData.setPlayerRecords(playerRecords, roleId, userHeroes);
playerData.setPlayerPointRecord(playerPointRecord); playerData.setPlayerPointRecord(playerPointRecord);
return playerData; return playerData;
@@ -5,6 +5,7 @@ import { GuildPayData } from "../../domain/activityField/guildPay";
import { getActivitiesByType, getActivityById, pushActivities, pushActivitiesToGuild, pushActivityInter } from "./activityService"; import { getActivitiesByType, getActivityById, pushActivities, pushActivitiesToGuild, pushActivityInter } from "./activityService";
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { ActivityGuildPayRecordModel } from "../../db/ActivityGuildPayRecord"; 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) { export async function getGuildPayData(serverId: number, activityId: number, roleId: string, guildCode: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { openTime } = await ServerlistModel.findByServerId(serverId); let serverTime = await getServerCreateTime(serverId);
let playerData = new GuildPayData(activityData, 0, serverTime);
let playerData = new GuildPayData(activityData, 0, openTime * 1000);
let receiveRecord = await ActivityGuildPayRecordModel.findData(serverId, activityId, playerData.roundIndex, roleId); let receiveRecord = await ActivityGuildPayRecordModel.findData(serverId, activityId, playerData.roundIndex, roleId);
playerData.setReceiveRecord(receiveRecord); playerData.setReceiveRecord(receiveRecord);
if(guildCode) { if(guildCode) {
@@ -6,7 +6,8 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { LimitShopData } from '../../domain/activityField/limitShopField'; import { LimitShopData } from '../../domain/activityField/limitShopField';
import { deltaDays } from '../../pubUtils/util'; import { deltaDays } from '../../pubUtils/util';
import { getActivityById } from './activityService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivitiesByType, getActivityById } from './activityService';
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
/** /**
@@ -19,14 +20,14 @@ import { addReward, stringToRewardParam } from './giftPackageService';
*/ */
export async function newPlayerLimitPackageActivity(serverId: number, roleId: string) { export async function newPlayerLimitPackageActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, new Date) if (activities.length == 0) {
if (activityArray.length == 0) {
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activities[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new LimitShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new LimitShopData(activityData, createTime, serverTime);
let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityData.activityId, roleId, playerData.roundIndex); let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityData.activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecords(playerRecord); 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) { export async function getPlayerLimitPackageData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new LimitShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new LimitShopData(activityData, createTime, serverTime);
let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityId, roleId, playerData.roundIndex); let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
@@ -113,8 +115,9 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s
activityData.type !== ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY) { activityData.type !== ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY) {
return STATUS.ACTIVITY_TYPE_ERROR; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new LimitShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new LimitShopData(activityData, createTime, serverTime);
let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityData.activityId, roleId, playerData.roundIndex); let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityData.activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
@@ -2,6 +2,7 @@ import { ActivityTurntableModel } from "../../db/ActivityTurntableRec";
import { RoleModel } from "../../db/Role"; import { RoleModel } from "../../db/Role";
import { LuckyTurntableData } from "../../domain/activityField/luckyTurntableField"; import { LuckyTurntableData } from "../../domain/activityField/luckyTurntableField";
import { shouldRefresh } from "../../pubUtils/util"; import { shouldRefresh } from "../../pubUtils/util";
import { getRoleCreateTime, getServerCreateTime } from "../redisService";
import { getActivityById } from "./activityService"; import { getActivityById } from "./activityService";
/** /**
@@ -19,8 +20,9 @@ import { getActivityById } from "./activityService";
playerRecord = await ActivityTurntableModel.refreshTodayCount(serverId, activityId, roleId); playerRecord = await ActivityTurntableModel.refreshTodayCount(serverId, activityId, roleId);
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new LuckyTurntableData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new LuckyTurntableData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -5,6 +5,7 @@ import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../../
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { MonopolyData } from '../../domain/activityField/monopolyField'; import { MonopolyData } from '../../domain/activityField/monopolyField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -25,8 +26,10 @@ export async function getMonopolyActivity(serverId: number, roleId: string) {
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityData.activityId, roleId); let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityData.activityId, roleId);
let playerLandData: ActivityMonopolyLandModelType[] = await ActivityMonopolyLandModel.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); playerData.setPlayerRecords(playerMonopolyData, playerLandData);
return playerData; 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 playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityData.activityId, roleId);
let playerLandData: ActivityMonopolyLandModelType[] = await ActivityMonopolyLandModel.findData(serverId, activityData.activityId, roleId); let playerLandData: ActivityMonopolyLandModelType[] = await ActivityMonopolyLandModel.findData(serverId, activityData.activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new MonopolyData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new MonopolyData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerMonopolyData, playerLandData); playerData.setPlayerRecords(playerMonopolyData, playerLandData);
return playerData; return playerData;
} }
@@ -14,6 +14,7 @@ import { DUNGEON_CONST, PVP, VIP } from '../../pubUtils/dicParam';
import { cal } from '../../pubUtils/util'; import { cal } from '../../pubUtils/util';
import { pinus } from 'pinus'; import { pinus } from 'pinus';
import { getGoldId } from '../role/rewardService'; 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 activityData = activityArray[0];
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId); let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new MonthlyTicketData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new MonthlyTicketData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
if ((playerData.price > 0 && playerData.isOpen) || playerData.price === 0) { 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) { export async function getPlayerMonthlyTicketData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId); let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new MonthlyTicketData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new MonthlyTicketData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; 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, export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName: string, sid: string, serverId: number,
activityId: number,) { activityId: number,) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new MonthlyTicketData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new MonthlyTicketData(activityData, createTime, serverTime);
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId); let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
if (playerData.price > 0 && !playerRecord) {//没有购买过 if (playerData.price > 0 && !playerRecord) {//没有购买过
@@ -117,8 +121,9 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string,
return STATUS.ACTIVITY_TYPE_ERROR; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new MonthlyTicketData(activityData, createTime); 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(); 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) console.log('endTime', playerData.isForever, moment(new Date()).startOf('d'), endTime, playerData.days)
@@ -4,6 +4,7 @@ import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/Act
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { NewHeroGKData } from '../../domain/activityField/newHeroGKField'; import { NewHeroGKData } from '../../domain/activityField/newHeroGKField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -23,8 +24,10 @@ export async function newHeroGKActivity(serverId: number, roleId: string) {
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityData.activityId, roleId); 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); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -42,8 +45,9 @@ export async function getPlayerNewHeroGKData(activityId: number, serverId: numbe
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId); let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new NewHeroGKData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new NewHeroGKData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
@@ -61,8 +65,10 @@ export async function challengeNewHeroGK(serverId: number, roleId: string, activ
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let playerRecords = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId); let playerRecords = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId);
let records = playerRecords && playerRecords.records ? playerRecords.records : []; 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); let item = playerData.findItemByGK(pageIndex, gk);
if (item) { if (item) {
let index = item.index; let index = item.index;
@@ -4,6 +4,7 @@ import { ActivityNewHeroGachaModel, ActivityNewHeroGachaModelType } from '../../
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { NewHeroGachaData } from '../../domain/activityField/newHeroGachaField'; import { NewHeroGachaData } from '../../domain/activityField/newHeroGachaField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -23,8 +24,9 @@ export async function newHeroGachaActivity(serverId: number, roleId: string) {
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let playerRecord: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findData(serverId, activityData.activityId, roleId); let playerRecord: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findData(serverId, activityData.activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new NewHeroGachaData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new NewHeroGachaData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -42,8 +44,9 @@ export async function getPlayerNewHeroGachaData(activityId: number, serverId: nu
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let playerRecord: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findData(serverId, activityId, roleId); let playerRecord: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findData(serverId, activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new NewHeroGachaData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new NewHeroGachaData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
@@ -5,6 +5,7 @@ import { NewHeroGiftData } from '../../domain/activityField/newHeroGiftField';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { 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) { export async function getPlayerNewHeroGiftsData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new NewHeroGiftData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new NewHeroGiftData(activityData, createTime, serverTime);
let playerRecord: ActivityNewHeroGiftModelType = await ActivityNewHeroGiftModel.findData(serverId, activityId, roleId); let playerRecord: ActivityNewHeroGiftModelType = await ActivityNewHeroGiftModel.findData(serverId, activityId, roleId);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
@@ -4,7 +4,7 @@ import moment = require('moment');
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivitiesByType, getActivityById, pushActivities, pushActivityInter } from './activityService'; import { getActivitiesByType, getActivityById, pushActivities, pushActivityInter } from './activityService';
import { ACTIVITY_TYPE } from '../../consts'; 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) { export async function getPlayerRechargeMoneyData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new RechargeMoneyData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new RechargeMoneyData(activityData, createTime, serverTime);
let beginTime = moment(playerData.beginTime).startOf('d').toDate(); let beginTime = moment(playerData.beginTime).startOf('d').toDate();
let endTime = moment(new Date()).endOf('d').toDate(); let endTime = moment(new Date()).endOf('d').toDate();
let playerRecord: ActivityRechargeMoneyModelType[] = await ActivityRechargeMoneyModel.findDataByTime(serverId, roleId, beginTime, endTime); let playerRecord: ActivityRechargeMoneyModelType[] = await ActivityRechargeMoneyModel.findDataByTime(serverId, roleId, beginTime, endTime);
@@ -6,7 +6,8 @@ import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RefreshShopData } from '../../domain/activityField/refreshShopField'; import { RefreshShopData } from '../../domain/activityField/refreshShopField';
import { deltaDays } from '../../pubUtils/util'; import { deltaDays } from '../../pubUtils/util';
import { getActivityById } from './activityService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivitiesByType, getActivityById } from './activityService';
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
/** /**
@@ -19,14 +20,14 @@ import { addReward, stringToRewardParam } from './giftPackageService';
*/ */
export async function getRefreshShopActivity(serverId: number, roleId: string) { export async function getRefreshShopActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.REFRESH_SHOP);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.REFRESH_SHOP, new Date)
if (activityArray.length == 0) { if (activityArray.length == 0) {
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new RefreshShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new RefreshShopData(activityData, createTime, serverTime);
let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityData.activityId, roleId, playerData.roundIndex); let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityData.activityId, roleId, playerData.roundIndex);
if (!playerRecord) {//生成商店可购买商品的数据 if (!playerRecord) {//生成商店可购买商品的数据
@@ -48,13 +49,14 @@ export async function getRefreshShopActivity(serverId: number, roleId: string) {
*/ */
export async function getPlayerRefreshShopData(activityId: number, serverId: number, roleId: string) { export async function getPlayerRefreshShopData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId, 'lv createTime');
let playerData = new RefreshShopData(activityData, 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); let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityId, roleId, playerData.roundIndex);
if (!playerRecord) {//生成商店可购买商品的数据 if (!playerRecord) {//生成商店可购买商品的数据
let { lv } = await RoleModel.findByRoleId(roleId); let randomGoods = playerData.randomGoodsItems(role.lv);
let randomGoods = playerData.randomGoodsItems(lv);
playerRecord = await ActivityRefreshShopModel.createShop(activityData.activityId, roleId, playerData.roundIndex, randomGoods); playerRecord = await ActivityRefreshShopModel.createShop(activityData.activityId, roleId, playerData.roundIndex, randomGoods);
} }
playerData.setPlayerRecords(playerRecord); 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) { export async function getPlayerRefreshShopDataByRoundIndex(activityId: number, serverId: number, roleId: string, roundIndex: number) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId, 'lv createTime');
let playerData = new RefreshShopData(activityData, createTime); let createTime = await getRoleCreateTime(roleId, role);
let serverTime = await getServerCreateTime(serverId);
let playerData = new RefreshShopData(activityData, createTime, serverTime);
playerData.roundIndex = roundIndex; playerData.roundIndex = roundIndex;
let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityId, roleId, playerData.roundIndex); let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityId, roleId, playerData.roundIndex);
if (!playerRecord) {//生成商店可购买商品的数据 if (!playerRecord) {//生成商店可购买商品的数据
let { lv } = await RoleModel.findByRoleId(roleId); let randomGoods = playerData.randomGoodsItems(role.lv);
let randomGoods = playerData.randomGoodsItems(lv);
playerRecord = await ActivityRefreshShopModel.createShop(activityData.activityId, roleId, playerData.roundIndex, randomGoods); playerRecord = await ActivityRefreshShopModel.createShop(activityData.activityId, roleId, playerData.roundIndex, randomGoods);
} }
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
@@ -121,8 +124,9 @@ export async function makeRefreshShopReward(roleId: string, roleName: string, si
if (activityData.type !== ACTIVITY_TYPE.REFRESH_SHOP) { if (activityData.type !== ACTIVITY_TYPE.REFRESH_SHOP) {
return STATUS.ACTIVITY_TYPE_ERROR; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new RefreshShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new RefreshShopData(activityData, createTime, serverTime);
if (roundIndex) { if (roundIndex) {
playerData.roundIndex = roundIndex; playerData.roundIndex = roundIndex;
} }
@@ -5,6 +5,7 @@ import { ActivityRefreshTaskPointModel, ActivityRefreshTaskPointModelType } from
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RefreshTaskData } from '../../domain/activityField/refreshTaskField'; import { RefreshTaskData } from '../../domain/activityField/refreshTaskField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
@@ -23,8 +24,9 @@ export async function getRefreshTaskActivity(serverId: number, roleId: string) {
return null; return null;
} }
let activityData: ActivityModelType = activityDataArray[0]; let activityData: ActivityModelType = activityDataArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new RefreshTaskData(activityData, createTime); 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 playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex);
let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityData.activityId, roleId); let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityData.activityId, roleId);
playerData.setPlayerRecords(playerRecords, pointRecordData); 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) { export async function getPlayerRefreshTaskData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new RefreshTaskData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new RefreshTaskData(activityData, createTime, serverTime);
let playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityId, roleId, playerData.roundIndex); let playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityId, roleId, playerData.roundIndex);
let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityId, roleId); let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityId, roleId);
playerData.setPlayerRecords(playerRecords, pointRecordData); playerData.setPlayerRecords(playerRecords, pointRecordData);
@@ -10,6 +10,7 @@ import { addReward, stringToRewardParam } from './giftPackageService';
import moment = require('moment'); import moment = require('moment');
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { 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) { export async function getPlayerActivityData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SelfServiceShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
let playerRecords: ActivitySelfServiceShopModelType[] = await ActivitySelfServiceShopModel.findDataByPriceType(serverId, activityId, roleId, playerData.roundIndex); 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, code: STATUS.ACTIVITY_MISSING,
} }
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SelfServiceShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
let item: SelfServiceShopItem = playerData.getItemByProductID(productID); let item: SelfServiceShopItem = playerData.getItemByProductID(productID);
if (!item) { if (!item) {
return { return {
@@ -8,6 +8,7 @@ import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from '
import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts'; import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../../db/ActivityDailyGifts';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { 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) { export async function getPlayerSevenDaysData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SevenDaysData(activityData, createTime) let serverTime = await getServerCreateTime(serverId);
let playerData = new SevenDaysData(activityData, createTime, serverTime);
//成长数据 //成长数据
let playerGrowthRecords: ActivityGrowthModelType[] = await ActivityGrowthModel.findData(serverId, activityId, roleId); let playerGrowthRecords: ActivityGrowthModelType[] = await ActivityGrowthModel.findData(serverId, activityId, roleId);
let playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityId, roleId); let playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityId, roleId);
@@ -5,6 +5,7 @@ import { ActivitySignInModel, ActivitySignInModelType } from '../../db/ActivityS
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { SignInData } from '../../domain/activityField/signInField'; import { SignInData } from '../../domain/activityField/signInField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
/** /**
@@ -23,8 +24,9 @@ export async function signInActivity(serverId: number, roleId: string) {
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SignInData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SignInData(activityData, createTime, serverTime);
let curDate = moment(new Date()).valueOf(); let curDate = moment(new Date()).valueOf();
if (curDate < playerData.beginTime || curDate > playerData.endTime) {//未开启 if (curDate < playerData.beginTime || curDate > playerData.endTime) {//未开启
return null; return null;
@@ -50,8 +52,9 @@ export async function signInVIPActivity(serverId: number, roleId: string) {
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SignInData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SignInData(activityData, createTime, serverTime);
let curDate = moment(new Date()).valueOf(); let curDate = moment(new Date()).valueOf();
if (curDate < playerData.beginTime || curDate > playerData.endTime) {//未开启 if (curDate < playerData.beginTime || curDate > playerData.endTime) {//未开启
@@ -80,8 +83,9 @@ export async function newPlayerSignInActivity(serverId: number, roleId: string)
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SignInData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SignInData(activityData, createTime, serverTime);
let betinTime = null; let betinTime = null;
let endTime = null let endTime = null
@@ -122,8 +126,10 @@ export async function getPlayerSignInData(activityId: number, serverId: number,
&& activityData.type !== ACTIVITY_TYPE.COMMON_SIGN_IN) { && activityData.type !== ACTIVITY_TYPE.COMMON_SIGN_IN) {
return null; return null;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SignInData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SignInData(activityData, createTime, serverTime);
let playerRecords: ActivitySignInModelType = await ActivitySignInModel.findData(activityId, roleId, playerData.roundIndex); let playerRecords: ActivitySignInModelType = await ActivitySignInModel.findData(activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecords(playerRecords); 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) { if (activityData.type !== ACTIVITY_TYPE.SIGN_IN_VIP) {
return STATUS.ACTIVITY_TYPE_ERROR; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new SignInData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new SignInData(activityData, createTime, serverTime);
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex); await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);
@@ -3,13 +3,15 @@ import { ActivityModelType } from "../../db/Activity";
import { ActivityTaskPassModel } from "../../db/ActivityTaskPass"; import { ActivityTaskPassModel } from "../../db/ActivityTaskPass";
import { RoleModel } from "../../db/Role"; import { RoleModel } from "../../db/Role";
import { TaskPassData } from "../../domain/activityField/taskPassField"; import { TaskPassData } from "../../domain/activityField/taskPassField";
import { getRoleCreateTime, getServerCreateTime } from "../redisService";
import { getActivityById } from "./activityService"; import { getActivityById } from "./activityService";
export async function getTaskPassData(activityId: number, serverId: number, roleId: string) { export async function getTaskPassData(activityId: number, serverId: number, roleId: string) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TaskPassData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TaskPassData(activityData, createTime, serverTime);
let record = await ActivityTaskPassModel.findData(serverId, activityId, roleId, playerData.roundIndex); let record = await ActivityTaskPassModel.findData(serverId, activityId, roleId, playerData.roundIndex);
playerData.setPlayerRecord(record); playerData.setPlayerRecord(record);
@@ -43,8 +45,9 @@ export async function getTaskPassDataShow(activityId: number, serverId: number,
if (activityData.type !== ACTIVITY_TYPE.TASK_PASS) { if (activityData.type !== ACTIVITY_TYPE.TASK_PASS) {
return STATUS.ACTIVITY_TYPE_ERROR; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TaskPassData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TaskPassData(activityData, createTime, serverTime);
let roundIndex = playerData.roundIndex; let roundIndex = playerData.roundIndex;
await ActivityTaskPassModel.buy(serverId, activityId, roleId, roundIndex, productID); await ActivityTaskPassModel.buy(serverId, activityId, roleId, roundIndex, productID);
return { 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) { export async function addTaskPassPoint(serverId: number, activityId: number, roleId: string, addPoint: number) {
let activity = await getActivityById(activityId); let activity = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let data = new TaskPassData(activity, createTime); let serverTime = await getServerCreateTime(serverId);
let data = new TaskPassData(activity, createTime, serverTime);
let result = await ActivityTaskPassModel.addPoint(serverId, activityId, roleId, data.roundIndex, addPoint); let result = await ActivityTaskPassModel.addPoint(serverId, activityId, roleId, data.roundIndex, addPoint);
return result.totalPoint; return result.totalPoint;
} }
@@ -7,6 +7,7 @@ import moment = require('moment');
import { deltaDays } from '../../pubUtils/util'; import { deltaDays } from '../../pubUtils/util';
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { getActivityById } from './activityService'; import { 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 playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activityId, roleId);
let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId); let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId);
let createTime = await getRoleCreateTime(roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let serverTime = await getServerCreateTime(serverId);
let playerData = new ThirtyDaysData(activityData, createTime); let playerData = new ThirtyDaysData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecords); playerData.setPlayerRecords(playerRecords);
playerData.setPlayerPointRecords(playerPointRecords); 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 playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activityId, roleId);
let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId); let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new ThirtyDaysData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new ThirtyDaysData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecords); playerData.setPlayerRecords(playerRecords);
playerData.setPlayerPointRecords(playerPointRecords); playerData.setPlayerPointRecords(playerPointRecords);
return playerData; return playerData;
@@ -7,6 +7,7 @@ import { TimeLimitRankData } from "../../domain/activityField/timeLimitRankField
import { GuildRankInfo, RoleRankInfo } from "../../domain/rank"; import { GuildRankInfo, RoleRankInfo } from "../../domain/rank";
import { sendMailByContent, sendMailToGuildByContent } from "../mailService"; import { sendMailByContent, sendMailToGuildByContent } from "../mailService";
import { Rank } from "../rankService"; import { Rank } from "../rankService";
import { getServerCreateTime } from "../redisService";
import { getActivitiesByType, getActivityById } from "./activityService"; import { getActivitiesByType, getActivityById } from "./activityService";
import { stringToRewardInter } from "./giftPackageService"; import { stringToRewardInter } from "./giftPackageService";
@@ -19,15 +20,16 @@ import { stringToRewardInter } from "./giftPackageService";
* @param {string} roleId 角色Id * @param {string} roleId 角色Id
* *
*/ */
export async function getTimeLimitRankData(activityId: number) { export async function getTimeLimitRankData(activityId: number, serverId: number) {
let activityData = await getActivityById(activityId); 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; return playerData;
} }
export async function getTimeLimitRankDataShow(activityId: number) { export async function getTimeLimitRankDataShow(activityId: number, serverId: number) {
let playerData = await getTimeLimitRankData(activityId); let playerData = await getTimeLimitRankData(activityId, serverId);
if(playerData && playerData.canShow && playerData.canShow()) { if(playerData && playerData.canShow && playerData.canShow()) {
return playerData.getShowResult(); return playerData.getShowResult();
} }
@@ -44,7 +46,7 @@ export async function getTimeLimitRankDataShow(activityId: number) {
export async function recordGuildFund(serverId: number, guild: GuildType, fund: number) { export async function recordGuildFund(serverId: number, guild: GuildType, fund: number) {
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TIME_LIMIT_RANK); let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TIME_LIMIT_RANK);
for(let activity of activities) { 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) { if(playerData.canRecord() && playerData.rankType == RANK_TYPE.GUILD_FUND) {
await ActivityTimeLimitRankModel.addGuildScore(serverId, playerData.activityId, playerData.rankType, guild.code, fund, guild._id); 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} 活动数据 * @param data {TimeLimitRankData} 活动数据
* @returns * @returns
*/ */
export async function sendRankMail(data: TimeLimitRankData) { export async function sendRankMail(data: TimeLimitRankData, serverId: number) {
let group = await ActivityGroupModel.findGroupData(data.groupId); let redisKey = getRedisKeyByRankType(data.rankType, true);
let serverIds = group?.serverIds||[]; console.log('#### redisKey', redisKey, serverId)
for(let serverId of serverIds) { if (!redisKey) return null;
let redisKey = getRedisKeyByRankType(data.rankType, true); let r = new Rank(redisKey, { activityId: data.activityId, serverId });
console.log('#### redisKey', redisKey, serverId) console.log('#### getRankByRange',r.infoKey, await r.getRankByRange())
if (!redisKey) return null; if(r.infoKey == REDIS_KEY.GUILD_INFO) {
let r = new Rank(redisKey, { activityId: data.activityId, serverId }); let allRank = <GuildRankInfo[]>(await r.getRankByRange());
console.log('#### getRankByRange',r.infoKey, await r.getRankByRange())
if(r.infoKey == REDIS_KEY.GUILD_INFO) { for(let { rank, code, name, leader } of allRank) {
let allRank = <GuildRankInfo[]>(await r.getRankByRange()); let reward = data.getRewardByRank(rank);
if(reward) {
for(let { rank, code, name, leader } of allRank) { await sendMailToGuildByContent(MAIL_TYPE.TIME_LIMIT_RANK, code, {
let reward = data.getRewardByRank(rank); params: [data.tabName,`${rank}`],
if(reward) { goods: stringToRewardInter(reward.guildRewards)
await sendMailToGuildByContent(MAIL_TYPE.TIME_LIMIT_RANK, code, { });
params: [data.tabName,`${rank}`], if(leader.roleId) await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, leader.roleId, {
goods: stringToRewardInter(reward.guildRewards) params: [data.tabName,`${rank}`],
}); goods: stringToRewardInter(reward.rewards)
if(leader.roleId) await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, leader.roleId, { });
params: [data.tabName,`${rank}`],
goods: stringToRewardInter(reward.rewards)
});
}
} }
} else { }
let allRank = <RoleRankInfo[]>(await r.getRankByRange()); } else {
let allRank = <RoleRankInfo[]>(await r.getRankByRange());
for(let { rank, roleId } of allRank) {
let reward = data.getRewardByRank(rank); for(let { rank, roleId } of allRank) {
if(reward) { let reward = data.getRewardByRank(rank);
await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, roleId, { if(reward) {
params: [data.tabName, `${rank}`], await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, roleId, {
goods: stringToRewardInter(reward.rewards) 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 redisKey = getRedisKeyByRankType(data.rankType);
let targetRedisKey = getRedisKeyByRankType(data.rankType, true); let targetRedisKey = getRedisKeyByRankType(data.rankType, true);
if (!redisKey || !targetRedisKey || redisKey == targetRedisKey) return null; if (!redisKey || !targetRedisKey || redisKey == targetRedisKey) return null;
let activityGroup = await ActivityGroupModel.findGroupData(groupId);
let serverIds = activityGroup? activityGroup.serverIds: [];
let insertInfos: ActivityTimeLimitRankModelTypeParam[] = []; let insertInfos: ActivityTimeLimitRankModelTypeParam[] = [];
for(let serverId of serverIds) { let r = new Rank(redisKey, { serverId, activityId: data.activityId });
let r = new Rank(redisKey, { serverId, activityId: data.activityId }); let allRank = await r.getRankDataByRankWithoutDetail();
let allRank = await r.getRankDataByRankWithoutDetail(); let targetR = new Rank(targetRedisKey, { serverId, activityId: data.activityId });
let targetR = new Rank(targetRedisKey, { serverId, activityId: data.activityId }); for(let rank of allRank) {
for(let rank of allRank) { await targetR.setRank(rank.myId, rank.scores);
await targetR.setRank(rank.myId, rank.scores);
let insertBaseInfo = { let insertBaseInfo = {
serverId, activityId: data.activityId, rankType: data.rankType, score: rank.scores[0]||0, time: rank.scores[1]||0 serverId, activityId: data.activityId, rankType: data.rankType, score: rank.scores[0]||0, time: rank.scores[1]||0
} }
if(rank.myId.roleId) { if(rank.myId.roleId) {
let role = await RoleModel.findByRoleId(rank.myId.roleId, '_id roleId'); let role = await RoleModel.findByRoleId(rank.myId.roleId, '_id roleId');
if(role) insertInfos.push({ ...insertBaseInfo, roleId: role.roleId, role: role._id }); if(role) insertInfos.push({ ...insertBaseInfo, roleId: role.roleId, role: role._id });
} else if(rank.myId.guildCode) { } else if(rank.myId.guildCode) {
let guild = await GuildModel.findByCode(rank.myId.guildCode, serverId, '_id guildCode'); let guild = await GuildModel.findByCode(rank.myId.guildCode, serverId, '_id guildCode');
if(guild) insertInfos.push({ ...insertBaseInfo, guildCode: guild.code, guild: guild._id }); if(guild) insertInfos.push({ ...insertBaseInfo, guildCode: guild.code, guild: guild._id });
}
} }
} }
await ActivityTimeLimitRankModel.insertRanks(insertInfos); await ActivityTimeLimitRankModel.insertRanks(insertInfos);
@@ -13,6 +13,7 @@ import { addReward, stringToRewardParam } from './giftPackageService';
import { RewardParam } from '../../domain/activityField/rewardField'; import { RewardParam } from '../../domain/activityField/rewardField';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
/** /**
* 获取活动数据 * 获取活动数据
@@ -29,8 +30,9 @@ export async function treasureHuntActivity(serverId: number, roleId: string) {
return null; return null;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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; return null;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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) { export async function getPlayerTreasureHuntData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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) { export async function getPlayerTreasureHuntFirstPageData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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) { export async function getPlayerTreasureHuntShopData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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) { export async function getPlayerTreasureHuntTaskData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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) { export async function getPlayerTreasureHuntChallengeData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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) { export async function getPlayerTreasureHuntTreasureShopData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await getActivityById(activityId); let activityData: ActivityModelType = await getActivityById(activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new TreasureHuntData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; 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 huntRoundIndex: number = 0; // 寻宝骑兵-周期数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序 let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序
let treasureHuntDataArray: TreasureHuntData[] = []; let treasureHuntDataArray: TreasureHuntData[] = [];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId);
for (let obj of activityArray) { for (let obj of activityArray) {
treasureHuntDataArray.push(new TreasureHuntData(obj, createTime)); treasureHuntDataArray.push(new TreasureHuntData(obj, createTime, serverTime));
} }
let isOver = false; let isOver = false;
let huntBeginTime = moment(SERVER_OPEN_TIME).startOf('d').add(1, 'd').toDate(); 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 huntRoundIndex: number = oldHuntRoundIndex; // 寻宝骑兵-周期数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序 let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序
let treasureHuntDataArray: TreasureHuntData[] = []; let treasureHuntDataArray: TreasureHuntData[] = [];
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId);
for (let obj of activityArray) { for (let obj of activityArray) {
treasureHuntDataArray.push(new TreasureHuntData(obj, createTime)); treasureHuntDataArray.push(new TreasureHuntData(obj, createTime, serverTime));
} }
let isOver = false; let isOver = false;
let huntBeginTime = moment(oldHuntEndTime).add(1, 'd').startOf('d').toDate(); let huntBeginTime = moment(oldHuntEndTime).add(1, 'd').startOf('d').toDate();
@@ -5,6 +5,7 @@ import { VipRechargeMoneyData } from '../../domain/activityField/vipRechargeMone
import { ServerlistModel } from '../../db/Serverlist'; import { ServerlistModel } from '../../db/Serverlist';
import { RoleModel } from '../../db/Role'; import { RoleModel } from '../../db/Role';
import { getActivityById } from './activityService'; import { 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 activityData = activityArray[0];
let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityData.activityId); 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); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -44,8 +47,9 @@ export async function getPlayerVipRechargeMoneyData(activityId: number, serverId
} }
let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityId); let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new VipRechargeMoneyData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new VipRechargeMoneyData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -5,6 +5,7 @@ import { ServerlistModel } from '../../db/Serverlist';
import { UserOrderModel, UserOrderModelType } from '../../db/UserOrder'; import { UserOrderModel, UserOrderModelType } from '../../db/UserOrder';
import { RewardParam } from '../../domain/activityField/rewardField'; import { RewardParam } from '../../domain/activityField/rewardField';
import { YuanBaoShopData } from '../../domain/activityField/yuanBaoShopField'; import { YuanBaoShopData } from '../../domain/activityField/yuanBaoShopField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivityById } from './activityService'; import { getActivityById } from './activityService';
import { addReward, stringToRewardParam } from './giftPackageService'; import { addReward, stringToRewardParam } from './giftPackageService';
@@ -25,8 +26,10 @@ export async function yuanbaoActivity(serverId: number, roleId: string) {
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityData.activityId, roleId); 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); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -43,8 +46,9 @@ export async function getPlayerYuanbaoShopData(activityId: number, serverId: num
let activityData = await getActivityById(activityId); let activityData = await getActivityById(activityId);
let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityId, roleId); let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityId, roleId);
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new YuanBaoShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new YuanBaoShopData(activityData, createTime, serverTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
return playerData; return playerData;
} }
@@ -66,8 +70,9 @@ export async function makeYuanbaoShopReward(roleId: string, roleName: string, si
if (activityData.type !== ACTIVITY_TYPE.YUAN_BAO_SHOP) { if (activityData.type !== ACTIVITY_TYPE.YUAN_BAO_SHOP) {
return STATUS.ACTIVITY_TYPE_ERROR; return STATUS.ACTIVITY_TYPE_ERROR;
} }
let { createTime } = await RoleModel.findByRoleId(roleId); let createTime = await getRoleCreateTime(roleId);
let playerData = new YuanBaoShopData(activityData, createTime); let serverTime = await getServerCreateTime(serverId);
let playerData = new YuanBaoShopData(activityData, createTime, serverTime);
let item = playerData.findItem(productID); let item = playerData.findItem(productID);
let rewardParamArr: Array<RewardParam> = []; let rewardParamArr: Array<RewardParam> = [];
+9 -9
View File
@@ -218,21 +218,21 @@ export function getActivityProducts(activity: ActivityModelType) {
switch(activity.type) { switch(activity.type) {
case ACTIVITY_TYPE.SIGN_IN_VIP: // 高级签到 case ACTIVITY_TYPE.SIGN_IN_VIP: // 高级签到
{ {
let data = new SignInData(activity, 0); let data = new SignInData(activity, 0, 0);
return [getDicRMB(data.productID)]; return [getDicRMB(data.productID)];
} }
case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE: // 新手限定RMB购买礼包 case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE: // 新手限定RMB购买礼包
case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY: // 日限购 case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY: // 日限购
case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY: // 周限购 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 data.list.map(item => {
return getDicRMB(item.productID); return getDicRMB(item.productID);
}); });
} }
case ACTIVITY_TYPE.YUAN_BAO_SHOP: // 元宝 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 data.list.map(item => {
return getDicRMB(item.productID); return getDicRMB(item.productID);
}); });
@@ -240,12 +240,12 @@ export function getActivityProducts(activity: ActivityModelType) {
case ACTIVITY_TYPE.MONTHLY_TICKET_1: case ACTIVITY_TYPE.MONTHLY_TICKET_1:
case ACTIVITY_TYPE.MONTHLY_TICKET_2: case ACTIVITY_TYPE.MONTHLY_TICKET_2:
{ {
let data = new MonthlyTicketData(activity, 0); let data = new MonthlyTicketData(activity, 0, 0);
return [getDicRMB(data.productID)]; return [getDicRMB(data.productID)];
} }
case ACTIVITY_TYPE.DAILY_RMB_GIFTS: case ACTIVITY_TYPE.DAILY_RMB_GIFTS:
{ {
let data = new DailyRMBGiftsData(activity, 0); let data = new DailyRMBGiftsData(activity, 0, 0);
return [getDicRMB(data.productID)]; return [getDicRMB(data.productID)];
} }
case ACTIVITY_TYPE.POP_UP_SHOP://弹出礼包 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_TOWER_VIP://镇念塔成长基金(高阶)
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_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 data.list.map(item => {
return getDicRMB(item.productID); return getDicRMB(item.productID);
}); });
} }
case ACTIVITY_TYPE.TREASURE_HUNT: case ACTIVITY_TYPE.TREASURE_HUNT:
{ {
let data = new TreasureHuntData(activity, 0); let data = new TreasureHuntData(activity, 0, 0);
let shop = data.shop; let shop = data.shop;
return shop.list.map(item => { return shop.list.map(item => {
return getDicRMB(item.productID); return getDicRMB(item.productID);
@@ -278,7 +278,7 @@ export function getActivityProducts(activity: ActivityModelType) {
} }
case ACTIVITY_TYPE.REFRESH_SHOP: case ACTIVITY_TYPE.REFRESH_SHOP:
{ {
let data = new RefreshShopData(activity, 0); let data = new RefreshShopData(activity, 0, 0);
let products: { label: string, value: string }[] = []; let products: { label: string, value: string }[] = [];
for(let shop of data.list) { for(let shop of data.list) {
for(let item of shop.items) { 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 { activityGroupId } = await ServerlistModel.findByServerId(role.serverId);
let monopolyActivitys = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.MONOPOLY, 1); let monopolyActivitys = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.MONOPOLY, 1);
let parentActivity = monopolyActivitys.find(activity => { let parentActivity = monopolyActivitys.find(activity => {
let data = new MonopolyData(activity, 0); let data = new MonopolyData(activity, 0, 0);
let curShop = data.list.find(land => { // 找到关联活动 let curShop = data.list.find(land => { // 找到关联活动
return land.shopActivityId == activity.activityId; return land.shopActivityId == activity.activityId;
}); });
+13 -9
View File
@@ -13,7 +13,7 @@ import { getRandSingleEelm } from '../pubUtils/util';
import { ActivityModel } from '../db/Activity'; import { ActivityModel } from '../db/Activity';
import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField'; import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField';
import { ActivityTimeLimitRankModel } from '../db/ActivityTimeLimitRank'; import { ActivityTimeLimitRankModel } from '../db/ActivityTimeLimitRank';
import { RoleType } from '../db/Role'; import { RoleModel, RoleType } from '../db/Role';
import { GuildType } from '../db/Guild'; import { GuildType } from '../db/Guild';
/** /**
@@ -75,9 +75,10 @@ export async function initRank(serverId: number) {
} }
export async function initActivitiesRank(serverId: number, activityGroupId: 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()); let activities = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TIME_LIMIT_RANK, new Date());
for(let activity of activities) { for(let activity of activities) {
let data = new TimeLimitRankData(activity, 0); let data = new TimeLimitRankData(activity, 0, serverTime);
if(data.beginTime <= Date.now() && data.endTime >= Date.now()) { if(data.beginTime <= Date.now() && data.endTime >= Date.now()) {
let redisKey = getRedisKeyByRankType(data.rankType, true); 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); let onlineInfo = await getRoleOnlineInfo(roleId);
if(onlineInfo.isOnline) { if(onlineInfo.isOnline) {
return onlineInfo.createtime; return onlineInfo.createtime;
} else { } else {
return null let role = await RoleModel.findByRoleId(roleId);
return role?.createTime||0;
} }
} }
@@ -451,10 +455,12 @@ export async function readDataBase() {
async function setServerList() { async function setServerList() {
const serverList = await ServerlistModel.getAllServerList(); const serverList = await ServerlistModel.getAllServerList();
await redisClient().delAsync(REDIS_KEY.SERVER); await redisClient().delAsync(REDIS_KEY.SERVER);
await redisClient().delAsync(REDIS_KEY.SERVER_OPEN_TIME);
for(let { id, name, openTime } of serverList) { for(let { id, name, openTime } of serverList) {
// console.log(roleId); // 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) { export async function getServerName(serverId: number) {
let value = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`); let name = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`);
let name = value.split('|')[0];
return name||'常山少年' return name||'常山少年'
} }
export async function getServerCreateTime(serverId: number) { export async function getServerCreateTime(serverId: number) {
let value = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`); let time = await redisClient().hgetAsync(REDIS_KEY.SERVER_OPEN_TIME, `${serverId}`);
let time = value.split('|')[1];
return parseInt(time); return parseInt(time);
} }
+30 -29
View File
@@ -4,7 +4,7 @@ import { PVPConfigModel, PVPConfigType } from '../db/SystemConfig';
import { nowSeconds, getTimeFun, getSeconds } from '../pubUtils/timeUtil'; import { nowSeconds, getTimeFun, getSeconds } from '../pubUtils/timeUtil';
import { getTodayGuildActivity, gameData } from '../pubUtils/data'; import { getTodayGuildActivity, gameData } from '../pubUtils/data';
import { pvpSeasonEnd } from './pvpService'; 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 { GUILD_ACTIVITY_TYPE, REFRESH_TIME, COUNTER, AUCTION_TIME, GM_MAIL_TYPE, SERVER_TIMER, ACTIVITY_TYPE } from '../consts';
import { pinus } from 'pinus'; import { pinus } from 'pinus';
import { settleGuildWeekly } from './guildService'; import { settleGuildWeekly } from './guildService';
@@ -33,6 +33,7 @@ import { ServerMailModel, ServerMailType } from '../db/ServerMail';
import { ActivityModel, ActivityModelType } from '../db/Activity'; import { ActivityModel, ActivityModelType } from '../db/Activity';
import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField'; import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField';
import { sendRankMail, takeSnapshot } from './activity/timeLimitRankService'; import { sendRankMail, takeSnapshot } from './activity/timeLimitRankService';
import { getActivitiesByType } from './activity/activityService';
const PER_SECOND = 1 * 1000; const PER_SECOND = 1 * 1000;
const PER_DAY = 24 * 60 * 60; const PER_DAY = 24 * 60 * 60;
@@ -679,51 +680,51 @@ async function autoCreateServerSchedule(region: RegionType) {
// —————————————— 活动 start —————————————— // // —————————————— 活动 start —————————————— //
async function initTimeLimitRank() { async function initTimeLimitRank() {
let servers = await ServerlistModel.findByEnv(pinus.app.get('env')); let servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
let activityGroupId: number[] = []; for(let { serverId } of servers) {
for(let { activityGroupId: ids } of servers) { let serverTime = await getServerCreateTime(serverId);
for(let id of ids) { let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TIME_LIMIT_RANK);
if(activityGroupId.indexOf(id) == -1) activityGroupId.push(id); for(let activity of activities) {
} let data = new TimeLimitRankData(activity, 0, serverTime);
} if(data.sendMailTime > Date.now()) {
let activities = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TIME_LIMIT_RANK, 1); await setSendRankMailSchedule(data, serverId);
for(let activity of activities) { }
let data = new TimeLimitRankData(activity, 0); if(data.rankEndTime > Date.now() && data.needSnapshot()) {
if(data.sendMailTime > Date.now()) { await setTakeRankSnapshotSchedule(data, serverId);
await setSendRankMailSchedule(data); }
}
if(data.rankEndTime > Date.now() && data.needSnapshot()) {
await setTakeRankSnapshotSchedule(data, activity.groupId);
} }
} }
} }
export async function updateTimeLimitRank(activities: ActivityModelType[]) { export async function updateTimeLimitRank(activities: ActivityModelType[]) {
for(let activity of activities) { let servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
let data = new TimeLimitRankData(activity, 0); for(let { serverId, openTime } of servers) {
if(data.sendMailTime > Date.now()) { for(let activity of activities) {
await setSendRankMailSchedule(data); let data = new TimeLimitRankData(activity, 0, openTime);
} if(data.sendMailTime > Date.now()) {
if(data.rankEndTime > Date.now() && data.needSnapshot()) { await setSendRankMailSchedule(data, serverId);
await setTakeRankSnapshotSchedule(data, activity.groupId); }
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 ########') console.log('########### setSendRankMailSchedule1 ########')
if(scheduledJobs[`rankMail${data.activityId}`]) { if(scheduledJobs[`rankMail_${serverId}_${data.activityId}`]) {
scheduledJobs[`rankMail${data.activityId}`].cancel(); scheduledJobs[`rankMail_${serverId}_${data.activityId}`].cancel();
} }
scheduleJob(`rankMail${data.activityId}`, data.sendMailTime, async () => { scheduleJob(`rankMail_${serverId}_${data.activityId}`, data.sendMailTime, async () => {
console.log('########### setSendRankMailSchedule2 ########') 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 ########') console.log('########### setTakeRankSnapshotSchedule1 ########')
if(scheduledJobs[`snapshot${data.activityId}`]) { if(scheduledJobs[`snapshot${data.activityId}`]) {
@@ -732,7 +733,7 @@ async function setTakeRankSnapshotSchedule(data: TimeLimitRankData, groupId: num
scheduleJob(`snapshot${data.activityId}`, data.rankEndTime, async () => { scheduleJob(`snapshot${data.activityId}`, data.rankEndTime, async () => {
console.log('########### setTakeRankSnapshotSchedule2 ########') console.log('########### setTakeRankSnapshotSchedule2 ########')
await takeSnapshot(data, groupId); await takeSnapshot(data, serverId);
}) })
} }
// —————————————— 活动 end —————————————— // // —————————————— 活动 end —————————————— //
+1
View File
@@ -212,6 +212,7 @@ export enum REDIS_KEY {
GUILD_INFO ="guildInfo", // 公会信息 GUILD_INFO ="guildInfo", // 公会信息
GUILD_ACTIVE_RANK ="guildActiveRank", // 公会周活跃排行榜 GUILD_ACTIVE_RANK ="guildActiveRank", // 公会周活跃排行榜
SERVER ='server', // 服务器列表 SERVER ='server', // 服务器列表
SERVER_OPEN_TIME = 'serverOpenTime', // 服务器开服时间
ONLINE_USERS ='onlineUsers', // 在线用户情况 ONLINE_USERS ='onlineUsers', // 在线用户情况
ONLINE_TIME ='onlineTime', // 玩家在线时间 ONLINE_TIME ='onlineTime', // 玩家在线时间
CHANNEL_SERVERS ='chat:channelServers', // 渠道对应的 chat 服务器 Id, CHANNEL_SERVERS ='chat:channelServers', // 渠道对应的 chat 服务器 Id,
+2 -2
View File
@@ -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.activityId = activityData.activityId;
this.groupId = activityData.groupId; this.groupId = activityData.groupId;
this.delayDay = activityData.delayDay ? activityData.delayDay : 0; this.delayDay = activityData.delayDay ? activityData.delayDay : 0;
@@ -62,7 +62,7 @@ export abstract class ActivityBase {
console.log('***** activityData', activityData.timeType) console.log('***** activityData', activityData.timeType)
switch (activityData.timeType) { switch (activityData.timeType) {
case ACTIVITY_TIME_TYPE.SERVER_OPEN_TIME: { 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) { if (activityData.days > 0) {
this.endTime = moment(this.beginTime).add(activityData.days, 'd').valueOf(); this.endTime = moment(this.beginTime).add(activityData.days, 'd').valueOf();
} else { } else {
@@ -73,8 +73,8 @@ export class DailyChallengesData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -110,8 +110,8 @@ export class DailyCoinData extends ActivityBase {
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
+2 -2
View File
@@ -55,8 +55,8 @@ export class DailyGKData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -72,8 +72,8 @@ export class DailyGiftsData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -66,8 +66,8 @@ export class DailyMealData extends ActivityBase {
// console.log('ddddddddddddbbbbbbb') // console.log('ddddddddddddbbbbbbb')
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime);
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -100,8 +100,8 @@ export class DailyRMBGiftsData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -143,8 +143,8 @@ export class FirstGiftData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
+2 -2
View File
@@ -38,8 +38,8 @@ export class GachaData extends ActivityBase {
this.floor = userGacha.floor; this.floor = userGacha.floor;
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
} }
} }
+2 -2
View File
@@ -149,8 +149,8 @@ export class GrowthData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -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) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
+1 -1
View File
@@ -42,7 +42,7 @@ export class GuildPayData extends ActivityBase {
payMemberCnt: number = 0; payMemberCnt: number = 0;
payRecord: string[] = []; payRecord: string[] = [];
constructor(activityData: ActivityModelType, createTime: number, serverTime?: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime, serverTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
@@ -90,8 +90,8 @@ export class LimitShopData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -182,8 +182,8 @@ export class LuckyTurntableData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
+2 -2
View File
@@ -68,8 +68,8 @@ export class MonopolyData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -36,8 +36,8 @@ export class MonthlyTicketData extends ActivityBase {
isOpen: boolean = false; // 是否开启中 isOpen: boolean = false; // 是否开启中
todayIndex: number = 0; // 现在可以领取第几天的奖励 todayIndex: number = 0; // 现在可以领取第几天的奖励
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data); this.initData(activityData.data);
this.isForever = activityData.type == ACTIVITY_TYPE.MONTHLY_TICKET_2; this.isForever = activityData.type == ACTIVITY_TYPE.MONTHLY_TICKET_2;
} }
@@ -97,8 +97,8 @@ export class NewHeroGKData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -72,8 +72,8 @@ export class NewHeroGachaData extends ActivityBase {
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -64,8 +64,8 @@ export class NewHeroGiftData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -61,7 +61,7 @@ export class PopUpShopData extends ActivityBase {
maxPrice: number = 0; // 礼包上限 maxPrice: number = 0; // 礼包上限
constructor(activityData: ActivityModelType) { constructor(activityData: ActivityModelType) {
super(activityData, 0); super(activityData, 0, 0);
this.initData(activityData.data) this.initData(activityData.data)
} }
@@ -134,8 +134,8 @@ export class RechargeMoneyData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -169,8 +169,8 @@ export class RefreshShopData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -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) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
@@ -104,8 +104,8 @@ export class SelfServiceShopData extends ActivityBase {
this.roundIndex = Math.ceil(this.todayIndex / this.days); this.roundIndex = Math.ceil(this.todayIndex / this.days);
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
+2 -2
View File
@@ -108,8 +108,8 @@ export class SignInData extends ActivityBase {
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
+2 -2
View File
@@ -146,8 +146,8 @@ export class TaskPassData extends ActivityBase {
totalPoint: number = 0; totalPoint: number = 0;
map: Map<number, number> = new Map(); // pageIndex => rewards的index map: Map<number, number> = new Map(); // pageIndex => rewards的index
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
@@ -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) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
@@ -83,8 +83,8 @@ export class TimeLimitRankData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime);
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -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); super(activityData, createTime, sererTime);
this.initData(activityData.data) this.initData(activityData.data)
} }
@@ -61,8 +61,8 @@ export class VipRechargeMoneyData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }
@@ -62,8 +62,8 @@ export class YuanBaoShopData extends ActivityBase {
} }
} }
constructor(activityData: ActivityModelType, createTime: number) { constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime) super(activityData, createTime, serverTime)
this.initData(activityData.data) this.initData(activityData.data)
} }
} }