53 lines
2.2 KiB
TypeScript
53 lines
2.2 KiB
TypeScript
import { FrontendOrBackendSession, pinus } from "pinus";
|
||
import { refreshMails } from './mailService';
|
||
import { STATUS } from '../consts/statusCode';
|
||
import { resResult, shouldRefresh, shouldRefreshWeek } from '../pubUtils/util';
|
||
import { nowSeconds } from "../pubUtils/timeUtil";
|
||
import { RoleModel } from '../db/Role';
|
||
import { refDailyTask, refDailyTaskBox } from './taskService'
|
||
|
||
/**
|
||
* 刷新
|
||
* @param session
|
||
*/
|
||
export async function refresh(session: FrontendOrBackendSession) {
|
||
const roleId = session.get('roleId');
|
||
const sid = session.get('sid');
|
||
const serverId: number = parseInt(session.get('serverId'));
|
||
let updatedMailAt: number = parseInt(session.get('updatedMailAt')); //记录上次更新gm邮件的时间
|
||
let uids = [{uid: roleId, sid}];
|
||
pinus.app.get('channelService').pushMessageByUids('onPushCurrentTime', resResult(STATUS.SUCCESS, {time: Date.now()}), uids);
|
||
let nowTime = nowSeconds();
|
||
if (!!roleId && updatedMailAt < nowTime - 5) { //保持最少5秒间隙
|
||
session.set('updatedMailAt', nowTime);
|
||
session.push('updatedMailAt', () => {});
|
||
RoleModel.updatedRoleMailAt(roleId, nowTime);
|
||
await refreshMails(roleId, sid, serverId, updatedMailAt);
|
||
}
|
||
await refreshDaily(session);
|
||
}
|
||
|
||
/**
|
||
* 每日刷新
|
||
* @param session
|
||
*/
|
||
export async function refreshDaily(session: FrontendOrBackendSession) {
|
||
|
||
if(session.get('roleId')) {
|
||
let refDaily: number = session.get('refDaily'); // 10位时间戳,每天每人更新一次
|
||
let refWeekly: number = session.get('refWeekly'); // 10位时间戳,每天每人更新一次
|
||
if(!refDaily || shouldRefresh(new Date(refDaily * 1000), new Date())) {
|
||
refDaily = nowSeconds();
|
||
session.set('refDaily', refDaily);
|
||
session.push('refDaily', () => {});
|
||
await refDailyTask(session.get('roleId'), session.get('sid'));
|
||
}
|
||
|
||
if(!refWeekly || shouldRefreshWeek(new Date(refWeekly * 1000), new Date())) {
|
||
refWeekly = nowSeconds();
|
||
session.set('refWeekly', refWeekly);
|
||
session.push('refWeekly', () => {});
|
||
await refDailyTaskBox(session.get('roleId'), session.get('sid'));
|
||
}
|
||
}
|
||
} |