fix some bugs
This commit is contained in:
parent
689ad09734
commit
838f19d8d2
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -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,
|
||||||
})
|
})
|
||||||
|
@ -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({
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user