增加一个用于统计白名单地址所得积分的脚本

This commit is contained in:
CounterFire2023 2024-05-23 14:29:27 +08:00
parent 1a16228fb8
commit 65689b1395
2 changed files with 63 additions and 1 deletions

View File

@ -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",

62
src/rankquery2.ts Normal file
View File

@ -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)
})()