修改排行榜的存储方式
This commit is contained in:
parent
084f8d195a
commit
4dc6dc1c6a
@ -28,7 +28,8 @@ class GameController extends BaseController {
|
|||||||
logger.db('checkin', req)
|
logger.db('checkin', req)
|
||||||
const user = req.user
|
const user = req.user
|
||||||
const { address } = user
|
const { address } = user
|
||||||
let { day } = req.params
|
let { day, days } = req.params
|
||||||
|
day = day || days
|
||||||
if (day) {
|
if (day) {
|
||||||
if (!isValidDayTag(day)) {
|
if (!isValidDayTag(day)) {
|
||||||
throw new ZError(11, 'invalid day')
|
throw new ZError(11, 'invalid day')
|
||||||
|
@ -45,7 +45,7 @@ const updateRedis2 = (key, vals) => {
|
|||||||
new ZRedisClient(opts)
|
new ZRedisClient(opts)
|
||||||
let vals = []
|
let vals = []
|
||||||
for (let i = 0, l = records.length; i < l; i++) {
|
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)
|
vals.push(records[i]._id)
|
||||||
if (i % 1000 === 0) {
|
if (i % 1000 === 0) {
|
||||||
await updateRedis2(totalKey, vals)
|
await updateRedis2(totalKey, vals)
|
||||||
@ -74,7 +74,7 @@ const updateRedis2 = (key, vals) => {
|
|||||||
console.log('records2: ', records2.length)
|
console.log('records2: ', records2.length)
|
||||||
let vals2 = []
|
let vals2 = []
|
||||||
for (let i = 0, l = records.length; i < l; i++) {
|
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}`)
|
vals2.push(`${records[i]._id.from}_${records[i]._id.user}`)
|
||||||
if (i % 1000 === 0) {
|
if (i % 1000 === 0) {
|
||||||
await updateRedis2(keyInvite, vals2)
|
await updateRedis2(keyInvite, vals2)
|
||||||
|
@ -49,7 +49,7 @@ export const updateRankScore = async ({
|
|||||||
const score1 = score * INVITE_REBATE
|
const score1 = score * INVITE_REBATE
|
||||||
let scoreParams1 = Object.assign({ fromUser: user }, scoreParams)
|
let scoreParams1 = Object.assign({ fromUser: user }, scoreParams)
|
||||||
const keyInvite = `${activity}:invite`
|
const keyInvite = `${activity}:invite`
|
||||||
await updateRankInvite(keyInvite, parseInt(score1 * RANK_SCORE_SCALE + ''), `${userMod.inviteUser}_${user}`)
|
await updateRankInvite(keyInvite, score1, `${userMod.inviteUser}_${user}`)
|
||||||
await updateRankScore({
|
await updateRankScore({
|
||||||
user: userMod.inviteUser,
|
user: userMod.inviteUser,
|
||||||
score: score1,
|
score: score1,
|
||||||
@ -69,17 +69,12 @@ export const updateRankScore = async ({
|
|||||||
* @param member
|
* @param member
|
||||||
*/
|
*/
|
||||||
export const updateRank = async (key: string, score: number, member: string) => {
|
export const updateRank = async (key: string, score: number, member: string) => {
|
||||||
let scoreSaved = (await new ZRedisClient().zscore(key, member)) + ''
|
score = parseInt(score * RANK_SCORE_SCALE + '')
|
||||||
if (scoreSaved) {
|
await new ZRedisClient().zincrby(key, score, member)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const updateRankInvite = async (key: string, score: number, member: string) => {
|
export const updateRankInvite = async (key: string, score: number, member: string) => {
|
||||||
|
score = parseInt(score * RANK_SCORE_SCALE + '')
|
||||||
await new ZRedisClient().zincrby(key, score, member)
|
await new ZRedisClient().zincrby(key, score, member)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user