Files
ZYZ/game-server/app/servers/activity/handler/activityHandler.ts
T

354 lines
13 KiB
TypeScript

import { Application, BackendSession } from 'pinus';
import { resResult } from '../../../pubUtils/util';
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';
import { limitPackageActivity, newPlayerLimitPackageActivity } from '../../../services/limitPackageService';
import { growthActivity } from '../../../services/growthService';
import { dailyChallengesActivity } from '../../../services/dailyChallengesService';
import { dailyGiftsActivity } from '../../../services/dailyGiftsService';
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 { playerThirtyDaysActivityDays, thirtyDaysActivity } from '../../../services/thirtyDaysService';
import { dailyRMBGiftsActivity } from '../../../services/dailyRMBGiftsService';
import { popUpShopActivity } from '../../../services/popUpShopService';
// import { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges';
// import { isComplete } from '../../../pubUtils/taskUtil';
export default function (app: Application) {
return new ActivityHandler(app);
}
export class ActivityHandler {
constructor(private app: Application) {
}
/**
* @description 活动是否开启总接口
* @param {{ }} msg
* @param {BackendSession} session
* @memberof ActivityHandler
*/
async getAllOpenActivity(msg: { hid: number, lv: number }, session: BackendSession) {
const { } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
let test = true;
let playerActivityArray = [];
//七天乐活动-成长任务 1 2 3
{
let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
if (new Date() < endTime || test) {//开启中,开服7天后过期
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.SEVEN_DAY,
activityId: 0,
data: sevenData,
});
}
}
}
//14天乐活动-成长任务 1 2 3
// {
// let beginTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
// let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
// let curDate = new Date()
// if (curDate > beginTime && curDate < endTime) {//开启中,开服7天后开启,开服第21天结束
// 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);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN,
activityId: data.activityId,
data,
});
}
}
//高级签到 5
{
let data = await signInVIPActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN_VIP,
activityId: data.activityId,
data,
});
}
}
//成长基金 6
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN,
activityId: data.activityId,
data,
});
}
}
//高阶成长基金 7
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP,
activityId: data.activityId,
data,
});
}
}
//镇念塔成长基金 8
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER,
activityId: data.activityId,
data,
});
}
}
//高阶镇念塔成长基金 9
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP,
activityId: data.activityId,
data,
});
}
}
//精英成长基金 10
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE,
activityId: data.activityId,
data,
});
}
}
//高阶精英成长基金 11
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP,
activityId: data.activityId,
data,
});
}
}
//30天目标活动 12
{
let data = await thirtyDaysActivity(ACTIVITY_TYPE.THIRTY_DAYS, serverId, roleId);
if (data) {
let todayIndex = await playerThirtyDaysActivityDays(roleId);
playerActivityArray.push({
type: ACTIVITY_TYPE.THIRTY_DAYS,
activityId: data.activityId,
data: { playerData: data, todayIndex },
});
}
}
//首冲礼包活动 14
{
let data = await firstGiftActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.FIRST_GIFT,
activityId: data.activityId,
data,
});
}
}
//新手限定RMB购买礼包 15
{
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) {
playerActivityArray.push({
type: ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE,
activityId: data.activityId,
data,
});
}
}
}
//每日限购礼包,RMB购买礼包 16
{
let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY,
activityId: data.activityId,
data,
});
}
}
//每日限购礼包,RMB购买礼包 17
{
let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY,
activityId: data.activityId,
data,
});
}
}
//元宝商店 18
{
let data = await yuanbaoActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.YUAN_BAO_SHOP,
activityId: data.activityId,
data,
});
}
}
//月卡1 19
{
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_1);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.MONTHLY_TICKET_1,
activityId: data.activityId,
data,
});
}
}
//月卡2 20
{
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.MONTHLY_TICKET_2,
activityId: data.activityId,
data,
});
}
}
//累计充值RMB活动 21
{
let data = await rechargeMoneyActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.RECHARGE_MONEY,
activityId: data.activityId,
data,
});
}
}
//每日特惠RMB购买,一次性购买7天礼包 22
{
let data = await dailyRMBGiftsActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.DAILY_RMB_GIFTS,
activityId: data.activityId,
data,
});
}
}
//弹出商店 24
{
let data = await popUpShopActivity(serverId, roleId);
if (data && data.length > 0) {
for (let obj of data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.POP_UP_SHOP,
activityId: obj.activityId,
data: obj,
});
}
}
}
return resResult(STATUS.SUCCESS, { playerActivityArray });
}
}