活动:修改活动bug
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { ACTIVITY_TYPE, FIRST_GIFT_STATE, SERVER_OPEN_TIME, STATUS } from '../../../consts';
|
||||
import { ACTIVITY_TYPE, FIRST_GIFT_STATE, SERVER_OPEN_TIME, STATUS, TASK_TYPE } from '../../../consts';
|
||||
import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService';
|
||||
import { signInActivity, signInVIPActivity } from '../../../services/signInService';
|
||||
import { growthFundActivity } from '../../../services/growthFundService';
|
||||
@@ -12,6 +12,9 @@ import { yuanbaoActivity } from '../../../services/yuanbaoService';
|
||||
import { monthlyTicketActivity } from '../../../services/monthlyTicketService';
|
||||
import { rechargeMoneyActivity } from '../../../services/rechargeMoneyService';
|
||||
import moment = require('moment');
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
// import { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges';
|
||||
// import { isComplete } from '../../../pubUtils/taskUtil';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new ActivityHandler(app);
|
||||
@@ -28,8 +31,8 @@ export class ActivityHandler {
|
||||
* @param {BackendSession} session
|
||||
* @memberof ActivityHandler
|
||||
*/
|
||||
async getAllOpenActivity(msg: {}, session: BackendSession) {
|
||||
const { } = msg;
|
||||
async getAllOpenActivity(msg: { hid: number, lv: number }, session: BackendSession) {
|
||||
const { hid, lv } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
|
||||
@@ -69,6 +72,41 @@ export class ActivityHandler {
|
||||
});
|
||||
}
|
||||
}
|
||||
//14天乐活动-成长任务 1 2 3
|
||||
{
|
||||
let sevenData = [];
|
||||
let growthData = await growthActivity(serverId, roleId);
|
||||
if (growthData) {
|
||||
sevenData.push({
|
||||
type: ACTIVITY_TYPE.TASK_GROWTH,
|
||||
activityId: growthData.activityId,
|
||||
data: growthData,
|
||||
});
|
||||
}
|
||||
let dailyChallengesData = await dailyChallengesActivity(serverId, roleId);
|
||||
if (dailyChallengesData) {
|
||||
sevenData.push({
|
||||
type: ACTIVITY_TYPE.TASK_DAILY_CHALLENGES,
|
||||
activityId: dailyChallengesData.activityId,
|
||||
data: dailyChallengesData,
|
||||
});
|
||||
}
|
||||
let dailyGiftsData = await dailyGiftsActivity(serverId, roleId);
|
||||
if (dailyGiftsData) {
|
||||
sevenData.push({
|
||||
type: ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT,
|
||||
activityId: dailyGiftsData.activityId,
|
||||
data: dailyGiftsData,
|
||||
});
|
||||
}
|
||||
if (sevenData.length > 0) {
|
||||
playerActivityArray.push({
|
||||
type: ACTIVITY_TYPE.FOURTEEN_DAY,
|
||||
activityId: 0,
|
||||
data: sevenData,
|
||||
});
|
||||
}
|
||||
}
|
||||
//签到 4
|
||||
{
|
||||
let data = await signInActivity(serverId, roleId);
|
||||
@@ -174,7 +212,9 @@ export class ActivityHandler {
|
||||
|
||||
//新手限定RMB购买礼包 15
|
||||
{
|
||||
let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').add(5, 'h').toDate();
|
||||
let { createTime } = await RoleModel.findByRoleId(roleId);
|
||||
let createDate = moment(createTime * 1000).toDate();
|
||||
let endTime = moment(createDate).startOf('d').add(7, 'd').add(5, 'h').toDate();
|
||||
if (new Date() <= endTime) {
|
||||
let data = await newPlayerLimitPackageActivity(serverId, roleId);
|
||||
if (data) {
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { deltaDays, resResult } from '../../../pubUtils/util';
|
||||
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';
|
||||
import moment = require('moment');
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new LimitPackageHandler(app);
|
||||
@@ -27,7 +28,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();
|
||||
|
||||
let { createTime } = await RoleModel.findByRoleId(roleId);
|
||||
let createDate = moment(createTime * 1000).toDate();
|
||||
let endTime = moment(createDate).startOf('d').add(7, 'd').add(5, 'h').toDate();
|
||||
if (new Date() > endTime) {
|
||||
return resResult(STATUS.ACTIVITY_NEW_PLAYER_GIFT_END);
|
||||
}
|
||||
@@ -85,7 +89,9 @@ export class LimitPackageHandler {
|
||||
switch (playerData.type) {
|
||||
case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE:
|
||||
{
|
||||
let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
|
||||
let { createTime } = await RoleModel.findByRoleId(roleId);
|
||||
let createDate = moment(createTime * 1000).toDate();
|
||||
let endTime = moment(createDate).startOf('d').add(7, 'd').toDate();
|
||||
if (new Date() > endTime) {
|
||||
return resResult(STATUS.ACTIVITY_NEW_PLAYER_LIMIT_PACKAGE_END);
|
||||
}
|
||||
|
||||
@@ -71,6 +71,10 @@ export class RechargeMoneyHandler {
|
||||
await ActivityRechargeMoneyModel.setEndState(serverId, roleId, _ids);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
item.rewardTime = new Date();
|
||||
return resResult(STATUS.SUCCESS, Object.assign(result, {
|
||||
param: { activityId },
|
||||
item: item
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import { gameData } from '../../../pubUtils/data';
|
||||
import { pushMysteryFirstMsg, pushTowerMsg, pushVestigeFirstMsg } from '../../../services/chatService';
|
||||
import { nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { Rank } from '../../../services/rankService';
|
||||
import { checkTaskWithWar, checkTaskInBattleEnd } from '../../../services/taskService';
|
||||
import { checkTaskWithWar, checkTaskInBattleEnd, checkActivityTask } from '../../../services/taskService';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new NormalBattleHandler(app);
|
||||
@@ -235,6 +235,7 @@ export class NormalBattleHandler {
|
||||
if (role) {
|
||||
let r = new Rank(REDIS_KEY.MAIN_ELITE_RANK, { serverId });
|
||||
await r.setRankWithRoleInfo(roleId, role.mainEliteWarId, role.mainEliteUpdatedAt, role);
|
||||
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_MAIN_ELITE, 1, { mainEliteWarId: battleId })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import { HangUpSpdUpRecModel } from '../db/HangUpSpdUpRec';
|
||||
import { TowerTaskRecModel } from '../db/TowerTaskRec';
|
||||
import { cloneDeep } from 'lodash';
|
||||
import { Rank } from './rankService';
|
||||
import { checkTask } from './taskService';
|
||||
import { checkActivityTask, checkTask } from './taskService';
|
||||
import { getRandExpedition, gameData } from '../pubUtils/data';
|
||||
import { ItemInter, RewardInter } from '../pubUtils/interface';
|
||||
import { getTimeFunM } from '../pubUtils/timeUtil';
|
||||
@@ -44,9 +44,11 @@ export async function checkTowerWar(roleId: string, battleId: number, heroes: Ar
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_DUPLICATE_CHALLENGE) };
|
||||
}
|
||||
|
||||
return { status: 0, data: {
|
||||
return {
|
||||
status: 0, data: {
|
||||
heroes: recHeroes, warStatus: curWarStatus
|
||||
}};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export async function towerBattleEnd(sid: string, funcs: number[], roleId: string, serverId: number, battleCode: string, battleId: number, succeed: boolean, heroes: Array<number>) {
|
||||
@@ -95,6 +97,7 @@ export async function towerBattleEnd(sid: string, funcs: number[], roleId: strin
|
||||
}
|
||||
// 任务
|
||||
await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_TOWER_LV, role.towerLv, false, {});
|
||||
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_TOWER_LV, 1, { towerLv: role.towerLv });
|
||||
}
|
||||
return {
|
||||
status: 0,
|
||||
|
||||
@@ -97,7 +97,7 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb
|
||||
for (let page of playerData.list) {
|
||||
for (let item of page.items) {
|
||||
if (item.taskType == TASK_TYPE.BATTLE_MAIN_ELITE) {
|
||||
if (mainEliteWarId >= item.condition) {
|
||||
if (mainEliteWarId >= item.taskParamArray[1]) {
|
||||
item.isComplete = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import { ActivityShopModel, ActivityShopModelType } from '../db/ActivityShop';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { ServerlistModel } from '../db/Serverlist';
|
||||
import { LimitShopData, ShopItem } from '../domain/activityField/limitShopField';
|
||||
import { deltaDays } from '../pubUtils/util';
|
||||
|
||||
/**
|
||||
* 获取新手玩家限购礼包活动数据 新手限定作为开服七天乐的延伸礼包。只存在于开服前七天,七天时间过去,玩家无法购买
|
||||
@@ -16,9 +17,6 @@ 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) {
|
||||
@@ -72,3 +70,18 @@ export async function limitPackageActivity(serverId: number, roleId: string, typ
|
||||
let playerData = await getPlayerLimitPackageData(activityData.activityId, serverId, roleId);
|
||||
return playerData
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家活动第几天
|
||||
*
|
||||
* @param {number} serverId 区Id
|
||||
* @param {number} activityId 活动Id
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
export async function newPlayerActivityDays(roleId: string) {
|
||||
let { createTime } = await RoleModel.findByRoleId(roleId);
|
||||
let createDate = moment(createTime * 1000).toDate();
|
||||
let todayIndex = deltaDays(moment(createDate).startOf('d').toDate(), new Date) + 1;
|
||||
return todayIndex;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ export async function rechargeMoneyActivity(serverId: number, roleId: string) {
|
||||
let playerRecord: ActivityRechargeMoneyModelType[] = await ActivityRechargeMoneyModel.findData(serverId, roleId);
|
||||
let playerData = new RechargeMoneyData(activityData);
|
||||
playerData.setPlayerRecords(playerRecord);
|
||||
delete playerData.recordArray;
|
||||
return playerData;
|
||||
|
||||
// let playerDataArray = [];
|
||||
|
||||
@@ -30,6 +30,10 @@ export enum ACTIVITY_TYPE {
|
||||
DAILY_RMB_GIFTS = 22, // 每日特惠RMB购买,一次性购买7天礼包
|
||||
TREASURE_HUNT = 23, // 寻宝骑兵活动
|
||||
POP_UP_SHOP = 24, // 弹出商店
|
||||
FOURTEEN_DAY = 25, // 14天乐活动(虚)
|
||||
FOURTEEN_DAILY_DISCOUNT_GIFT = 26, // 14天乐活动,每日特惠礼包
|
||||
FOURTEEN_TASK_GROWTH = 27, // 14天乐成长任务活动
|
||||
FOURTEEN_TASK_DAILY_CHALLENGES = 28, // 14天乐今日挑战活动
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,7 +26,7 @@ export class GrowthFundItem {
|
||||
this.taskType = data.taskType;
|
||||
this.taskParam = data.taskParam;
|
||||
this.reward = data.reward;
|
||||
this.condition = data.conditon;
|
||||
this.condition = data.condition;
|
||||
this.isComplete = false;
|
||||
// this.isReceive = false;
|
||||
this.taskParamArray = splitString(data.taskParam, '&')
|
||||
@@ -80,10 +80,16 @@ export class GrowthFundData extends ActivityBase {
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_TOWER:
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP:
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP: {
|
||||
if (!this.isReceive(page.pageIndex, item.cellIndex) && item.condition <= condition) {
|
||||
item.isComplete = true;
|
||||
items.push(Object.assign(item, { pageIndex: page.pageIndex, activityId: this.activityId }))
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE:
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP: {
|
||||
if (!this.isReceive(page.pageIndex, item.cellIndex) && item.condition <= condition) {
|
||||
if (!this.isReceive(page.pageIndex, item.cellIndex) && item.taskParamArray[1] <= condition) {
|
||||
item.isComplete = true;
|
||||
items.push(Object.assign(item, { pageIndex: page.pageIndex, activityId: this.activityId }))
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
||||
let taskArray = growthActivity.findTaskByType(taskType, growthActivity.today());
|
||||
for (let task of taskArray) {
|
||||
let taskRecord = await ActivityDailyChallengesModel.findDataByCellIndex(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType)
|
||||
let recordData = taskRecord && taskRecord.data ? taskRecord.data : {}
|
||||
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null
|
||||
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData);
|
||||
if (addCount) {
|
||||
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) {
|
||||
@@ -554,7 +554,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
||||
let taskArray = thirtyDaysActivity.findUncompleteTaskByType(taskType);
|
||||
for (let task of taskArray) {
|
||||
let taskRecord = await ActivityDailyChallengesModel.findDataByCellIndex(serverId, thirtyDaysActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType)
|
||||
let recordData = taskRecord && taskRecord.data ? taskRecord.data : {}
|
||||
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null
|
||||
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData);
|
||||
if (addCount) {
|
||||
await ActivityThirtyDaysModel.addTaskCount(serverId, thirtyDaysActivity.activityId, roleId, task.pageIndex, task.cellIndex, task.taskType, addCount);
|
||||
@@ -593,7 +593,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
||||
let buyRecords = await ActivityBuyRecordsModel.findRecordsByActivityId(activity.activityId, roleId);
|
||||
growthFundActivity.initBuyRecords(buyRecords);
|
||||
}
|
||||
let taskArray = growthFundActivity.unLockItem(parma.warId);
|
||||
let taskArray = growthFundActivity.unLockItem(parma.towerLv);
|
||||
//推送
|
||||
pushMessage = pushMessage.concat(taskArray);
|
||||
}
|
||||
@@ -609,7 +609,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
||||
let buyRecords = await ActivityBuyRecordsModel.findRecordsByActivityId(activity.activityId, roleId);
|
||||
growthFundActivity.initBuyRecords(buyRecords);
|
||||
}
|
||||
let taskArray = growthFundActivity.unLockItem(parma.warId);
|
||||
let taskArray = growthFundActivity.unLockItem(parma.mainEliteWarId);
|
||||
//推送
|
||||
pushMessage = pushMessage.concat(taskArray);
|
||||
}
|
||||
@@ -720,10 +720,10 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
|
||||
break;
|
||||
}
|
||||
if (recordData) {
|
||||
record = recordData;
|
||||
if (recordData.indexOf(hid) != -1) {
|
||||
break;
|
||||
}
|
||||
record = recordData;
|
||||
} else {
|
||||
record = [];
|
||||
}
|
||||
@@ -742,15 +742,20 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
|
||||
let hid = paramObj.hid;
|
||||
if (recordData) {
|
||||
record = recordData;
|
||||
if (record['hid']) {
|
||||
if (record['hid'] < param[1] && (record['hid'] + count >= param[1])) {
|
||||
let oldCount = record[hid];
|
||||
if (oldCount) {
|
||||
if (oldCount < param[1] && (oldCount + count >= param[1])) {
|
||||
addCount = count;
|
||||
record['hid'] += count;
|
||||
record[hid] = oldCount + count;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
record[hid] = count;
|
||||
}
|
||||
} else {
|
||||
record = {};
|
||||
record[hid] = count;
|
||||
}
|
||||
record['hid'] = count;
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_EXPEDITION:
|
||||
|
||||
@@ -1083,10 +1083,10 @@
|
||||
"id": 73,
|
||||
"name": "精英任务",
|
||||
"info": "精英通关第x关",
|
||||
"param": "warid&",
|
||||
"param": "count&warid&",
|
||||
"string": "关卡id",
|
||||
"content": 0,
|
||||
"condition": "warid",
|
||||
"condition": "count",
|
||||
"__EMPTY": 0,
|
||||
"__EMPTY_1": 0,
|
||||
"__EMPTY_2": 0,
|
||||
|
||||
Reference in New Issue
Block a user