格式化score返回
This commit is contained in:
parent
ea8dae5ae7
commit
95e6f81713
@ -59,3 +59,5 @@ export const SCORE_ENHANCE_CHEST_GIFT = 'enhance_chest_gift'
|
||||
|
||||
// google reCaptcha最小分数
|
||||
export const RECAPTCHA_MIN_SCORE = 0.5
|
||||
// 排行榜分数缩放系数
|
||||
export const RANK_SCORE_SCALE = 100
|
||||
|
@ -7,3 +7,13 @@ export const isObjectIdString = (str: string) => {
|
||||
export const isValidShareCode = (str: string) => {
|
||||
return /^[3fBCM8j17XNA9xYun4wmLWep2oHFlhPcgyEJskqOz6GK0UtV5ZRaDSvrTbidQI]{10}$/.test(str)
|
||||
}
|
||||
|
||||
export const formatNumShow = (num: number) => {
|
||||
if (num >= 10) {
|
||||
return num.toString()
|
||||
} else if (num === 0) {
|
||||
return '0'
|
||||
} else {
|
||||
return num.toFixed(1)
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,9 @@ import { rankKey, rankLevel } from 'services/rank.svr'
|
||||
import { BaseController, ROLE_ANON, SyncLocker, ZError, ZRedisClient, role, router } from 'zutils'
|
||||
import { ScoreRecord } from 'models/ScoreRecord'
|
||||
import { formatAddress } from 'zutils/utils/chain.util'
|
||||
import { isValidShareCode } from 'common/Utils'
|
||||
import { formatNumShow, isValidShareCode } from 'common/Utils'
|
||||
import { checkReCaptcha } from 'services/google.svr'
|
||||
import { RANK_SCORE_SCALE } from 'common/Constants'
|
||||
|
||||
const MAX_LIMIT = 100
|
||||
export default class ActivityController extends BaseController {
|
||||
@ -93,15 +94,15 @@ export default class ActivityController extends BaseController {
|
||||
for (let u of users) {
|
||||
const totalScore = await new ZRedisClient().zscore(totalKey, u.id)
|
||||
const inviteScore = await new ZRedisClient().zscore(keyInvite, `${user.id}_${u.id}`)
|
||||
const score = totalScore ? parseInt(totalScore + '') : 0
|
||||
const scoreInvite = inviteScore ? parseInt(inviteScore + '') / 100 : 0
|
||||
const score = totalScore ? parseInt(totalScore + '') / RANK_SCORE_SCALE : 0
|
||||
const scoreInvite = inviteScore ? parseInt(inviteScore + '') / RANK_SCORE_SCALE : 0
|
||||
results.push({
|
||||
// user: u.id,
|
||||
level: rankLevel(score),
|
||||
nickname: u.twitterName || u.discordName || formatAddress(u.address),
|
||||
avatar: u.twitterAvatar || '',
|
||||
score,
|
||||
scoreInvite,
|
||||
score: formatNumShow(score),
|
||||
scoreInvite: formatNumShow(scoreInvite),
|
||||
})
|
||||
}
|
||||
return results
|
||||
@ -116,7 +117,7 @@ export default class ActivityController extends BaseController {
|
||||
const records = await ScoreRecord.find({ user: user.id, activity: user.activity })
|
||||
return records.map(record => {
|
||||
return {
|
||||
score: record.score,
|
||||
score: formatNumShow(record.score),
|
||||
type: record.type,
|
||||
//@ts-ignore
|
||||
time: record.createdAt.getTime(),
|
||||
@ -138,16 +139,8 @@ export default class ActivityController extends BaseController {
|
||||
// const yesterdayKey = rankKey(activity, yesterday())
|
||||
for (let i = 0; i < records.length; i += 2) {
|
||||
const id = records[i]
|
||||
let score = parseInt(records[i + 1])
|
||||
let score = formatNumShow(parseInt(records[i + 1]) / RANK_SCORE_SCALE)
|
||||
const user = await ActivityUser.findById(id)
|
||||
// let invite = ''
|
||||
// if (user?.inviteUser) {
|
||||
// const inviteUser = await ActivityUser.findById(user.inviteUser)
|
||||
// if (inviteUser) {
|
||||
// invite = inviteUser.address
|
||||
// }
|
||||
// }
|
||||
// const yesterdayScore = await new ZRedisClient().zscore(yesterdayKey, id)
|
||||
const rank = start + i / 2 + 1
|
||||
results.push({
|
||||
rank,
|
||||
|
@ -14,7 +14,7 @@ import {
|
||||
SCORE_OPEN_CHEST,
|
||||
} from 'common/Constants'
|
||||
import { formatAddress } from 'zutils/utils/chain.util'
|
||||
import { isObjectIdString, isValidShareCode } from 'common/Utils'
|
||||
import { formatNumShow, isObjectIdString, isValidShareCode } from 'common/Utils'
|
||||
import { checkReCaptcha } from 'services/google.svr'
|
||||
import { GeneralScription } from 'models/chain/GeneralScription'
|
||||
import { ChestEnhanceRecord } from 'models/ChestEnhanceRecord'
|
||||
@ -89,7 +89,7 @@ class BoxController extends BaseController {
|
||||
result.push({
|
||||
nickname: u?.twitterName || u?.discordName || u?.address ? formatAddress(u.address) : 'unknown',
|
||||
avatar: u?.twitterAvatar || '',
|
||||
score: score,
|
||||
score: formatNumShow(score),
|
||||
// @ts-ignore
|
||||
time: records[i].createdAt.getTime(),
|
||||
})
|
||||
@ -114,7 +114,7 @@ class BoxController extends BaseController {
|
||||
result.push({
|
||||
nickname: u?.twitterName || u?.discordName || u?.address ? formatAddress(u.address) : 'unknown',
|
||||
avatar: u?.twitterAvatar || '',
|
||||
score: score,
|
||||
score: formatNumShow(score),
|
||||
// @ts-ignore
|
||||
time: records[i].createdAt.getTime(),
|
||||
})
|
||||
@ -345,7 +345,7 @@ class BoxController extends BaseController {
|
||||
})
|
||||
|
||||
await chest.save()
|
||||
return { score, items }
|
||||
return { score: formatNumShow(score), items }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -360,7 +360,7 @@ class BoxController extends BaseController {
|
||||
return records.map(record => {
|
||||
return {
|
||||
chest: record.data.chestId,
|
||||
score: record.score,
|
||||
score: formatNumShow(record.score),
|
||||
level: record.data.level,
|
||||
// @ts-ignore
|
||||
time: record.createdAt.getTime(),
|
||||
|
@ -1,17 +1,17 @@
|
||||
import { MANUAL_OPEN_GAME, RESET_STEP, SCORE_GAME_STEP } from 'common/Constants'
|
||||
import { MANUAL_OPEN_GAME, SCORE_GAME_STEP } from 'common/Constants'
|
||||
import { ActivityGame } from 'models/ActivityGame'
|
||||
import { DAILY_SIGN, SIGN_SEQ, SIGN_TOTAL, TicketRecord, USE_TICKET } from 'models/TicketRecord'
|
||||
import { queryCheckInList } from 'services/chain.svr'
|
||||
import { checkInToday, seqSignCfg, seqSignScore, totalSignCfg, totalSignScore } from 'services/sign.svr'
|
||||
import { ZError, SyncLocker, BaseController, router } from 'zutils'
|
||||
import { formatDate } from 'utils/utcdate.util'
|
||||
import { generateChestLevel, generateNewChest, generateStepReward } from 'services/game.svr'
|
||||
import { ChestStatusEnum } from 'models/ActivityChest'
|
||||
import { generateStepReward } from 'services/game.svr'
|
||||
import { updateRankScore } from 'services/rank.svr'
|
||||
import { ExploreRecord } from 'models/ExploreRecord'
|
||||
import { isObjectId } from 'zutils/utils/string.util'
|
||||
import { GeneralScription } from 'models/chain/GeneralScription'
|
||||
import { CheckIn } from 'models/chain/CheckIn'
|
||||
import { formatNumShow } from 'common/Utils'
|
||||
|
||||
/**
|
||||
* 探索游戏相关接口
|
||||
@ -386,6 +386,6 @@ class GameController extends BaseController {
|
||||
}
|
||||
await ticketRecord.save()
|
||||
|
||||
return { score, chests: chests.map(chest => chest.toJson()) }
|
||||
return { score: formatNumShow(score), chests: chests.map(chest => chest.toJson()) }
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,14 @@ import { checkParamsNeeded } from 'zutils/utils/net.util'
|
||||
import { aesDecrypt } from 'zutils/utils/security.util'
|
||||
import { base58ToHex } from 'zutils/utils/string.util'
|
||||
import { ActivityGame } from 'models/ActivityGame'
|
||||
import { MAX_ENHANCE_COUNT_ADV, MAX_ENHANCE_COUNT_BASE, SCORE_INVITE_USER, SCORE_SOCIAL_TASK } from 'common/Constants'
|
||||
import { isObjectIdString } from 'common/Utils'
|
||||
import {
|
||||
MAX_ENHANCE_COUNT_ADV,
|
||||
MAX_ENHANCE_COUNT_BASE,
|
||||
RANK_SCORE_SCALE,
|
||||
SCORE_INVITE_USER,
|
||||
SCORE_SOCIAL_TASK,
|
||||
} from 'common/Constants'
|
||||
import { formatNumShow, isObjectIdString } from 'common/Utils'
|
||||
import { ChestEnhanceRecord } from 'models/ChestEnhanceRecord'
|
||||
|
||||
const LOGIN_TIP = 'This signature is just to verify your identity'
|
||||
@ -138,13 +144,13 @@ class SignController extends BaseController {
|
||||
twitterAvatar: user.twitterAvatar,
|
||||
discordId: user.discordId,
|
||||
discordName: user.discordName,
|
||||
scoreToday: todayScore ? parseInt(todayScore + '') : 0,
|
||||
scoreTotal: totalScore ? parseInt(totalScore + '') : 0,
|
||||
scoreToday: formatNumShow(todayScore ? parseInt(todayScore + '') / RANK_SCORE_SCALE : 0),
|
||||
scoreTotal: formatNumShow(totalScore ? parseInt(totalScore + '') / RANK_SCORE_SCALE : 0),
|
||||
rankTotal: totalRank ? totalRank : '-',
|
||||
invite,
|
||||
inviteCount: records.length,
|
||||
inviteScore,
|
||||
scoreSocial,
|
||||
scoreSocial: formatNumShow(scoreSocial),
|
||||
code: user.inviteCode,
|
||||
mapopen: gameRecord.status,
|
||||
enhanceCount,
|
||||
|
@ -7,6 +7,7 @@ import { GeneralScription } from 'models/chain/GeneralScription'
|
||||
import { BASE_TASK_TICKET } from 'common/Constants'
|
||||
import { BASE_TASK_REWARD, SIGN_SEQ, TicketRecord } from 'models/TicketRecord'
|
||||
import { ActivityGame } from 'models/ActivityGame'
|
||||
import { formatNumShow } from 'common/Utils'
|
||||
const fs = require('fs')
|
||||
|
||||
const prod = process.env.NODE_ENV === 'production'
|
||||
@ -230,6 +231,6 @@ export default class TasksController extends BaseController {
|
||||
await ActivityGame.updateOne({ user: user.id, activity: user.activity }, { $inc: { tickets: ticket } })
|
||||
await ticketRecord.save()
|
||||
}
|
||||
return { status: currentTask.status, score, ticket }
|
||||
return { status: currentTask.status, score: formatNumShow(score), ticket }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { INVITE_REBATE, INVITE_REBATE_LEVEL, SCORE_INVITE_REBATE } from 'common/Constants'
|
||||
import { INVITE_REBATE, INVITE_REBATE_LEVEL, RANK_SCORE_SCALE, SCORE_INVITE_REBATE } from 'common/Constants'
|
||||
import { ActivityUser } from 'models/ActivityUser'
|
||||
import { ScoreRecord } from 'models/ScoreRecord'
|
||||
import { ZRedisClient } from 'zutils'
|
||||
@ -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 * 100 + ''), `${userMod.inviteUser}_${user}`)
|
||||
await updateRankInvite(keyInvite, parseInt(score1 * RANK_SCORE_SCALE + ''), `${userMod.inviteUser}_${user}`)
|
||||
await updateRankScore({
|
||||
user: userMod.inviteUser,
|
||||
score: score1,
|
||||
@ -74,7 +74,7 @@ const updateRank = async (key: string, score: number, member: string) => {
|
||||
scoreSaved = scoreSaved.substring(0, scoreSaved.indexOf('.'))
|
||||
}
|
||||
let scoreOld = parseInt(scoreSaved || '0')
|
||||
score = score + scoreOld
|
||||
score = score * RANK_SCORE_SCALE + scoreOld
|
||||
const scoreToSave = score + 1 - Date.now() / 1000 / 10000000000
|
||||
await new ZRedisClient().zadd(key, scoreToSave, member)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user