diff --git a/game-server/app/servers/activity/handler/growthFundHandler.ts b/game-server/app/servers/activity/handler/growthFundHandler.ts index 777181de3..798cd3267 100644 --- a/game-server/app/servers/activity/handler/growthFundHandler.ts +++ b/game-server/app/servers/activity/handler/growthFundHandler.ts @@ -65,12 +65,10 @@ export class GrowthFundHandler { if (!growthFundItemData.isComplete) {//未完成任务 return resResult(STATUS.ACTIVITY_TASK_UNCOMPLETED); } - if (growthFundItemData.isReceive) {//已经领取过 + if (playerData.isReceive(pageIndex, cellIndex)) {//已经领取过 return resResult(STATUS.ACTIVITY_REWARDED); } - growthFundItemData.isReceive = true; - await ActivityGrowthFundModel.addRecord(activityId, roleId, pageIndex, cellIndex); let rewardParamArr: Array = stringToRewardParam(growthFundItemData.reward); diff --git a/game-server/app/services/growthFundService.ts b/game-server/app/services/growthFundService.ts index c2c883180..17503e045 100644 --- a/game-server/app/services/growthFundService.ts +++ b/game-server/app/services/growthFundService.ts @@ -63,11 +63,13 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb let role = await RoleModel.findByRoleId(roleId); let { warStar = new Array<{ id: number, warType: number, star: number }>() } = role; let warIDs = warStar.map(cur => cur.id); - for (let item of playerData.list) { - if (item.taskType == TASK_TYPE.BATTLE_MAIN) { - let index = warIDs.findIndex(id => { return id === item.taskParamArray[1] }) - if (index != -1) { - item.isComplete = true; + for (let page of playerData.list) { + for (let item of page.items) { + if (item.taskType == TASK_TYPE.BATTLE_MAIN) { + let index = warIDs.findIndex(id => { return id === item.condition }) + if (index != -1) { + item.isComplete = true; + } } } } @@ -77,10 +79,12 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP:////镇念塔vip { let { towerLv } = await RoleModel.findByRoleId(roleId); - for (let item of playerData.list) { - if (item.taskType == TASK_TYPE.BATTLE_TOWER_LV) { - if (towerLv >= item.taskParamArray[0]) { - item.isComplete = true; + for (let page of playerData.list) { + for (let item of page.items) { + if (item.taskType == TASK_TYPE.BATTLE_TOWER_LV) { + if (towerLv >= item.condition) { + item.isComplete = true; + } } } } @@ -90,10 +94,12 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP: //精英VIP { let { mainEliteWarId } = await RoleModel.findByRoleId(roleId); - for (let item of playerData.list) { - if (item.taskType == TASK_TYPE.BATTLE_MAIN_ELITE) { - if (mainEliteWarId >= item.taskParamArray[0]) { - item.isComplete = true; + for (let page of playerData.list) { + for (let item of page.items) { + if (item.taskType == TASK_TYPE.BATTLE_MAIN_ELITE) { + if (mainEliteWarId >= item.condition) { + item.isComplete = true; + } } } } diff --git a/shared/domain/activityField/growthFundField.ts b/shared/domain/activityField/growthFundField.ts index ddc108ddf..3d8471b72 100644 --- a/shared/domain/activityField/growthFundField.ts +++ b/shared/domain/activityField/growthFundField.ts @@ -2,74 +2,63 @@ import { ACTIVITY_RESOURCES_TYPE, ACTIVITY_TYPE } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityBuyRecordsModelType } from '../../db/ActivityBuyRecords'; import { ActivityGrowthFundModelType } from '../../db/ActivityGrowthFund'; -import { RewardInter } from '../../pubUtils/interface'; -import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util'; -import { CreateHeroParam } from '../roleField/hero'; import { ActivityBase } from './activityField'; // 成长基金每个奖励的数据 export class GrowthFundItem { - pageIndex: number; // 第几页,从1开始 - cellIndex: number; // 第几个,从1开始 + id: number; // 编号 name: string; //名称 + cellIndex: number; // 第几个,从1开始 taskType: number; // 任务类型 dic_zyz_taskType.json taskParam: string; //任务数据 dic_zyz_taskType.json - taskParamArray: Array; //任务数据 dic_zyz_taskType.json condition: number; //0 reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 + isComplete: boolean //是否完成任务 - - isComplete: boolean = false; //是否完成任务 - isReceive: boolean = false; //是否领取过奖励 - + // isReceive: boolean = false; //是否领取过奖励 constructor(data: any) { - this.pageIndex = data.pageIndex; + this.id = data.id; this.cellIndex = data.cellIndex; this.name = data.name; this.taskType = data.taskType; this.taskParam = data.taskParam; this.reward = data.reward; - this.condition = data.condition; + this.condition = data.conditon; this.isComplete = false; - this.isReceive = false; - - this.taskParamArray = splitString(data.taskParam, '&') - } - - 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; + // this.isReceive = false; } } +// 成长基金每页奖励的数据 +export class GrowthFundPage { + pageIndex: number = 0;//页 + price: number = 0;//高阶价格 + productID: string = '';//商品id + items: GrowthFundItem[] = [];//所有任务 + + constructor(data: any) { + this.pageIndex = data.pageIndex; + this.price = data.price; + this.productID = data.productID; + for (let itemData of data.data) { + this.items.push(new GrowthFundItem(itemData)) + } + + } + + public findItem(cellIndex: number) { + let index = this.items.findIndex(obj => { return obj.cellIndex === cellIndex }); + return (index != -1) ? this.items[index] : null; + } +} // 成长基金活动数据 export class GrowthFundData extends ActivityBase { - list: Array = []; - price: number = 0;//高阶价格 - productID: string = '';//商品id + list: Array = []; buyRecords: Array = [];//高阶购买记录 + receiveRecords: Array = [];//领取记录 //是否是高阶,需要购买 public isVipActivity() { @@ -84,30 +73,34 @@ export class GrowthFundData extends ActivityBase { return index != -1; } + //是否领取过 + public isReceive(pageIndex: number, cellIndex: number) { + let index = this.receiveRecords.findIndex(obj => { obj && obj.pageIndex == pageIndex && cellIndex == obj.cellIndex }) + return (index !== -1); + } + //全部领取完成 public isComplete() { for (let i = 0; i < this.list.length; i++) { - let item = this.list[i]; - if (!item.isReceive) { - return false + let page = this.list[i]; + for (let item of page.items) { + let index = this.receiveRecords.findIndex(obj => { obj && obj.pageIndex == page.pageIndex && item.cellIndex == obj.cellIndex }) + if (index == -1) { + return false + } } } return true; } public findGrowthFundItem(pageIndex: number, cellIndex: number) { - let index = this.list.findIndex(obj => { return obj && obj.pageIndex == pageIndex && obj.cellIndex == cellIndex }) - return (index != -1) ? this.list[index] : null; + let index = this.list.findIndex(obj => { return obj && obj.pageIndex == pageIndex }) + return this.list[index].findItem(cellIndex); } //解析玩家领取记录 public setPlayerRecords(data: ActivityGrowthFundModelType[]) { - for (let obj of this.list) { - let index = data.findIndex(record => { return obj.pageIndex == record.pageIndex && obj.cellIndex == record.cellIndex }) - if (index != -1) { - obj.isReceive = data[index].isReceive; - } - } + this.receiveRecords = data; } //高阶版购买记录 @@ -119,11 +112,9 @@ export class GrowthFundData extends ActivityBase { public initData(data: string) { let dataObj = JSON.parse(data); - this.price = dataObj.price; - this.productID = dataObj.productID; - let arr = dataObj.data; + let arr = dataObj; for (let obj of arr) { - this.list.push(new GrowthFundItem(obj)) + this.list.push(new GrowthFundPage(obj)) } } diff --git a/shared/domain/activityField/limitShopField.ts b/shared/domain/activityField/limitShopField.ts index 6d104989f..9595b1d9c 100644 --- a/shared/domain/activityField/limitShopField.ts +++ b/shared/domain/activityField/limitShopField.ts @@ -12,6 +12,7 @@ export class ShopItem { price: number; //价格 productID: string; //商品id imageName: string; + discount: number; //折扣 buyCount: number = 0; //购买过的次数 @@ -23,6 +24,7 @@ export class ShopItem { this.price = data.price; this.productID = data.productID; this.imageName = data.imageName; + this.discount = data.discount ? data.discount : 0; this.buyCount = 0; } } diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index 6f7baf227..411b936e4 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -16,6 +16,7 @@ import { ACTIVITY_TYPE } from '../consts/constModules/activityConst'; import { ActivityGrowthModel } from '../db/ActivityGrowth'; import { ActivityDailyChallengesModel } from '../db/ActivityDailyChallenges'; import { ThirtyDaysData } from '../domain/activityField/thirtyDaysField'; +import { GrowthFundData } from '../domain/activityField/growthFundField'; import { ActivityThirtyDaysModel, ActivityThirtyDaysModelType } from '../db/ActivityThirtyDays'; import { ServerlistModel } from '../db/Serverlist'; @@ -531,7 +532,6 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: taskType === TASK_TYPE.EQUIP_JEWEL_STAGE || taskType === TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE || taskType === TASK_TYPE.EQUIP_QUALITY - ) { allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.THIRTY_DAYS, new Date()); for (let activity of allActivity) { @@ -548,6 +548,18 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: } } + //主线成长基金 + if (taskType === TASK_TYPE.BATTLE_MAIN) { + + } + //镇念塔成长基金 + if (taskType === TASK_TYPE.BATTLE_TOWER_LV) { + + } + //精英成长基金 + if (taskType === TASK_TYPE.BATTLE_MAIN_ELITE) { + + } }