修改排行榜的存储方式

This commit is contained in:
CounterFire2023 2024-04-24 18:57:29 +08:00
parent 084f8d195a
commit 4dc6dc1c6a
3 changed files with 8 additions and 12 deletions

View File

@ -28,7 +28,8 @@ class GameController extends BaseController {
logger.db('checkin', req)
const user = req.user
const { address } = user
let { day } = req.params
let { day, days } = req.params
day = day || days
if (day) {
if (!isValidDayTag(day)) {
throw new ZError(11, 'invalid day')

View File

@ -45,7 +45,7 @@ const updateRedis2 = (key, vals) => {
new ZRedisClient(opts)
let vals = []
for (let i = 0, l = records.length; i < l; i++) {
vals.push(records[i].count * 100 + 1 - Date.now() / 1000 / 10000000000)
vals.push((records[i].count * 100) | 0)
vals.push(records[i]._id)
if (i % 1000 === 0) {
await updateRedis2(totalKey, vals)
@ -74,7 +74,7 @@ const updateRedis2 = (key, vals) => {
console.log('records2: ', records2.length)
let vals2 = []
for (let i = 0, l = records.length; i < l; i++) {
vals2.push(records[i].count * 100)
vals2.push((records[i].count * 100) | 0)
vals2.push(`${records[i]._id.from}_${records[i]._id.user}`)
if (i % 1000 === 0) {
await updateRedis2(keyInvite, vals2)

View File

@ -49,7 +49,7 @@ export const updateRankScore = async ({
const score1 = score * INVITE_REBATE
let scoreParams1 = Object.assign({ fromUser: user }, scoreParams)
const keyInvite = `${activity}:invite`
await updateRankInvite(keyInvite, parseInt(score1 * RANK_SCORE_SCALE + ''), `${userMod.inviteUser}_${user}`)
await updateRankInvite(keyInvite, score1, `${userMod.inviteUser}_${user}`)
await updateRankScore({
user: userMod.inviteUser,
score: score1,
@ -69,17 +69,12 @@ export const updateRankScore = async ({
* @param member
*/
export const updateRank = async (key: string, score: number, member: string) => {
let scoreSaved = (await new ZRedisClient().zscore(key, member)) + ''
if (scoreSaved) {
scoreSaved = scoreSaved.substring(0, scoreSaved.indexOf('.'))
}
let scoreOld = parseInt(scoreSaved || '0')
score = score * RANK_SCORE_SCALE + scoreOld
const scoreToSave = score + 1 - Date.now() / 1000 / 10000000000
await new ZRedisClient().zadd(key, scoreToSave, member)
score = parseInt(score * RANK_SCORE_SCALE + '')
await new ZRedisClient().zincrby(key, score, member)
}
export const updateRankInvite = async (key: string, score: number, member: string) => {
score = parseInt(score * RANK_SCORE_SCALE + '')
await new ZRedisClient().zincrby(key, score, member)
}