箱子助力列表改为助力积分

This commit is contained in:
CounterFire2023 2024-04-08 14:33:59 +08:00
parent 3312b8c1ed
commit 4762663202
2 changed files with 14 additions and 17 deletions

View File

@ -721,8 +721,8 @@ body:
```js
{
"code": "1123", // 宝箱的分享code, code和id选择传一个, 如果两个都传, 优先使用id来查询箱子
"id": "123123"
"code": "1123", // 宝箱的分享code, code和chestId选择传一个, 如果两个都传, 优先使用chestId来查询箱子
"chestId": "123123"
}
```

View File

@ -71,18 +71,15 @@ class BoxController extends BaseController {
if (chest.status === 0) {
throw new ZError(13, 'chest is locked')
}
if (chest.status === 9) {
throw new ZError(14, 'chest had been opened')
}
const result = []
const users = await ActivityUser.find({ _id: { $in: chest.bonusUsers } })
const records = await ChestEnhanceRecord.find({ chest: chest.id, activity: user.activity }).sort({ score: -1 })
const uids = records.map(record => record.user)
const users = await ActivityUser.find({ _id: { $in: uids } })
const userMap = new Map()
const totalKey = rankKey(user.activity)
users.forEach(u => userMap.set(u.id, u))
for (let i = 0; i < chest.bonusUsers.length; i++) {
const u = userMap.get(chest.bonusUsers[i])
const totalScore = await new ZRedisClient().zscore(totalKey, u.id)
const score = totalScore ? parseInt(totalScore + '') : 0
for (let i = 0; i < records.length; i++) {
const u = userMap.get(records[i].user)
const score = records[i].score
result.push({
nickname: u?.twitterName || u?.discordName || u?.address ? formatAddress(u.address) : 'unknown',
level: rankLevel(score),
@ -96,20 +93,20 @@ class BoxController extends BaseController {
*/
@router('post /api/chest/enhance/state')
async enhanceState(req) {
const { code, id } = req.params
const { code, chestId } = req.params
const user = req.user
if (code && !isValidShareCode(code)) {
throw new ZError(11, 'invalid share code')
}
if (id && !isObjectIdString(id)) {
if (chestId && !isObjectIdString(chestId)) {
throw new ZError(11, 'invalid chest id')
}
if (!code && !id) {
if (!code && !chestId) {
throw new ZError(11, 'must provide share code or chest id')
}
let chest: any
if (id) {
chest = await ActivityChest.findById(id)
if (chestId) {
chest = await ActivityChest.findById(chestId)
} else {
chest = await ActivityChest.findOne({ shareCode: code, activity: user.activity })
}
@ -189,7 +186,7 @@ class BoxController extends BaseController {
{ _id: chest.id },
{
$inc: { scoreBonus: score },
$push: { bonusUsers: uid, bonusScores: score },
$push: { bonusUsers: uid },
},
)
const enhanceRecord = new ChestEnhanceRecord({