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 ```js
[{ [{
id: 1, // 箱子id id: 1, // 箱子id
stat: 0, // 0: 锁定, 1: 正常 stat: 0, // 0: 锁定, 1: 正常, 2: 已开启, 未领取, 9: 已领取
shareCode: '箱子的分享码', shareCode: '箱子的分享码',
level: 1, // 箱子品级 level: 1, // 箱子品级
maxBonus: 10, // 最大可助力数量 maxBonus: 10, // 最大可助力数量
@ -554,7 +554,7 @@ body:
```js ```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') // @router('get /api/stake/list')
async stakeList(req) { async stakeList(req) {
const user = req.user const user = req.user
const records = await queryStakeList(user.address) const records = await queryStakeList(user.address.toLowerCase())
const result = records.map(r => r.toJson()) const result = records.map(r => r.toJson())
return result return result
} }
@ -33,7 +33,7 @@ export default class ChainController extends BaseController {
const history = await TokenClaimHistory.addOne({ const history = await TokenClaimHistory.addOne({
user: user.id, user: user.id,
activity: user.activity, activity: user.activity,
address: user.address, address: user.address.toLowerCase(),
token, token,
amount, amount,
}) })

View File

@ -1,7 +1,6 @@
import { ZError, SyncLocker, ZRedisClient, BaseController, ROLE_ANON, role, router } from 'zutils' import { ZError, SyncLocker, ZRedisClient, BaseController, ROLE_ANON, role, router } from 'zutils'
import { ActivityChest, ChestStatusEnum } from 'models/ActivityChest' import { ActivityChest, ChestStatusEnum } from 'models/ActivityChest'
import { ActivityUser } from 'models/ActivityUser' import { ActivityUser } from 'models/ActivityUser'
import { mongoose } from '@typegoose/typegoose'
import { rankKey, rankLevel, updateRankScore } from 'services/rank.svr' import { rankKey, rankLevel, updateRankScore } from 'services/rank.svr'
import { formatDate } from 'zutils/utils/date.util' import { formatDate } from 'zutils/utils/date.util'
import { ScoreRecord } from 'models/ScoreRecord' import { ScoreRecord } from 'models/ScoreRecord'
@ -18,10 +17,23 @@ class BoxController extends BaseController {
@router('get /api/chest/list') @router('get /api/chest/list')
async chestList(req) { async chestList(req) {
const user = req.user 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, 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) { async openChest(req) {
new SyncLocker().checkLock(req) new SyncLocker().checkLock(req)
const user = req.user const user = req.user
const { chestid } = req.query const { chestId } = req.params
if (!chestid) { if (!chestId) {
throw new ZError(11, 'chestid is required') 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) { if (!openRecord) {
throw new ZError(12, 'onchain open record not found') throw new ZError(12, 'onchain open record not found')
} }
const chest = await ActivityChest.findById(chestid) const chest = await ActivityChest.findById(chestId)
if (!chest) { if (!chest) {
throw new ZError(12, 'chest not found') throw new ZError(12, 'chest not found')
} }
if (chest.user !== user.id) { if (chest.user !== user.id) {
throw new ZError(13, 'chest not belong to user') 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') throw new ZError(14, 'chest already opened')
} }
chest.status = 1 chest.status = ChestStatusEnum.OPENED
const score = chest.scoreInit + chest.scoreBonus const score = chest.scoreInit + chest.scoreBonus
const dateTag = formatDate(new Date()) const dateTag = formatDate(new Date())
await updateRankScore({ await updateRankScore({

View File

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

View File

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

View File

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

View File

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