活动:限时排行榜和充值修改

This commit is contained in:
luying
2022-03-04 17:25:31 +08:00
parent 8475b532f0
commit d9314b5d84
3 changed files with 13 additions and 30 deletions

View File

@@ -68,10 +68,14 @@ export async function sendRankMail(data: TimeLimitRankData) {
if(r.infoKey == REDIS_KEY.GUILD_INFO) {
let allRank = <GuildRankInfo[]>(await r.getRankByRange());
for(let { rank, code, name } of allRank) {
for(let { rank, code, name, leader } of allRank) {
let reward = data.getRewardByRank(rank);
if(reward) {
await sendMailToGuildByContent(MAIL_TYPE.TIME_LIMIT_RANK, code, {
params: [data.tabName,`${rank}`],
goods: stringToRewardInter(reward.guildRewards)
});
if(leader.roleId) await sendMailByContent(MAIL_TYPE.TIME_LIMIT_RANK, leader.roleId, {
params: [data.tabName,`${rank}`],
goods: stringToRewardInter(reward.rewards)
});

View File

@@ -15,15 +15,10 @@ interface RechargeMoneyWeightInDb {
weight: number; // 权重,先随机出这个品级的物品的概率,然后再平均随机出这个品级下的物品
}
interface RechargeMoneyPercentInDb {
todayIndex: number; // 第几天和前面排名奖励的填法一样如第1天、第2-10天只需填todayIndex=1和10的两项
data: RechargeMoneyWeightInDb[]; // 这一天的权重
}
interface RechargeMoneyInDb {
pool: RechargeMoneyPoolInDb[];
minPrice: number;
percent: RechargeMoneyPercentInDb[];
percent: RechargeMoneyWeightInDb[];
}
// 充值记录
@@ -56,25 +51,13 @@ export class RechargeMoneyWeight {
this.weight = data.weight;
}
}
export class RechargeMoneyPercent {
todayIndex: number;
data: RechargeMoneyWeight[] = [];
constructor(data: RechargeMoneyPercentInDb) {
this.todayIndex = data.todayIndex;
for(let obj of data.data) {
this.data.push(new RechargeMoneyWeight(obj));
}
}
}
// 累计充值数据
export class RechargeMoneyData extends ActivityBase {
private map: Map<number, number> = new Map(); // poolId => index
private percentMap: Map<number, number> = new Map(); // todayIndex => 的index
pool: RechargeMoneyPool[] = [];
minPrice: number = 0;
percent: RechargeMoneyPercent[] = [];
percent: RechargeMoneyWeight[] = [];
ticketCnt: number = 0; // 签数
recordArr: ActivityRechargeMoneyModelType[] = [];
@@ -84,15 +67,9 @@ export class RechargeMoneyData extends ActivityBase {
return this.pool[index];
}
private findTodayPercent() {
let index = this.percentMap.get(this.todayIndex);
return this.percent[index];
}
public pull() {
let percent = this.findTodayPercent();
if(!percent) return false;
let randPercent = percent.data.filter(cur => {
let percent = this.percent;
let randPercent = percent.filter(cur => {
let hasAllGet = true;
for(let { quality, hasGet } of this.pool) {
if(quality == cur.quality && !hasGet) hasAllGet = false;
@@ -150,9 +127,8 @@ export class RechargeMoneyData extends ActivityBase {
}
this.minPrice = dataObj.minPrice;
for(let percent of dataObj.percent) {
let obj = new RechargeMoneyPercent(percent);
let obj = new RechargeMoneyWeight(percent);
this.percent.push(obj);
this.percentMap.set(obj.todayIndex, this.percent.length - 1);
}
}

View File

@@ -5,6 +5,7 @@ import { ActivityBase } from './activityField';
interface TimeLimitRewardInDb {
rank: number; // 第几名
rewards: string; // type&id&count
guildRewards: string; // 军团整体奖励
}
interface TimeLimitInDb {
@@ -20,10 +21,12 @@ interface TimeLimitInDb {
export class TimeLimitRankReward {
rank: number
rewards: string;
guildRewards: string;
constructor(data: TimeLimitRewardInDb) {
this.rank = data.rank;
this.rewards = data.rewards;
this.guildRewards = data.guildRewards;
}
}