活动:月卡过期奖品发放邮件
This commit is contained in:
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user