修改invite_list助力分数的获取方式
This commit is contained in:
parent
5f93c028ce
commit
e49b50de14
58
src/checkredis2.ts
Normal file
58
src/checkredis2.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
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 { ActivityChest } from 'models/ActivityChest'
|
||||||
|
import { ScoreRecord } from 'models/ScoreRecord'
|
||||||
|
import { DeleteRecord } from 'models/DeleteRecord'
|
||||||
|
import { rankKey, updateRank, updateRankInvite } from 'services/rank.svr'
|
||||||
|
import { ZRedisClient } from 'zutils'
|
||||||
|
import { RANK_SCORE_SCALE } from 'common/Constants'
|
||||||
|
const db = mongoose.connection
|
||||||
|
|
||||||
|
const totalKey = 'uaw_activity:score'
|
||||||
|
const keyInvite = `uaw_activity:invite`
|
||||||
|
|
||||||
|
;(async () => {
|
||||||
|
try {
|
||||||
|
let records = await ScoreRecord.aggregate([
|
||||||
|
{ $match: { type: 'invite_rebate' } },
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: {
|
||||||
|
user: '$user',
|
||||||
|
from: '$data.fromUser',
|
||||||
|
},
|
||||||
|
count: { $sum: '$score' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
])
|
||||||
|
console.time('first')
|
||||||
|
// _id, count
|
||||||
|
console.log('records: ', records.length)
|
||||||
|
let opts = { url: process.env.REDIS }
|
||||||
|
new ZRedisClient(opts)
|
||||||
|
let vals = []
|
||||||
|
for (let i = 0, l = records.length; i < l; i++) {
|
||||||
|
const score = parseInt(records[i].count * 100 + '')
|
||||||
|
const id = `${records[i]._id.from}_${records[i]._id.user}`
|
||||||
|
let totalScoreStr = await new ZRedisClient().zscore(keyInvite, id)
|
||||||
|
let totalScore = parseInt(totalScoreStr + '')
|
||||||
|
if (score != totalScore) {
|
||||||
|
if (Math.abs(score - totalScore) > 1) {
|
||||||
|
console.log(`user: ${records[i]._id.from}_${records[i]._id.user}, score: ${score}, redis: ${totalScore}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i % 1000 === 0) {
|
||||||
|
console.log(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.timeEnd('first')
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
console.log('end')
|
||||||
|
process.exit(0)
|
||||||
|
})()
|
@ -7,7 +7,7 @@ import { ScoreRecord } from 'models/ScoreRecord'
|
|||||||
import { formatAddress } from 'zutils/utils/chain.util'
|
import { formatAddress } from 'zutils/utils/chain.util'
|
||||||
import { formatNumShow, isValidShareCode } from 'common/Utils'
|
import { formatNumShow, isValidShareCode } from 'common/Utils'
|
||||||
import { checkReCaptcha } from 'services/google.svr'
|
import { checkReCaptcha } from 'services/google.svr'
|
||||||
import { RANK_SCORE_SCALE } from 'common/Constants'
|
import { RANK_SCORE_SCALE, SCORE_INVITE_REBATE } from 'common/Constants'
|
||||||
import logger from 'logger/logger'
|
import logger from 'logger/logger'
|
||||||
|
|
||||||
const MAX_LIMIT = 100
|
const MAX_LIMIT = 100
|
||||||
@ -93,12 +93,20 @@ export default class ActivityController extends BaseController {
|
|||||||
const totalKey = rankKey(user.activity)
|
const totalKey = rankKey(user.activity)
|
||||||
const keyInvite = `${user.activity}:invite`
|
const keyInvite = `${user.activity}:invite`
|
||||||
let users = await ActivityUser.find({ inviteUser: user.id })
|
let users = await ActivityUser.find({ inviteUser: user.id })
|
||||||
|
let records = await ScoreRecord.find({ type: SCORE_INVITE_REBATE, user: user.id, activity: user.activity })
|
||||||
|
let scoreMap = new Map()
|
||||||
|
for (let r of records) {
|
||||||
|
if (!scoreMap.has(r.data.fromUser)) {
|
||||||
|
scoreMap.set(r.data.fromUser, 0)
|
||||||
|
}
|
||||||
|
scoreMap.set(r.data.fromUser, scoreMap.get(r.data.fromUser) + r.score)
|
||||||
|
}
|
||||||
let results = []
|
let results = []
|
||||||
for (let u of users) {
|
for (let u of users) {
|
||||||
const totalScore = await new ZRedisClient().zscore(totalKey, u.id)
|
const totalScore = await new ZRedisClient().zscore(totalKey, u.id)
|
||||||
const inviteScore = await new ZRedisClient().zscore(keyInvite, `${user.id}_${u.id}`)
|
// const inviteScore = await new ZRedisClient().zscore(keyInvite, `${user.id}_${u.id}`)
|
||||||
const score = totalScore ? parseInt(totalScore + '') / RANK_SCORE_SCALE : 0
|
const score = totalScore ? parseInt(totalScore + '') / RANK_SCORE_SCALE : 0
|
||||||
const scoreInvite = inviteScore ? parseInt(inviteScore + '') / RANK_SCORE_SCALE : 0
|
const scoreInvite = scoreMap.get(u.id) || 0
|
||||||
results.push({
|
results.push({
|
||||||
// user: u.id,
|
// user: u.id,
|
||||||
level: rankLevel(score),
|
level: rankLevel(score),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user