core: fix level & bus event payload

This commit is contained in:
undefined committed 2021-04-19 13:01:32 +08:00
1 parent 878bcbc262
commit 87d8dce528
3 files changed
+7 -6

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "hydrooj", "name": "hydrooj",
"version": "2.23.4", "version": "2.23.5",
"bin": "bin/hydrooj.js", "bin": "bin/hydrooj.js",
"main": "dist/loader.js", "main": "dist/loader.js",
"typings": "dist/loader.d.ts", "typings": "dist/loader.d.ts",
+2 -4
View File
@@ -110,13 +110,11 @@ export async function calcLevel(domainId: string, report: Function) {
report({ message: 'Updating users levelled {0}'.format(levels[i][0]) }); report({ message: 'Updating users levelled {0}'.format(levels[i][0]) });
const query: FilterQuery<Udoc> = { const query: FilterQuery<Udoc> = {
domainId, domainId,
$and: [{ rank: { $lte: levels[i][1] } }], $and: [{ rank: { $lte: (levels[i][1] * rank) / 100 } }],
}; };
if (i < levels.length - 1) query.$and.push({ rank: { $gt: levels[i + 1][1] } }); if (i < levels.length - 1) query.$and.push({ rank: { $gt: (levels[i + 1][1] * rank) / 100 } });
bulk.find(query).update({ $set: { level: levels[i][0] } }); bulk.find(query).update({ $set: { level: levels[i][0] } });
} }
const i = levels.length - 1;
bulk.find({ domainId, rank: { $lte: levels[i][1] } }).update({ $set: { level: levels[i][0] } });
await bulk.execute(); await bulk.execute();
} }
+4 -1
View File
@@ -1,6 +1,7 @@
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
import cluster from 'cluster'; import cluster from 'cluster';
import type { Db, FilterQuery, OnlyFieldsOfType } from 'mongodb'; import type { Db, FilterQuery, OnlyFieldsOfType } from 'mongodb';
import serialize from 'serialize-javascript';
import { argv } from 'yargs'; import { argv } from 'yargs';
import type { Handler } from './server'; import type { Handler } from './server';
import { Logger } from '../logger'; import { Logger } from '../logger';
@@ -179,13 +180,15 @@ export function boardcast<K extends keyof EventMap>(event: K, ...payload: Parame
process.send({ process.send({
event: 'bus', event: 'bus',
eventName: event, eventName: event,
payload, payload: serialize(payload),
}); });
} else parallel(event, ...payload); } else parallel(event, ...payload);
} }
async function messageHandler(worker: cluster.Worker, msg: any) { async function messageHandler(worker: cluster.Worker, msg: any) {
if (!msg) msg = worker; if (!msg) msg = worker;
// eslint-disable-next-line no-eval
if (typeof msg.payload === 'string') msg.payload = eval(msg.payload);
if (msg.event) { if (msg.event) {
if (msg.event === 'bus') { if (msg.event === 'bus') {
if (cluster.isMaster) { if (cluster.isMaster) {