diff --git a/game-server/app/services/activity/activityService.ts b/game-server/app/services/activity/activityService.ts index 6be20f55b..a1d9fe48f 100644 --- a/game-server/app/services/activity/activityService.ts +++ b/game-server/app/services/activity/activityService.ts @@ -50,6 +50,7 @@ import { getGroupShopDataShow } from './groupShopService'; * */ export async function getActivity(serverId: number, roleId: string, guildCode: string, activityId: number, activityType: number) { + try { let activityData = null; switch (activityType) { case ACTIVITY_TYPE.SIGN_IN://签到 4 @@ -72,10 +73,7 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s } case ACTIVITY_TYPE.THIRTY_DAYS://30天目标活动 12 { - let data = await getPlayerThirtyDaysData(activityId, serverId, roleId); - if(data.canShow()) { - activityData = { playerData: data, todayIndex: data.todayIndex } - } + activityData = await getPlayerThirtyDaysData(activityId, serverId, roleId); break; } case ACTIVITY_TYPE.SELF_SERVICE_SHOP://自选商店 糜家商队 13 @@ -237,6 +235,10 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s return null } return activityData; + } catch(e) { + console.log('activity error', activityId, activityType); + return null; + } } export async function getActivityById(activityId: number) { diff --git a/shared/domain/activityField/thirtyDaysField.ts b/shared/domain/activityField/thirtyDaysField.ts index d24605a0e..cb307d9d6 100644 --- a/shared/domain/activityField/thirtyDaysField.ts +++ b/shared/domain/activityField/thirtyDaysField.ts @@ -4,6 +4,45 @@ import { ActivityThirtyDaysPointRewardModelType } from '../../db/ActivityThirtyD import { splitString } from '../../pubUtils/util'; import { ActivityBase } from './activityField'; +// 总数据 +interface ThirtyDaysDataInDb { + days: number; // 活动周期天数 + icon: string; // 图标 + banner: string; // banner + data: ThirtyDaysPageInDb[]; // 任务完成奖励 + pointRewardData: ThirtyDaysPointItemInDb[]; // 点数兑换奖励 +} + +// 30天目标每个标签页的数据 +interface ThirtyDaysPageInDb { + pageIndex: number; // 第几页,从1开始 + name: string; // 名称 + item: ThiryDaysCellInDb[]; //ThirtyDaysItem每项奖励和任务内容 +} + +interface ThiryDaysCellInDb { + cellIndex: number; + taskList: ThiryDayCellTaskListInDb[]; +} + +interface ThiryDayCellTaskListInDb { + tab: number; // id + name: string; // 名称 + taskType: number; // 任务类型 dic_zyz_taskType.json + taskParam: string; // 任务数据 dic_zyz_taskType.json + condition: number; // 任务条件 + reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 + point: number; // 任务达成获得的奖励点,只在当前活动中有用,虚拟 +} + +// 30天目标每个点兑换奖励的数据 +interface ThirtyDaysPointItemInDb { + cellIndex: number; // 第几个,从1开始 + consumePoint: number; // 消费点数 + reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 + expiredReward: string; // 过期任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄,2.物品 +} + // 30天目标每个点兑换奖励的数据 export class ThirtyDaysPointItem { cellIndex: number; // 第几个,从1开始 @@ -15,42 +54,14 @@ export class ThirtyDaysPointItem { isExpired: boolean = false; //奖励是否已经过期 - constructor(data: any) { + constructor(data: ThirtyDaysPointItemInDb, isExpired: boolean) { this.cellIndex = data.cellIndex; this.consumePoint = data.consumePoint; this.reward = data.reward; this.expiredReward = data.expiredReward; + this.isExpired = isExpired; } - // public heroReward(): CreateHeroParam[] { - // let data = this.reward; - // if (this.isExpired && this.expiredReward && this.expiredReward != '') {//过期奖励 - // data = this.expiredReward; - // } - - // let rewardArray = []; - // let rewardData = data.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 data = this.reward; - // if (this.isExpired && this.expiredReward && this.expiredReward != '') {//过期奖励 - // data = this.expiredReward; - // } - // let rewardArray = []; - // let rewardData = data.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 }) - // } - } // 30天目标每个奖励的数据 @@ -70,7 +81,7 @@ export class ThirtyDaysItem { isComplete: boolean = false; //是否完成任务 isReceive: boolean = false; //是否领取过奖励 - constructor(data: any, pageIndex: number, cellIndex: number) { + constructor(data: ThiryDayCellTaskListInDb, pageIndex: number, cellIndex: number) { this.tab = data.tab; this.pageIndex = pageIndex; this.cellIndex = cellIndex; @@ -103,8 +114,8 @@ export class ThirtyDaysItem { export class ThirtyDaysPage { pageIndex: number; // 第几页,从1开始 name: string; //名称 - item: Array; //ThirtyDaysItem每项奖励和任务内容 - constructor(data: any) { + item: ThirtyDaysItem[]; //ThirtyDaysItem每项奖励和任务内容 + constructor(data: ThirtyDaysPageInDb) { this.pageIndex = data.pageIndex; this.name = data.name; this.item = []; @@ -118,8 +129,9 @@ export class ThirtyDaysPage { // 30天任务活动数据 export class ThirtyDaysData extends ActivityBase { - name: string = '';//活动名称 days: number = 0;//活动周期天数 + icon: string; // 图标 + banner: string; // banner list: Array = [];//任务完成奖励 pointRewardList: Array = [];//点数兑换奖励 totalPoint: number = 0;//总共点数 @@ -210,7 +222,6 @@ export class ThirtyDaysData extends ActivityBase { let index = data.findIndex(record => { return obj.cellIndex == record.cellIndex }) if (index != -1) { obj.isReceive = data[index].isReceive === true; - obj.isExpired = data[index].isExpired === true; } } } @@ -231,16 +242,17 @@ export class ThirtyDaysData extends ActivityBase { public initData(data: string) { - let dataObj = JSON.parse(data); - this.name = dataObj.name; + let dataObj: ThirtyDaysDataInDb = JSON.parse(data); this.days = dataObj.days; + this.icon = dataObj.icon; + this.banner = dataObj.banner; - let pointRewardData = dataObj.pointRewardData; + let pointRewardData = dataObj.pointRewardData||[]; for (let obj of pointRewardData) { - this.pointRewardList.push(new ThirtyDaysPointItem(obj)) + this.pointRewardList.push(new ThirtyDaysPointItem(obj, this.todayIndex > this.days)) } - let arr = dataObj.data; + let arr = dataObj.data||[]; for (let obj of arr) { this.list.push(new ThirtyDaysPage(obj)) }