fix some bugs

This commit is contained in:
CounterFire2023 2024-03-26 19:14:44 +08:00
parent 689ad09734
commit 838f19d8d2
7 changed files with 44 additions and 21 deletions

View File

@ -477,7 +477,7 @@ body:
```js
[{
id: 1, // 箱子id
stat: 0, // 0: 锁定, 1: 正常
stat: 0, // 0: 锁定, 1: 正常, 2: 已开启, 未领取, 9: 已领取
shareCode: '箱子的分享码',
level: 1, // 箱子品级
maxBonus: 10, // 最大可助力数量
@ -554,7 +554,7 @@ body:
```js
{
chestid: '131aasd`1' // 宝箱id
chestId: '131aasd`1' // 宝箱id
}
```

View File

@ -9,7 +9,7 @@ export default class ChainController extends BaseController {
// @router('get /api/stake/list')
async stakeList(req) {
const user = req.user
const records = await queryStakeList(user.address)
const records = await queryStakeList(user.address.toLowerCase())
const result = records.map(r => r.toJson())
return result
}
@ -33,7 +33,7 @@ export default class ChainController extends BaseController {
const history = await TokenClaimHistory.addOne({
user: user.id,
activity: user.activity,
address: user.address,
address: user.address.toLowerCase(),
token,
amount,
})

View File

@ -1,7 +1,6 @@
import { ZError, SyncLocker, ZRedisClient, BaseController, ROLE_ANON, role, router } from 'zutils'
import { ActivityChest, ChestStatusEnum } from 'models/ActivityChest'
import { ActivityUser } from 'models/ActivityUser'
import { mongoose } from '@typegoose/typegoose'
import { rankKey, rankLevel, updateRankScore } from 'services/rank.svr'
import { formatDate } from 'zutils/utils/date.util'
import { ScoreRecord } from 'models/ScoreRecord'
@ -18,10 +17,23 @@ class BoxController extends BaseController {
@router('get /api/chest/list')
async chestList(req) {
const user = req.user
const chests = await ActivityChest.find({ activity: user.activity, user: user.id, status: { $in: [0, 1] } }).sort({
const openRecord = await ChestRecord.find({ from: user.address.toLowerCase() })
const chestIds = openRecord.map(record => record.chestId)
const chestSet = new Set(chestIds)
const chests = await ActivityChest.find({
activity: user.activity,
user: user.id,
status: { $in: [0, 1, 2] },
}).sort({
level: -1,
})
return chests.map(chest => chest.toJson())
const results = chests.map(chest => chest.toJson())
for (let result of results) {
if (chestSet.has(result.id)) {
result.stat = 2
}
}
return results
}
/**
*
@ -119,25 +131,25 @@ class BoxController extends BaseController {
async openChest(req) {
new SyncLocker().checkLock(req)
const user = req.user
const { chestid } = req.query
if (!chestid) {
throw new ZError(11, 'chestid is required')
const { chestId } = req.params
if (!chestId) {
throw new ZError(11, 'chestId is required')
}
const openRecord = await ChestRecord.findOne({ from: user.address, chestId: chestid })
const openRecord = await ChestRecord.findOne({ from: user.address.toLowerCase(), chestId })
if (!openRecord) {
throw new ZError(12, 'onchain open record not found')
}
const chest = await ActivityChest.findById(chestid)
const chest = await ActivityChest.findById(chestId)
if (!chest) {
throw new ZError(12, 'chest not found')
}
if (chest.user !== user.id) {
throw new ZError(13, 'chest not belong to user')
}
if (chest.status === 1) {
if (chest.status === ChestStatusEnum.OPENED) {
throw new ZError(14, 'chest already opened')
}
chest.status = 1
chest.status = ChestStatusEnum.OPENED
const score = chest.scoreInit + chest.scoreBonus
const dateTag = formatDate(new Date())
await updateRankScore({

View File

@ -8,6 +8,7 @@ import { formatDate } from 'zutils/utils/date.util'
import { mongoose } from '@typegoose/typegoose'
import { generateChestLevel, generateNewChest, generateStepReward } from 'services/game.svr'
import { ChestStatusEnum } from 'models/ActivityChest'
import { updateRankScore } from 'services/rank.svr'
/**
*
@ -61,7 +62,7 @@ class GameController extends BaseController {
} else if (tag === 'last') {
days = '1'
}
const res = await queryCheckInList(user.address, days, 0)
const res = await queryCheckInList(user.address.toLowerCase(), days, 0)
return res
}
/**
@ -78,7 +79,7 @@ class GameController extends BaseController {
}
days = parseInt(days)
const dateTag = formatDate(new Date())
const checkRecord = await checkInToday(user.address, dateTag)
const checkRecord = await checkInToday(user.address.toLowerCase(), dateTag)
if (!checkRecord) {
throw new ZError(12, 'not signed in')
}
@ -141,7 +142,7 @@ class GameController extends BaseController {
}
const signCfg = seqSignCfg
const dateTag = formatDate(new Date())
const checkRecord = await checkInToday(user.address, dateTag)
const checkRecord = await checkInToday(user.address.toLowerCase(), dateTag)
let todayStat = 0
if (checkRecord) {
// 有签到的链上记录, 说明已签到
@ -226,6 +227,15 @@ class GameController extends BaseController {
chests.push(generateNewChest(user.id, user.activity, level, ChestStatusEnum.NORMAL))
}
}
await updateRankScore({
user: user.id,
score: score,
activity: user.activity,
scoreType: 'game_step',
scoreParams: {
step: step,
},
})
for (let chest of chests) {
await chest.save()
}

View File

@ -109,7 +109,7 @@ class SignController extends BaseController {
if (user.inviteUser) {
const inviteUser = await ActivityUser.findById(user.inviteUser)
if (inviteUser) {
invite = inviteUser.address
invite = inviteUser.address.toLowerCase()
}
}
const records = await ScoreRecord.find({ user: user.id, activity: user.activity, scoreType: 'invite' })
@ -119,7 +119,7 @@ class SignController extends BaseController {
score += record.score
}
let result = {
address: user.address,
address: user.address.toLowerCase(),
boost: user.boost || 1,
boostExpire: user.boostExpire,
twitterId: user.twitterId,

View File

@ -8,6 +8,7 @@ const alphabet = '3fBCM8j17XNA9xYun4wmLWep2oHFlhPcgyEJskqOz6GK0UtV5ZRaDSvrTbidQI
export enum ChestStatusEnum {
LOCKED = 0,
NORMAL = 1,
NOT_CLAIMED = 2,
OPENED = 9,
}
/**
@ -68,7 +69,7 @@ class ActivityChestClass extends BaseModule {
public toJson() {
return {
// @ts-ignore
id: this._id,
id: this.id,
stat: this.status,
shareCode: this.shareCode,
level: this.level,

View File

@ -57,7 +57,7 @@ export default class DailyCheckIn extends ITask {
// 请求前7天的签到记录, 往前查找连续签到的记录,
let cfg = this.activity.tasks.find((t: TaskCfg) => t.id === task.id)
if (cfg.type === TaskTypeEnum.DAILY) {
const res = await queryCheckInList(this.user.address, 1, 0)
const res = await queryCheckInList(this.user.address.toLowerCase(), 1, 0)
const [taskId, dateTag] = task.id.split(':')
let list: { day: string; time: number; count: number }[] = res