活动:月卡过期奖品发放邮件

This commit is contained in:
qiaoxin
2021-05-27 16:17:44 +08:00
parent 9b80dae800
commit 068d6e1202
5 changed files with 60 additions and 7 deletions

View File

@@ -233,7 +233,7 @@ export class ActivityHandler {
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.MONTHLY_TICKET_1,
type: ACTIVITY_TYPE.MONTHLY_TICKET_2,
activityId: data.activityId,
data,
});

View File

@@ -142,4 +142,19 @@ export function stringToConsumeParam(rewardStr: string): Array<ItemInter> {
result.push({ type: parseInt(type), id: parseInt(id), count: parseInt(count) });
}
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
}

View File

@@ -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 { ActivityMonthlyTicketModel, ActivityMonthlyTicketModelType } from '../db/ActivityMonthlyTicket';
import { RewardParam } from '../domain/activityField/rewardField';
import { MonthlyTicketData } from '../domain/activityField/monthlyTicketField';
import { addReward, stringToRewardParam } from './giftPackageService';
import { addReward, stringToRewardInter, stringToRewardParam } from './giftPackageService';
import moment = require('moment');
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 playerData = new MonthlyTicketData(activityData);
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;
}
@@ -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[],
activityId: number,) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new MonthlyTicketData(activityData);
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
if (!playerRecord) {//没有购买过
if (playerData.price > 0 && !playerRecord) {//没有购买过
return null;
}
let playerData = new MonthlyTicketData(activityData);
playerData.setPlayerRecords(playerRecord);
if (playerData.isOpen) {
if ((playerData.price > 0 && playerData.isOpen) || playerData.price == 0) {
if (playerData.todayIndex > playerData.dayIndex) {//今天还没领取
await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, activityId, playerData.todayIndex);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.baseReward);

View File

@@ -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)
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:
break;
}

View File

@@ -475,6 +475,7 @@ export const MAIL_TYPE = {
PVP_RANK_REWARD: 13,
GUILD_ACTIVITY_REWARD: 14,
GUILD_DIVIDEND: 15, // 拍卖行分红
MONTHLY_REWARD: 16, // 月卡奖品
};
export const CHAT_SERVER = 'chat-server-1';