活动:月卡过期奖品发放邮件
This commit is contained in:
@@ -233,7 +233,7 @@ export class ActivityHandler {
|
|||||||
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2);
|
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2);
|
||||||
if (data) {
|
if (data) {
|
||||||
playerActivityArray.push({
|
playerActivityArray.push({
|
||||||
type: ACTIVITY_TYPE.MONTHLY_TICKET_1,
|
type: ACTIVITY_TYPE.MONTHLY_TICKET_2,
|
||||||
activityId: data.activityId,
|
activityId: data.activityId,
|
||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -143,3 +143,18 @@ export function stringToConsumeParam(rewardStr: string): Array<ItemInter> {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//数据格式转换'id&数量|id&数量|' ->> Array<RewardInter> 老资源格式
|
||||||
|
export function stringToRewardInter(rewardStr: string): Array<RewardInter> {
|
||||||
|
let result = new Array<{ id: number, count: number }>();
|
||||||
|
if (!rewardStr) return result;
|
||||||
|
let decodeArr = decodeArrayListStr(rewardStr);
|
||||||
|
for (let [type, id, count] of decodeArr) {
|
||||||
|
if (isNaN(parseInt(id)) || isNaN(parseInt(count))) {
|
||||||
|
throw new Error('data table format wrong');
|
||||||
|
}
|
||||||
|
result.push({ id: parseInt(id), count: parseInt(count) });
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
|
import { ACTIVITY_TYPE, MAIL_TYPE, STATUS, TASK_TYPE } from '../consts';
|
||||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||||
import { ActivityMonthlyTicketModel, ActivityMonthlyTicketModelType } from '../db/ActivityMonthlyTicket';
|
import { ActivityMonthlyTicketModel, ActivityMonthlyTicketModelType } from '../db/ActivityMonthlyTicket';
|
||||||
import { RewardParam } from '../domain/activityField/rewardField';
|
import { RewardParam } from '../domain/activityField/rewardField';
|
||||||
import { MonthlyTicketData } from '../domain/activityField/monthlyTicketField';
|
import { MonthlyTicketData } from '../domain/activityField/monthlyTicketField';
|
||||||
import { addReward, stringToRewardParam } from './giftPackageService';
|
import { addReward, stringToRewardInter, stringToRewardParam } from './giftPackageService';
|
||||||
import moment = require('moment');
|
import moment = require('moment');
|
||||||
import { ServerlistModel } from '../db/Serverlist';
|
import { ServerlistModel } from '../db/Serverlist';
|
||||||
|
import { getMailContent } from './mailService';
|
||||||
|
import { MailModel, MailType } from '../db/Mail';
|
||||||
|
import { pushMail } from '../pubUtils/interface';
|
||||||
|
import { pinus } from 'pinus';
|
||||||
|
import { resResult } from '../pubUtils/util';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取活动数据
|
* 获取活动数据
|
||||||
@@ -29,6 +34,25 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty
|
|||||||
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId);
|
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId);
|
||||||
let playerData = new MonthlyTicketData(activityData);
|
let playerData = new MonthlyTicketData(activityData);
|
||||||
playerData.setPlayerRecords(playerRecord);
|
playerData.setPlayerRecords(playerRecord);
|
||||||
|
|
||||||
|
if ((playerData.price > 0 && playerData.isOpen) || playerData.price === 0) {
|
||||||
|
if (playerData.todayIndex - 1 > playerData.dayIndex) {//过期还没领取
|
||||||
|
//下发邮件奖励
|
||||||
|
let mails = new Array<MailType>();
|
||||||
|
let pushMessage = new Array<pushMail>();
|
||||||
|
for (let i = playerData.dayIndex + 1; i < playerData.todayIndex; i++) {
|
||||||
|
let goods = stringToRewardInter(playerData.baseReward)
|
||||||
|
await getMailContent(roleId, MAIL_TYPE.MONTHLY_REWARD, [], goods, mails, pushMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
await MailModel.addMails(mails);
|
||||||
|
pushMessage.forEach(({ route, data, uids }) => {
|
||||||
|
pinus.app.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, { mails: data }), uids);
|
||||||
|
});
|
||||||
|
await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, playerData.activityId, playerData.todayIndex - 1);
|
||||||
|
playerData.dayIndex = playerData.todayIndex - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
return playerData;
|
return playerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,14 +83,15 @@ export async function getPlayerMonthlyTicketData(activityId: number, serverId: n
|
|||||||
export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
|
export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
|
||||||
activityId: number,) {
|
activityId: number,) {
|
||||||
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
|
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
|
||||||
|
let playerData = new MonthlyTicketData(activityData);
|
||||||
|
|
||||||
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
|
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
|
||||||
if (!playerRecord) {//没有购买过
|
if (playerData.price > 0 && !playerRecord) {//没有购买过
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
let playerData = new MonthlyTicketData(activityData);
|
|
||||||
playerData.setPlayerRecords(playerRecord);
|
playerData.setPlayerRecords(playerRecord);
|
||||||
if (playerData.isOpen) {
|
if ((playerData.price > 0 && playerData.isOpen) || playerData.price == 0) {
|
||||||
if (playerData.todayIndex > playerData.dayIndex) {//今天还没领取
|
if (playerData.todayIndex > playerData.dayIndex) {//今天还没领取
|
||||||
await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, activityId, playerData.todayIndex);
|
await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, activityId, playerData.todayIndex);
|
||||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.baseReward);
|
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.baseReward);
|
||||||
|
|||||||
@@ -84,6 +84,18 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
|
|||||||
rewardResult = await makePopUpShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
|
rewardResult = await makePopUpShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -475,6 +475,7 @@ export const MAIL_TYPE = {
|
|||||||
PVP_RANK_REWARD: 13,
|
PVP_RANK_REWARD: 13,
|
||||||
GUILD_ACTIVITY_REWARD: 14,
|
GUILD_ACTIVITY_REWARD: 14,
|
||||||
GUILD_DIVIDEND: 15, // 拍卖行分红
|
GUILD_DIVIDEND: 15, // 拍卖行分红
|
||||||
|
MONTHLY_REWARD: 16, // 月卡奖品
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CHAT_SERVER = 'chat-server-1';
|
export const CHAT_SERVER = 'chat-server-1';
|
||||||
|
|||||||
Reference in New Issue
Block a user