diff --git a/game-server/app/services/taskService.ts b/game-server/app/services/taskService.ts index b6bdb1711..e0d576c8e 100644 --- a/game-server/app/services/taskService.ts +++ b/game-server/app/services/taskService.ts @@ -76,7 +76,7 @@ export async function pushTaskUpdate(roleId: string, sid: string, funcs: number[ export async function checkActivityTask(serverId: number, sid: string, funcs: number[], roleId: string, taskType: TASK_TYPE, count: number, parma?: any) { let pushMessage = await taskUtil.accomplishTask(serverId, roleId, taskType, count, parma); - pushTaskUpdate(roleId, sid, funcs, pushMessage); + pushActivityUpdate(roleId, sid, funcs, pushMessage); } export async function pushActivityUpdate(roleId: string, sid: string, funcs: number[], pushMessage: any[]) { diff --git a/game-server/app/services/thirtyDaysService.ts b/game-server/app/services/thirtyDaysService.ts index f82eb6540..1b7f81dce 100644 --- a/game-server/app/services/thirtyDaysService.ts +++ b/game-server/app/services/thirtyDaysService.ts @@ -81,7 +81,7 @@ export async function addPlayerThirtyDaysTask(activityId: number, serverId: numb export async function playerThirtyDaysActivityDays(roleId: string) { let { createTime } = await RoleModel.findByRoleId(roleId); let createDate = moment(createTime * 1000).toDate(); - let todayIndex = deltaDays(createDate, new Date) + 1; + let todayIndex = deltaDays(moment(createDate).startOf('d').toDate(), new Date) + 1; return todayIndex; } { diff --git a/game-server/app/services/treasureHuntService.ts b/game-server/app/services/treasureHuntService.ts index 100771057..c63d2cde0 100644 --- a/game-server/app/services/treasureHuntService.ts +++ b/game-server/app/services/treasureHuntService.ts @@ -41,7 +41,7 @@ export async function getPlayerTreasureHuntData(activityId: number, serverId: nu let playerData = new TreasureHuntData(activityData); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); - playerData.todayIndex = deltaDays(huntBeginTime, new Date) + 1;; + playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; playerData.roundIndex = huntRoundIndex; let playerShopRecord: ActivityTreasureHuntShopModelType = await ActivityTreasureHuntShopModel.findTreasureData(serverId, activityId, roleId, huntRoundIndex, playerData.todayIndex); @@ -55,7 +55,7 @@ export async function getPlayerTreasureHuntShopData(activityId: number, serverId let playerData = new TreasureHuntData(activityData); playerData.beginTime = moment(huntBeginTime).valueOf(); playerData.endTime = moment(huntEndTime).valueOf(); - playerData.todayIndex = deltaDays(huntBeginTime, new Date) + 1;; + playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; playerData.roundIndex = huntRoundIndex; let playerShopRecord: ActivityTreasureHuntShopModelType = await ActivityTreasureHuntShopModel.findTreasureData(serverId, activityId, roleId, huntRoundIndex, playerData.todayIndex); diff --git a/game-server/app/services/yuanbaoService.ts b/game-server/app/services/yuanbaoService.ts index f0378d64e..f4bfd7af1 100644 --- a/game-server/app/services/yuanbaoService.ts +++ b/game-server/app/services/yuanbaoService.ts @@ -73,8 +73,17 @@ export async function makeYuanbaoShopReward(roleId: string, roleName: string, si rewardParamArr = rewardParamArr.concat(stringToRewardParam(item.baseReward)); rewardParamArr = rewardParamArr.concat(stringToRewardParam(item.extraReward)); } + let arr: Array = []; + for (let obj of rewardParamArr) { + let index = arr.findIndex(reward => { return reward.type == obj.type && reward.id == obj.id }); + if (index != -1) { + arr[index].count += obj.count; + } else { + arr.push(obj); + } + } - let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr) + let result = await addReward(roleId, roleName, sid, serverId, funcs, arr) item.buyCount += 1; return Object.assign(result, { item, activityId: activityData.activityId }) } diff --git a/shared/db/Activity.ts b/shared/db/Activity.ts index 8b742fd4b..f028283d6 100644 --- a/shared/db/Activity.ts +++ b/shared/db/Activity.ts @@ -67,8 +67,8 @@ export default class Activity extends BaseModel { { new: true, upsert: true }).lean(true); result.push(rec); } - if(groupId != undefined) { - if(groupId == 0) { + if (groupId != undefined) { + if (groupId == 0) { let newGroup = await ActivityGroupModel.createGroup(); groupId = newGroup.groupId; } diff --git a/shared/domain/activityField/activityField.ts b/shared/domain/activityField/activityField.ts index d33833d27..3f62b2cba 100644 --- a/shared/domain/activityField/activityField.ts +++ b/shared/domain/activityField/activityField.ts @@ -23,7 +23,7 @@ export abstract class ActivityBase { this.endTime = moment(activityData.endTime).valueOf(); this.type = activityData.type; // this.data = activityData.data; - this.todayIndex = deltaDays(activityData.beginTime, new Date) + 1; + this.todayIndex = deltaDays(moment(activityData.beginTime).startOf('d').toDate(), new Date) + 1; // console.log('今天是活动第几天', activityData.beginTime, new Date, this.todayIndex) } } diff --git a/shared/domain/activityField/dailyChallengesField.ts b/shared/domain/activityField/dailyChallengesField.ts index 10543d8a3..aa7fac5f0 100644 --- a/shared/domain/activityField/dailyChallengesField.ts +++ b/shared/domain/activityField/dailyChallengesField.ts @@ -28,26 +28,8 @@ export class DailyItem { this.taskParam = data.taskParam; this.condition = data.condition; this.reward = data.reward; - } - - public heroReward(): CreateHeroParam[] { - let rewardArray = []; - let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); - for (let objStr of rewardData) { - let reward = parseHeroStrWithType(objStr); - rewardArray.push(reward); - } - return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.HERO }) - } - - public goodReward(): RewardInter[] { - let rewardArray = []; - let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); - for (let objStr of rewardData) { - let reward = parseGoodStrWithType(objStr); - rewardArray.push(reward); - } - return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.GOODS }) + this.totalCount = 0; + this.receiveRewardCount = 0; } public canReceive(): boolean { @@ -55,48 +37,7 @@ export class DailyItem { } public isComplete(): boolean { - let complete = false; - switch (this.taskType) { - case TASK_TYPE.ROLE_LV: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GUILD_JOIN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.LOGIN_SUM: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.HERO_NUM: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.ROLE_TITLE: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GASHA: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.EQUIP_STRENGTHEN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.BATTLE_MAIN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.EQUIP_JEWEL_SUM: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GUILD_TRAIN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.ROLE_SCHOOL_PUT_HERO: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GUILD_ACTIVITY: - complete = this.totalCount >= this.condition; - break; - default: - complete = false; - break; - } + let complete = this.totalCount >= this.condition; return complete; } } @@ -124,9 +65,6 @@ export class DailyChallengesData extends ActivityBase { if (index != -1) { obj.totalCount = data[index].totalCount ? data[index].totalCount : 0; obj.receiveRewardCount = data[index].receiveRewardCount ? data[index].receiveRewardCount : 0; - } else { - obj.totalCount = 0; - obj.receiveRewardCount = 0 } } } diff --git a/shared/domain/activityField/dailyGiftsField.ts b/shared/domain/activityField/dailyGiftsField.ts index eeab19920..748d0b569 100644 --- a/shared/domain/activityField/dailyGiftsField.ts +++ b/shared/domain/activityField/dailyGiftsField.ts @@ -37,26 +37,6 @@ export class DailyGiftItem { return consumeArray[0]; } - public heroReward(): CreateHeroParam[] { - let rewardArray = []; - let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); - for (let objStr of rewardData) { - let reward = parseHeroStrWithType(objStr); - rewardArray.push(reward); - } - return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.HERO }) - } - - public goodReward(): RewardInter[] { - let rewardArray = []; - let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); - for (let objStr of rewardData) { - let reward = parseGoodStrWithType(objStr); - rewardArray.push(reward); - } - return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.GOODS }) - } - public canBuy(): boolean { return this.buyCount < this.maxCount; } diff --git a/shared/domain/activityField/firstGiftField.ts b/shared/domain/activityField/firstGiftField.ts index fc656ec85..7c91cd850 100644 --- a/shared/domain/activityField/firstGiftField.ts +++ b/shared/domain/activityField/firstGiftField.ts @@ -1,3 +1,4 @@ +import moment = require('moment'); import { FIRST_GIFT_STATE } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityFirstGiftModelType } from '../../db/ActivityFirstGift'; @@ -57,7 +58,7 @@ export class FirstGiftData extends ActivityBase { if (!data) { return; } - this.todayIndex = deltaDays(data.createdAt, new Date) + 1; + this.todayIndex = deltaDays(moment(data.createdAt).startOf('d').toDate(), new Date) + 1; this.state = FIRST_GIFT_STATE.OPEN let daysNum = data.days ? data.days : []; diff --git a/shared/domain/activityField/growthField.ts b/shared/domain/activityField/growthField.ts index 2268d6e1b..c8cc618cc 100644 --- a/shared/domain/activityField/growthField.ts +++ b/shared/domain/activityField/growthField.ts @@ -64,48 +64,7 @@ export class GrowthItem { } public isComplete(): boolean { - let complete = false; - switch (this.taskType) { - case TASK_TYPE.ROLE_LV: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GUILD_JOIN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.LOGIN_SUM: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.HERO_NUM: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.ROLE_TITLE: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GASHA: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.EQUIP_STRENGTHEN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.BATTLE_MAIN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.EQUIP_JEWEL_SUM: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GUILD_TRAIN: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.ROLE_SCHOOL_PUT_HERO: - complete = this.totalCount >= this.condition; - break; - case TASK_TYPE.GUILD_ACTIVITY: - complete = this.totalCount >= this.condition; - break; - default: - complete = false; - break; - } + let complete = this.totalCount >= this.condition; return complete; } } @@ -168,7 +127,6 @@ export class GrowthData extends ActivityBase { if (obj.taskType === TASK_TYPE.HERO_NUM) { obj.totalCount = heroNum; } else if (obj.taskType === TASK_TYPE.HERO_LV) { - obj.taskParam let lv = obj.taskParamArray[1]; let heroes = userHeroes.filter(hero => { return hero.lv >= lv }) obj.totalCount = heroes.length; diff --git a/shared/domain/activityField/monthlyTicketField.ts b/shared/domain/activityField/monthlyTicketField.ts index 45498076e..cf0852504 100644 --- a/shared/domain/activityField/monthlyTicketField.ts +++ b/shared/domain/activityField/monthlyTicketField.ts @@ -30,7 +30,7 @@ export class MonthlyTicketData extends ActivityBase { this.endTime = moment(data.endTime).valueOf(); if (moment(new Date).valueOf() < this.endTime) { this.isOpen = true; - this.todayIndex = deltaDays(data.createdAt, new Date) + 1; + this.todayIndex = deltaDays(moment(data.createdAt).startOf('d').toDate(), new Date) + 1; } else { this.todayIndex = 0; } diff --git a/shared/domain/activityField/signInField.ts b/shared/domain/activityField/signInField.ts index 2e2f38d04..fb9fd6ad0 100644 --- a/shared/domain/activityField/signInField.ts +++ b/shared/domain/activityField/signInField.ts @@ -21,26 +21,6 @@ export class SignInItem { this.isReceive = false; } - public heroReward(): CreateHeroParam[] { - let rewardArray = []; - let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); - for (let objStr of rewardData) { - let reward = parseHeroStrWithType(objStr); - rewardArray.push(reward); - } - return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.HERO }) - } - - public goodReward(): RewardInter[] { - let rewardArray = []; - let rewardData = this.reward.split('|').filter(obj => { return obj && obj != '' }); - for (let objStr of rewardData) { - let reward = parseGoodStrWithType(objStr); - rewardArray.push(reward); - } - return rewardArray.filter(obj => { return obj && obj.type == ACTIVITY_RESOURCES_TYPE.GOODS }) - } - public canReceive(): boolean { return !this.isReceive; }