From 65689b13954adda33bff97dd0596dd76dc405685 Mon Sep 17 00:00:00 2001 From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com> Date: Thu, 23 May 2024 14:29:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E7=BB=9F=E8=AE=A1=E7=99=BD=E5=90=8D=E5=8D=95=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=89=80=E5=BE=97=E7=A7=AF=E5=88=86=E7=9A=84=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/rankquery2.ts | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/rankquery2.ts diff --git a/package.json b/package.json index 111482f..cdad5fa 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "checkredis": "ts-node -r tsconfig-paths/register src/checkredis.ts", "additem": "ts-node -r tsconfig-paths/register src/addboxdata.ts", "fixdata": "ts-node -r tsconfig-paths/register src/fixdata.ts", - "rankquery": "ts-node -r tsconfig-paths/register src/rankquery.ts", + "rankquery": "ts-node -r tsconfig-paths/register src/rankquery2.ts", "taskid": "ts-node -r tsconfig-paths/register src/generateTaskId.ts", "token": "ts-node -r tsconfig-paths/register src/generateToken.ts", "ingame": "ts-node -r tsconfig-paths/register src/fixIngame.ts", diff --git a/src/rankquery2.ts b/src/rankquery2.ts new file mode 100644 index 0000000..f2c1e11 --- /dev/null +++ b/src/rankquery2.ts @@ -0,0 +1,62 @@ +import mongoose from 'mongoose' +import * as dotenv from 'dotenv' +const envFile = process.env.NODE_ENV && process.env.NODE_ENV === 'production' ? `.env.production` : '.env.development' +dotenv.config({ path: envFile }) +console.log(process.env.DB_MAIN) +import { ScoreRecord } from 'models/ScoreRecord' +import { FixAddress } from 'models/ctrl/FixAddress' +import { SCORE_INVITE_REBATE } from 'common/Constants' + +const db = mongoose.connection + +;(async () => { + try { + let begin = new Date('2024-05-10T00:00:00.000Z') + const oneDay = 24 * 60 * 60 * 1000 + let end = new Date(begin.getTime() + oneDay) + let whiteSet = new Set() + console.time('address') + await FixAddress.find() + .cursor() + .eachAsync(async doc => { + whiteSet.add(doc.user) + }) + console.timeEnd('address') + console.time('score') + while (end < new Date()) { + let scoreTask = 0 + let scoreShare = 0 + let scoreWhite = 0 + await ScoreRecord.find({ $and: [{ createdAt: { $gte: begin } }, { createdAt: { $lt: end } }] }) + .cursor() + .eachAsync(async doc => { + if (doc.type === SCORE_INVITE_REBATE) { + scoreShare += doc.score + } else { + scoreTask += doc.score + } + if (whiteSet.has(doc.user)) { + scoreWhite += doc.score + } + }) + + console.log( + begin.toLocaleDateString(), + '\t', + scoreTask + scoreShare, + '\t', + scoreTask, + '\t', + scoreShare, + '\t', + scoreWhite, + ) + begin = end + end = new Date(begin.getTime() + oneDay) + } + } catch (e) { + console.log(e) + } + console.timeEnd('score') + process.exit(0) +})()