✨ feat(活动): 节日活动高级签到邮件补发
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
import moment = require('moment');
|
||||
import { ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_VIP_OPEN_LIMIT, STATUS } from '../../consts';
|
||||
import { ACTIVITY_TYPE, MAIL_TYPE, SERVER_OPEN_TIME, SIGNIN_VIP_OPEN_LIMIT, STATUS } from '../../consts';
|
||||
import { ActivityModelType } from '../../db/Activity';
|
||||
import { ActivitySignInModel, ActivitySignInModelType } from '../../db/ActivitySignIn';
|
||||
import { SignInData } from '../../domain/activityField/signInField';
|
||||
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
|
||||
import { getActivitiesByType, getActivityById } from './activityService';
|
||||
import { RewardInter } from '../../pubUtils/interface';
|
||||
import { stringToRewardInter } from './giftPackageService';
|
||||
import { sendMailByContent } from '../mailService';
|
||||
|
||||
/**
|
||||
* 获取活动数据
|
||||
@@ -135,4 +138,27 @@ export async function checkSignInCanBuy(roleId: string, serverId: number, activi
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// 补发签到邮件
|
||||
export async function repairSignInMail(playerData: SignInData) {
|
||||
if(!playerData || playerData.productID == '&') return;
|
||||
let playerRecords = await ActivitySignInModel.findByActivity(playerData.activityId, 1);
|
||||
let hasRepaireRoleIds: string[] = []
|
||||
for(let playerRecord of playerRecords) {
|
||||
if(playerRecord.hasRepair) continue;
|
||||
let notSendGoods: RewardInter[] = [];
|
||||
let records = playerRecord.records||[];
|
||||
for(let item of playerData.list) {
|
||||
let curRec = records.find(rec => rec.dayIndex == item.dayIndex);
|
||||
if(!curRec) {
|
||||
notSendGoods.push(...stringToRewardInter(item.reward));
|
||||
}
|
||||
}
|
||||
if(notSendGoods.length > 0) {
|
||||
await sendMailByContent(MAIL_TYPE.REPAIRE_SIGN_IN, playerRecord.roleId, { goods: notSendGoods });
|
||||
hasRepaireRoleIds.push(playerRecord.roleId);
|
||||
}
|
||||
}
|
||||
await ActivitySignInModel.repairSignIn(playerData.activityId, hasRepaireRoleIds);
|
||||
}
|
||||
@@ -53,6 +53,11 @@ import { RewardInter } from '../pubUtils/interface';
|
||||
import { stringToRewardInter } from './activity/giftPackageService';
|
||||
import { autoCreateServerSchedule } from './serverService';
|
||||
import { setHiddenData } from './memoryCache/hiddenData';
|
||||
import { SignInData } from '../domain/activityField/signInField';
|
||||
import * as util from 'util';
|
||||
import { ActivitySignInModel } from '../db/ActivitySignIn';
|
||||
import { repairSignInMail } from './activity/signInService';
|
||||
|
||||
|
||||
const PER_SECOND = 1 * 1000;
|
||||
const PER_DAY = 24 * 60 * 60;
|
||||
@@ -126,6 +131,9 @@ export async function init() {
|
||||
|
||||
// 月基金每月未领取
|
||||
initMonthlyFundSchedule();
|
||||
|
||||
// 节日活动高级签到补发
|
||||
initVipSignInMailSchedule()
|
||||
}
|
||||
|
||||
// 每日刷新
|
||||
@@ -998,6 +1006,21 @@ async function initMonthlyFundSchedule() {
|
||||
});
|
||||
}
|
||||
|
||||
// 高级签到自动补发
|
||||
export async function initVipSignInMailSchedule() {
|
||||
let activities = await ActivityModel.findOpenTypeByTime(ACTIVITY_TYPE.COMMON_SIGN_IN);
|
||||
for(let activityData of activities) {
|
||||
let playerData = new SignInData(activityData, 0, 0);
|
||||
if(!playerData || playerData.productID == '&') continue;
|
||||
|
||||
const jobKey = `vipSignMailJob${playerData.activityId}`;
|
||||
if(scheduledJobs[jobKey]) scheduledJobs[jobKey].cancel();
|
||||
scheduleJob(jobKey, playerData.endTime, async () => {
|
||||
await repairSignInMail(playerData);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export async function monthlyFundSchedule(roundIndex: number) {
|
||||
let activityMap = new Map<number, ActivityModelType>();
|
||||
let playerDatas = await ActivityMonthlyFundModel.findNotReceivedReward(roundIndex);
|
||||
|
||||
Reference in New Issue
Block a user