HJ_Server/src/public/scheduler/scheduler_clsl.ts
DESKTOP-15R5JU0\legu 97e070ea81 init
2023-11-17 12:02:12 +08:00

86 lines
2.5 KiB
TypeScript

import { EmailFun } from '../email';
import { Rank } from '../rank/rank';
import { Scheduler, schedulerType } from './scheduler';
export class SchedulerClslCrossCtor extends Scheduler {
id: schedulerType = 'clsl_cross_ctor';
time = G.gc.clsl_com.divideTime;
name = '丛林猎手赛季初始化';
type: 'day' | 'week' = 'week';
async read() {
await this.ctorStartTime();
this.isReady = false;
}
async start() {
G.mongodb.collection('clslCrossUser').updateMany({}, { $set: { allStar: 0 } });
Rank.list.clslCross.clear();
await this.record();
}
}
export class SchedulerClslLocalCtor extends SchedulerClslCrossCtor {
id: schedulerType = 'clsl_local_ctor';
async start() {
G.mongodb.cPlayerInfo('clsl').updateMany({ type: 'clsl' }, { $set: { allStar: 0 } });
await this.record();
}
}
export class SchedulerClslPrize extends Scheduler {
id: schedulerType = 'clsl_prize';
time = G.gc.clsl_com.prizeTime;
name = '丛林猎手赛季发奖';
type: 'day' | 'week' = 'week';
async read() {
await this.ctorStartTime();
this.isReady = false;
}
async start() {
// 段位奖励
let locals = await G.mongodb.cPlayerInfo('clsl').find({ type: 'clsl' }).toArray();
G.gc.clsl_com.danPrize.forEach((conf) => {
let sends = locals.filter(l => l.allStar >= conf.star[0]).map(s => s.uid);
// locals.remove(l => sends.includes(l.uid));
sends.forEach(uid => {
EmailFun.addEmail({
uid: uid,
type: 'system',
title: G.gc.clsl_com.email_dan.title,
content: G.gc.clsl_com.email_dan.content,
prize: conf.prize,
contentInsertArr: [conf.star]
});
});
})
// 排名奖励
let crossUids = (await G.clientCross.callApi('clsl/RankUids', {})).res.uids;
G.gc.clsl_com.rankPrize.forEach((conf) => {
let players = crossUids.slice(conf.rank[0] - 1, conf.rank[1]);
players.forEach((uid, index) => {
EmailFun.addEmail({
uid: uid,
type: 'system',
title: G.gc.clsl_com.email_rank.title,
content: G.gc.clsl_com.email_rank.content,
prize: conf.prize,
contentInsertArr: [conf.rank[0] + index]
});
});
});
await this.record();
}
}