箱子助力列表改为助力积分
This commit is contained in:
parent
3312b8c1ed
commit
4762663202
@ -721,8 +721,8 @@ body:
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
{
|
{
|
||||||
"code": "1123", // 宝箱的分享code, code和id选择传一个, 如果两个都传, 优先使用id来查询箱子
|
"code": "1123", // 宝箱的分享code, code和chestId选择传一个, 如果两个都传, 优先使用chestId来查询箱子
|
||||||
"id": "123123"
|
"chestId": "123123"
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -71,18 +71,15 @@ class BoxController extends BaseController {
|
|||||||
if (chest.status === 0) {
|
if (chest.status === 0) {
|
||||||
throw new ZError(13, 'chest is locked')
|
throw new ZError(13, 'chest is locked')
|
||||||
}
|
}
|
||||||
if (chest.status === 9) {
|
|
||||||
throw new ZError(14, 'chest had been opened')
|
|
||||||
}
|
|
||||||
const result = []
|
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 userMap = new Map()
|
||||||
const totalKey = rankKey(user.activity)
|
|
||||||
users.forEach(u => userMap.set(u.id, u))
|
users.forEach(u => userMap.set(u.id, u))
|
||||||
for (let i = 0; i < chest.bonusUsers.length; i++) {
|
for (let i = 0; i < records.length; i++) {
|
||||||
const u = userMap.get(chest.bonusUsers[i])
|
const u = userMap.get(records[i].user)
|
||||||
const totalScore = await new ZRedisClient().zscore(totalKey, u.id)
|
const score = records[i].score
|
||||||
const score = totalScore ? parseInt(totalScore + '') : 0
|
|
||||||
result.push({
|
result.push({
|
||||||
nickname: u?.twitterName || u?.discordName || u?.address ? formatAddress(u.address) : 'unknown',
|
nickname: u?.twitterName || u?.discordName || u?.address ? formatAddress(u.address) : 'unknown',
|
||||||
level: rankLevel(score),
|
level: rankLevel(score),
|
||||||
@ -96,20 +93,20 @@ class BoxController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@router('post /api/chest/enhance/state')
|
@router('post /api/chest/enhance/state')
|
||||||
async enhanceState(req) {
|
async enhanceState(req) {
|
||||||
const { code, id } = req.params
|
const { code, chestId } = req.params
|
||||||
const user = req.user
|
const user = req.user
|
||||||
if (code && !isValidShareCode(code)) {
|
if (code && !isValidShareCode(code)) {
|
||||||
throw new ZError(11, 'invalid share code')
|
throw new ZError(11, 'invalid share code')
|
||||||
}
|
}
|
||||||
if (id && !isObjectIdString(id)) {
|
if (chestId && !isObjectIdString(chestId)) {
|
||||||
throw new ZError(11, 'invalid chest id')
|
throw new ZError(11, 'invalid chest id')
|
||||||
}
|
}
|
||||||
if (!code && !id) {
|
if (!code && !chestId) {
|
||||||
throw new ZError(11, 'must provide share code or chest id')
|
throw new ZError(11, 'must provide share code or chest id')
|
||||||
}
|
}
|
||||||
let chest: any
|
let chest: any
|
||||||
if (id) {
|
if (chestId) {
|
||||||
chest = await ActivityChest.findById(id)
|
chest = await ActivityChest.findById(chestId)
|
||||||
} else {
|
} else {
|
||||||
chest = await ActivityChest.findOne({ shareCode: code, activity: user.activity })
|
chest = await ActivityChest.findOne({ shareCode: code, activity: user.activity })
|
||||||
}
|
}
|
||||||
@ -189,7 +186,7 @@ class BoxController extends BaseController {
|
|||||||
{ _id: chest.id },
|
{ _id: chest.id },
|
||||||
{
|
{
|
||||||
$inc: { scoreBonus: score },
|
$inc: { scoreBonus: score },
|
||||||
$push: { bonusUsers: uid, bonusScores: score },
|
$push: { bonusUsers: uid },
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
const enhanceRecord = new ChestEnhanceRecord({
|
const enhanceRecord = new ChestEnhanceRecord({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user