diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts index 9bfd9daa9..a21c551c0 100644 --- a/game-server/app/servers/activity/handler/activityHandler.ts +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -1,6 +1,6 @@ import { Application, BackendSession } from 'pinus'; import { resResult } from '../../../pubUtils/util'; -import { ACTIVITY_TYPE, FIRST_GIFT_STATE, STATUS } from '../../../consts'; +import { ACTIVITY_TYPE, FIRST_GIFT_STATE, SERVER_OPEN_TIME, STATUS } from '../../../consts'; import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService'; import { signInActivity, signInVIPActivity } from '../../../services/signInService'; import { growthFundActivity } from '../../../services/growthFundService'; @@ -10,6 +10,8 @@ import { dailyChallengesActivity } from '../../../services/dailyChallengesServic import { dailyGiftsActivity } from '../../../services/dailyGiftsService'; import { yuanbaoActivity } from '../../../services/yuanbaoService'; import { monthlyTicketActivity } from '../../../services/monthlyTicketService'; +import { rechargeMoneyActivity } from '../../../services/rechargeMoneyService'; +import moment = require('moment'); export default function (app: Application) { return new ActivityHandler(app); @@ -172,13 +174,16 @@ export class ActivityHandler { //新手限定RMB购买礼包 15 { - let data = await newPlayerLimitPackageActivity(serverId, roleId); - if (data) { - playerActivityArray.push({ - type: ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, - activityId: data.activityId, - data, - }); + let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').add(5, 'h').toDate(); + if (new Date() <= endTime) { + let data = await newPlayerLimitPackageActivity(serverId, roleId); + if (data) { + playerActivityArray.push({ + type: ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, + activityId: data.activityId, + data, + }); + } } } //每日限购礼包,RMB购买礼包 16 @@ -239,6 +244,19 @@ export class ActivityHandler { }); } } + + //累计充值RMB活动 21 + { + let data = await rechargeMoneyActivity(serverId, roleId); + if (data) { + playerActivityArray.push({ + type: ACTIVITY_TYPE.RECHARGE_MONEY, + activityId: data.activityId, + data, + }); + } + } + return resResult(STATUS.SUCCESS, { playerActivityArray }); } diff --git a/game-server/app/servers/activity/handler/limitPackageHandler.ts b/game-server/app/servers/activity/handler/limitPackageHandler.ts index c3e9050ea..3160b6b88 100644 --- a/game-server/app/servers/activity/handler/limitPackageHandler.ts +++ b/game-server/app/servers/activity/handler/limitPackageHandler.ts @@ -1,6 +1,6 @@ import { Application, BackendSession } from 'pinus'; import { resResult } from '../../../pubUtils/util'; -import { ACTIVITY_TYPE, FIRST_GIFT_STATE, STATUS } from '../../../consts'; +import { ACTIVITY_TYPE, FIRST_GIFT_STATE, SERVER_OPEN_TIME, STATUS } from '../../../consts'; import { newPlayerLimitPackageActivity, getPlayerLimitPackageData, limitPackageActivity } from '../../../services/limitPackageService'; import { addReward, stringToRewardParam, useGiftPackage } from '../../../services/giftPackageService'; import { ActivityShopModel } from '../../../db/ActivityShop'; @@ -17,7 +17,7 @@ export class LimitPackageHandler { /************************新手限定礼包****************************/ /** - * @description 获取新手限定活动数据 + * @description 获取新手限定活动数据 开服1-7天可以购买,第8天0-5点只能看,不能买 * @param {{ activityId:number}} msg * @param {BackendSession} session * @memberof LimitPackageHandler @@ -27,6 +27,10 @@ export class LimitPackageHandler { const roleId = session.get('roleId'); const serverId = session.get('serverId'); + let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').add(5, 'h').toDate(); + if (new Date() > endTime) { + return resResult(STATUS.ACTIVITY_NEW_PLAYER_GIFT_END); + } let playerData = await newPlayerLimitPackageActivity(serverId, roleId); if (!playerData) { return resResult(STATUS.ACTIVITY_MISSING); @@ -81,7 +85,8 @@ export class LimitPackageHandler { switch (playerData.type) { case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE: { - if (playerData.endTime < moment(new Date).valueOf()) { + let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate(); + if (new Date() > endTime) { return resResult(STATUS.ACTIVITY_NEW_PLAYER_LIMIT_PACKAGE_END); } break; diff --git a/game-server/app/services/limitPackageService.ts b/game-server/app/services/limitPackageService.ts index f40d9bb6b..55b51a02f 100644 --- a/game-server/app/services/limitPackageService.ts +++ b/game-server/app/services/limitPackageService.ts @@ -1,11 +1,13 @@ +import moment = require('moment'); import { ACTIVITY_TYPE, TASK_TYPE } from '../consts'; import { ActivityModel, ActivityModelType } from '../db/Activity'; import { ActivityShopModel, ActivityShopModelType } from '../db/ActivityShop'; +import { RoleModel } from '../db/Role'; import { ServerlistModel } from '../db/Serverlist'; import { LimitShopData, ShopItem } from '../domain/activityField/limitShopField'; /** - * 获取新手玩家限购礼包活动数据 + * 获取新手玩家限购礼包活动数据 新手限定作为开服七天乐的延伸礼包。只存在于开服前七天,七天时间过去,玩家无法购买 * * @param {number} serverId 区Id * @param {number} type 活动类型 ACTIVITY_TYPE @@ -14,6 +16,9 @@ import { LimitShopData, ShopItem } from '../domain/activityField/limitShopField' */ export async function newPlayerLimitPackageActivity(serverId: number, roleId: string) { + let { createTime } = await RoleModel.findByRoleId(roleId); + let createDate = moment(createTime * 1000).toDate(); + let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, new Date) if (activityArray.length == 0) { diff --git a/game-server/app/services/rechargeMoneyService.ts b/game-server/app/services/rechargeMoneyService.ts index 10c563b0c..f8e057bbc 100644 --- a/game-server/app/services/rechargeMoneyService.ts +++ b/game-server/app/services/rechargeMoneyService.ts @@ -20,15 +20,19 @@ import { ServerlistModel } from '../db/Serverlist'; export async function rechargeMoneyActivity(serverId: number, roleId: string) { let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.RECHARGE_MONEY, new Date()) - activityArray = activityArray.sort((a, b) => { - return b.activityId - a.activityId - }); - let playerDataArray = []; - for (let activityData of activityArray) { - let playerData = await getPlayerRechargeMoneyData(activityData.activityId, serverId, roleId); - playerDataArray.push(playerData) - } - return playerDataArray + + let activityData = activityArray[0]; + let playerRecord: ActivityRechargeMoneyModelType[] = await ActivityRechargeMoneyModel.findData(serverId, roleId); + let playerData = new RechargeMoneyData(activityData); + playerData.setPlayerRecords(playerRecord); + return playerData; + + // let playerDataArray = []; + // for (let activityData of activityArray) { + // let playerData = await getPlayerRechargeMoneyData(activityData.activityId, serverId, roleId); + // playerDataArray.push(playerData) + // } + // return playerDataArray } /** diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index c1b656ef5..2c741b2b7 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -360,6 +360,7 @@ export const STATUS = { ACTIVITY_NEED_PAY: { code: 50023, simStr: '客户端调错接口了' }, ACTIVITY_GOLD_RESOURCE: { code: 50024, simStr: '元宝资源' }, ACTIVITY_ID_ERROR: { code: 50025, simStr: 'id错误' }, + ACTIVITY_NEW_PLAYER_GIFT_END: { code: 50026, simStr: '新手活动结束' }, // GM后台相关状态 60000 - 69999 GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' }, GM_MISS_API: { code: 60002, simStr: '未找到该接口' }, diff --git a/shared/domain/activityField/limitShopField.ts b/shared/domain/activityField/limitShopField.ts index 9595b1d9c..855565476 100644 --- a/shared/domain/activityField/limitShopField.ts +++ b/shared/domain/activityField/limitShopField.ts @@ -1,4 +1,5 @@ import moment = require('moment'); +import { REFRESH_TIME } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityShopModelType } from '../../db/ActivityShop'; import { ActivityBase } from './activityField'; @@ -71,6 +72,8 @@ export class LimitShopData extends ActivityBase { let dataObj = JSON.parse(data); this.name = dataObj.name; this.interval = dataObj.interval; + + this.beginTime = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'hour').valueOf(); if (this.interval > 0) { this.roundIndex = Math.ceil((moment(new Date).valueOf() - this.beginTime) / (this.interval * 1000)); this.nextRefreshTime = moment(this.beginTime).add(this.interval * this.roundIndex, 'second').valueOf(); diff --git a/shared/domain/activityField/rechargeMoneyField.ts b/shared/domain/activityField/rechargeMoneyField.ts index 8fbb08dea..f28b47bc9 100644 --- a/shared/domain/activityField/rechargeMoneyField.ts +++ b/shared/domain/activityField/rechargeMoneyField.ts @@ -17,6 +17,7 @@ export class RechargeMoneyItem { this.id = data.id; this.name = data.name; this.reward = data.reward; + this.rewardTime = null; } }