HJ_Server/src/public/scheduler/scheduler_newDay.ts
xcy 075c60a9f8 fix:
终身卡定时器log
2023-12-28 14:42:45 +08:00

90 lines
3.3 KiB
TypeScript

import { Scheduler, schedulerType } from './scheduler';
import { PublicShared } from "../../shared/public/public";
import { Wjjl } from "../../module/collection_wjjl";
import { ZhanLingTasks } from "../zhanling";
import { setGud } from '../gud';
import { EmailFun } from '../email';
export class SchedulerNewDayLocalCtor extends Scheduler {
id: schedulerType = 'newDay_local_ctor';
time = 0;
name = '定时推送跨天通知';
type: 'day' | 'week' = 'day';
// todo 测试
// get nextTime() {
// return G.time + 60;
// }
async read() {
await this.ctorStartTime();
this.isReady = false;
}
async start() {
let users = Object.values(G.server.uid_connections)
if (users.length) {
for (let item of users) {
let gud = item.gud
let add: k_v<any> = {};
//每天首次登陆
if (!gud.loginTime || PublicShared.getToDayZeroTime(gud.loginTime) != PublicShared.getToDayZeroTime(G.time)) {
gud.loginDays = gud.loginDays ? gud.loginDays + 1 : 1;
add.loginDays = gud.loginDays;
Wjjl.setVal(gud.uid, `toDayLogin_${PublicShared.getOpenServerDay(gud.cTime, G.time)}`, 1);
if (gud.logoutTime && PublicShared.getToWeekMondayZeroTime(gud.logoutTime) < PublicShared.getToWeekMondayZeroTime(G.time)) {
ZhanLingTasks.clearLog(gud.uid, 'week');
}
G.emit('FIRST_LOGIN_EVERY_DAY', gud, gud.loginTime, G.time);
}
gud.loginTime = G.time;
add.loginTime = G.time;
if (Object.keys(add).length > 0) {
G.mongodb.collection('user').updateOne({ bindUid: gud.bindUid, sid: gud.sid }, {
$set: {
...add
}
});
setGud(gud.uid, add);
}
G.server.sendMsgByUid(gud.uid, 'msg_s2c/PlayerChange', gud)
}
G.server.broadcastClusterMsg('msg_s2c/NewDay', { time: this.zeroTime });
}
(async () => {
// 每周一,发放终身卡
if (PublicShared.getWeek(G.time) != 1) {
console.log("不是周一,不发放终身卡", PublicShared.getWeek(G.time));
return
};
let logs = await G.mongodb.collection("payLogNew").find(
{ key: "zhongshengka", del_time: { $exists: false } }, { projection: { _id: 0, } }
).toArray();
if (logs.length == 0) {
console.log("没有终身卡数据,不发放终身卡");
}
let con = G.gc.payEmail.zhongshenka.filter(e => e.day == 7)[0];
for (let i = 0; i < logs.length; i++) {
console.log("发放终身卡", logs[i].uid);
// 发送邮件
EmailFun.addEmail({
uid: logs[i].uid,
type: con.type,
title: con.title,
content: con.content,
contentInsertArr: [],
createTime: G.time,
prize:con.prize,
})
}
})()
}
}