活动:添加新任务类型

This commit is contained in:
qiaoxin
2021-06-04 18:35:29 +08:00
parent 2bf3122463
commit fe73748cd7
9 changed files with 116 additions and 25 deletions
@@ -18,6 +18,8 @@ import { dailyRMBGiftsActivity } from '../../../services/dailyRMBGiftsService';
import { popUpShopActivity } from '../../../services/popUpShopService'; import { popUpShopActivity } from '../../../services/popUpShopService';
import { vipRechargeMoneyActivity } from '../../../services/vipRechargeMoneyService'; import { vipRechargeMoneyActivity } from '../../../services/vipRechargeMoneyService';
import { sevenDaysActivity } from '../../../services/sevenDaysService'; import { sevenDaysActivity } from '../../../services/sevenDaysService';
import { checkActivityTask } from '../../../services/taskService';
import { treasureHuntActivity } from '../../../services/treasureHuntService';
// import { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges'; // import { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges';
// import { isComplete } from '../../../pubUtils/taskUtil'; // import { isComplete } from '../../../pubUtils/taskUtil';
@@ -337,14 +339,14 @@ export class ActivityHandler {
//寻宝骑兵活动 23 //寻宝骑兵活动 23
{ {
// let data = await dailyRMBGiftsActivity(serverId, roleId); let data = await treasureHuntActivity(serverId, roleId);
// if (data) { if (data) {
// playerActivityArray.push({ playerActivityArray.push({
// type: ACTIVITY_TYPE.TREASURE_HUNT, type: ACTIVITY_TYPE.TREASURE_HUNT,
// activityId: data.activityId, activityId: data.activityId,
// data, data,
// }); });
// } }
} }
//弹出商店 24 //弹出商店 24
@@ -423,4 +425,29 @@ export class ActivityHandler {
return resResult(STATUS.SUCCESS, { playerActivityArray }); return resResult(STATUS.SUCCESS, { playerActivityArray });
} }
//测试活动任务数据
async testActivityTask(msg: { hid: number, lv: number }, session: BackendSession) {
const { lv } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
let heroNum = 1;
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY, heroNum, { heroes: [{ quality: 3 }] })
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT, 1, { oldQuality: 1, quality: 2 })
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_WAKE_UP_STAR_UP_COUNT, 1, { quality: 1, star: 1 })
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_MAIN_ELITE, 1, { mainEliteWarId: 9001 })
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: 5001 })
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_EXPEDITION_BOX, 1)
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.ROLE_LV, 100)
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP, 1)
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_TOWER_LV, 1, { towerLv: lv })
return resResult(STATUS.SUCCESS,);
}
} }
@@ -301,6 +301,7 @@ export class PvpHandler {
let myRank = await r.getMyRank({ roleId }); let myRank = await r.getMyRank({ roleId });
await checkTaskInPvpEnd(roleId, sid, funcs, isSuccess, heroScores); await checkTaskInPvpEnd(roleId, sid, funcs, isSuccess, heroScores);
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP, 1)
if (isSuccess) { if (isSuccess) {
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP_WIN, 1) await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP_WIN, 1)
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP_WIN_SERIES, 1) await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP_WIN_SERIES, 1)
@@ -286,7 +286,7 @@ export class HeroHandler {
// 任务 // 任务
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_QUALITY_UP, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_QUALITY_UP, hero);
// 任务 // 任务
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT, 1, { oldQuality, quality: hero.quality }); await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT, 1, { oldQuality: dicHero.quality, quality: hero.quality });
const curHero = { const curHero = {
hid, hid,
+1
View File
@@ -111,6 +111,7 @@ export async function checkTaskInBattleEnd(serverId: number, roleId: string, sid
//成长任务 //成长任务
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_MAIN, 1, { warId: battleId }) await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_MAIN, 1, { warId: battleId })
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_EXPEDITION, 1) await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_EXPEDITION, 1)
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: battleId })
} }
@@ -24,8 +24,23 @@ export async function treasureHuntActivity(serverId: number, roleId: string) {
if (!activityData) { if (!activityData) {
return null; return null;
} }
let playerData = await getPlayerTreasureHuntData(activityData.activityId, serverId, roleId, huntRoundIndex, huntBeginTime, huntEndTime);
return playerData let playerData = new TreasureHuntData(activityData);
playerData.beginTime = moment(huntBeginTime).valueOf();
playerData.endTime = moment(huntEndTime).valueOf();
playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;;
playerData.roundIndex = huntRoundIndex;
let playerTreasureFirstPageecord: ActivityTreasureHuntFirstPageModelType = await ActivityTreasureHuntFirstPageModel.findData(serverId, activityData.activityId, roleId, huntRoundIndex);
playerData.firstPage.setPlayerFirstPageRecord(playerTreasureFirstPageecord);
let playerShopRecord: ActivityTreasureHuntShopModelType = await ActivityTreasureHuntShopModel.findTreasureData(activityData.activityId, roleId, huntRoundIndex, playerData.todayIndex);
playerData.shop.setPlayerShopRecords(playerShopRecord);
let playerTaskRecord: ActivityTreasureHuntTaskModelType[] = await ActivityTreasureHuntTaskModel.findDataByRoundIndex(serverId, activityData.activityId, roleId, huntRoundIndex);
playerData.tasks.setPlayerTaskRecords(playerTaskRecord);
let playerTreasureShopRecord: ActivityTreasureHuntTreasureShopModelType = await ActivityTreasureHuntTreasureShopModel.findData(activityData.activityId, roleId, huntRoundIndex);
playerData.treasureShop.setPlayerTreasureShopRecords(playerTreasureShopRecord);
return playerData;
} }
/** /**
+8 -8
View File
@@ -8,14 +8,14 @@ export enum ACTIVITY_TYPE {
DAILY_DISCOUNT_GIFT = 1, // 七天乐活动,每日特惠礼包 DAILY_DISCOUNT_GIFT = 1, // 七天乐活动,每日特惠礼包
TASK_GROWTH = 2, // 成长任务活动 TASK_GROWTH = 2, // 成长任务活动
TASK_DAILY_CHALLENGES = 3, // 今日挑战活动 TASK_DAILY_CHALLENGES = 3, // 今日挑战活动
SIGN_IN = 4, // 签到活动 SIGN_IN = 4, // 签到活动 (开服立即开启,配置每月*日到*日结束)
SIGN_IN_VIP = 5, // 签到活动(高级)RMB购买 SIGN_IN_VIP = 5, // 签到活动(高级)RMB购买 (开服立即开启,配置每月*日到*日结束)
GROWTH_FUND_MAIN = 6, // 主线成长基金 GROWTH_FUND_MAIN = 6, // 主线成长基金 (注册后可见,永久存在)
GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶) GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶)(注册后可见,永久存在)
GROWTH_FUND_TOWER = 8, // 镇念塔成长基金 GROWTH_FUND_TOWER = 8, // 镇念塔成长基金 (注册后可见,永久存在)
GROWTH_FUND_TOWER_VIP = 9, // 镇念塔成长基金(高阶) GROWTH_FUND_TOWER_VIP = 9, // 镇念塔成长基金(高阶) (注册后可见,永久存在)
GROWTH_FUND_MAIN_ELITE = 10, // 精英成长基金 GROWTH_FUND_MAIN_ELITE = 10, // 精英成长基金 (注册后可见,永久存在)
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶) GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)(注册后可见,永久存在)
THIRTY_DAYS = 12, // 30日目标活动 THIRTY_DAYS = 12, // 30日目标活动
SELF_SERVICE_SHOP = 13, // 自选商店 SELF_SERVICE_SHOP = 13, // 自选商店
FIRST_GIFT = 14, // 首充礼包 FIRST_GIFT = 14, // 首充礼包
+8
View File
@@ -54,6 +54,14 @@ export default class Activity_Pop_Up_Shop extends BaseModel {
} }
//根据活动taskId查询现在正在进行的活动数据 //根据活动taskId查询现在正在进行的活动数据
public static async findDataByTaskId(serverId: number, activityId: number, roleId: string, id: number, type: number) {
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOne({
serverId, roleId, activityId, id, type,
}).lean(true);
return result;
}
//根据活动taskId查询现在正在开启的商店数据
public static async findOpenDataByTaskId(serverId: number, activityId: number, roleId: string, id: number, type: number) { public static async findOpenDataByTaskId(serverId: number, activityId: number, roleId: string, id: number, type: number) {
let nowDate = new Date(); let nowDate = new Date();
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOne({ let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOne({
@@ -41,10 +41,12 @@ export class TreasureHuntFirstPageData {
export class ConsumeData { export class ConsumeData {
count: number; // 第几次购买,1开始 count: number; // 第几次购买,1开始
consume: string; //消耗资源 "2&31002&400" consume: string; //消耗资源 "2&31002&400"
discount: number; // 折扣
constructor(data: any) { constructor(data: any) {
this.count = data.count; this.count = data.count;
this.consume = data.consume; this.consume = data.consume;
this.discount = data.discount;
} }
} }
@@ -56,6 +58,7 @@ export class TreasureHuntShopItem {
productID: string; // 商品id productID: string; // 商品id
reward: string; //奖励 reward: string; //奖励
countMax: number; //最大购买次数 countMax: number; //最大购买次数
discount: number; //折扣
imageName: string; imageName: string;
consume: ConsumeData[]; //每次购买价格不同 consume: ConsumeData[]; //每次购买价格不同
@@ -68,6 +71,7 @@ export class TreasureHuntShopItem {
this.productID = data.productID; this.productID = data.productID;
this.reward = data.reward; this.reward = data.reward;
this.countMax = data.countMax; this.countMax = data.countMax;
this.discount = data.discount;
this.imageName = data.imageName; this.imageName = data.imageName;
this.consume = []; this.consume = [];
for (let obj of data.data) { for (let obj of data.data) {
+41 -6
View File
@@ -502,7 +502,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null; let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null;
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData); let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData);
if (addCount) { if (addCount) {
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) {
await ActivityGrowthModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); await ActivityGrowthModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
} else { } else {
await ActivityGrowthModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); await ActivityGrowthModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
@@ -524,7 +524,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData); let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData);
if (addCount) { if (addCount) {
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) {
await ActivityDailyChallengesModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); await ActivityDailyChallengesModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
} else { } else {
await ActivityDailyChallengesModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); await ActivityDailyChallengesModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
@@ -541,6 +541,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
taskType === TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT || taskType === TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT ||
taskType === TASK_TYPE.HERO_WAKE_UP_COUNT || taskType === TASK_TYPE.HERO_WAKE_UP_COUNT ||
taskType === TASK_TYPE.HERO_WAKE_UP_STAR_UP_COUNT || taskType === TASK_TYPE.HERO_WAKE_UP_STAR_UP_COUNT ||
taskType === TASK_TYPE.HERO_QUALITY ||
taskType === TASK_TYPE.EQUIP_STRENGTHEN || taskType === TASK_TYPE.EQUIP_STRENGTHEN ||
taskType === TASK_TYPE.EQUIP_REFINE_LV || taskType === TASK_TYPE.EQUIP_REFINE_LV ||
@@ -589,15 +590,15 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
for (let task of allTaskData) { for (let task of allTaskData) {
if (task.taskType == taskType) { if (task.taskType == taskType) {
let popShopData = new PopUpShopData(task, activity.activityId); let popShopData = new PopUpShopData(task, activity.activityId);
let taskRecord = await ActivityPopUpShopModel.findOpenDataByTaskId(serverId, activity.activityId, roleId, popShopData.id, popShopData.taskType) let taskRecord = await ActivityPopUpShopModel.findDataByTaskId(serverId, activity.activityId, roleId, popShopData.id, popShopData.taskType)
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null
if (!taskRecord || !taskRecord.isPush) { if (!taskRecord || !taskRecord.isPush) {
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData); let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData);
if (addCount) { if (addCount) {
let beginTime = new Date(); let beginTime = new Date();
let endTime = moment(new Date()).add(task.duration, 'h').toDate(); let endTime = moment(new Date()).add(task.duration, 'h').toDate();
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) {
let playerRecord = await ActivityPopUpShopModel.addTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount); let playerRecord = await ActivityPopUpShopModel.setTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount);
//推送 //推送
if (task.condition <= playerRecord.totalCount) { if (task.condition <= playerRecord.totalCount) {
playerRecord = await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime); playerRecord = await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime);
@@ -852,7 +853,41 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
} }
case TASK_TYPE.BATTLE_TOWER_LV://{towerLv} case TASK_TYPE.BATTLE_TOWER_LV://{towerLv}
{ {
addCount = paramObj.towerLv; let towerLv = paramObj.towerLv;
console.log('dddddddd', recordData, towerLv)
if (recordData) {
console.log('dddddddd22', recordData)
if (recordData >= towerLv) {
console.log('dddddddd22333', recordData)
break;
}
}
record = towerLv;
addCount = towerLv;
break;
}
case TASK_TYPE.BATTLE_MAIN_ELITE:
{
if (paramObj.mainEliteWarId == param[1]) {
addCount = count;
}
break;
}
case TASK_TYPE.BATTLE_DUNGEON_WAR:
{
if (paramObj.warId == param[1]) {
addCount = count;
}
break;
}
case TASK_TYPE.HERO_NUM:
{
addCount = count;
break;
}
case TASK_TYPE.PVP:
{
addCount = count;
break; break;
} }
default: default: