bug fix
This commit is contained in:
parent
308683cf90
commit
689ad09734
@ -42,6 +42,7 @@ export class ApiServer {
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
this.server.register(require('@fastify/cors'), {})
|
||||
mongoose.set('debug', true)
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,8 +88,6 @@ export class ApiServer {
|
||||
const options = {
|
||||
useNewUrlParser: true,
|
||||
maxPoolSize: 5,
|
||||
keepAlive: true,
|
||||
keepAliveInitialDelay: 300000,
|
||||
useUnifiedTopology: true,
|
||||
}
|
||||
const uri = process.env.DB_MAIN
|
||||
|
@ -26,4 +26,4 @@ export const STEP_CHEST_RATE = 0.1
|
||||
// 宝箱各等级的概率
|
||||
export const STEP_CHEST_LEVEL = [70, 85, 95, 100]
|
||||
// 低保步数
|
||||
export const RESET_STEP = 10
|
||||
export const RESET_STEP = 2
|
||||
|
@ -18,7 +18,9 @@ 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, status: 0 })
|
||||
const chests = await ActivityChest.find({ activity: user.activity, user: user.id, status: { $in: [0, 1] } }).sort({
|
||||
level: -1,
|
||||
})
|
||||
return chests.map(chest => chest.toJson())
|
||||
}
|
||||
/**
|
||||
@ -71,11 +73,8 @@ class BoxController extends BaseController {
|
||||
const user = req.user
|
||||
const uid = user.uid
|
||||
|
||||
const session = await mongoose.startSession()
|
||||
session.startTransaction()
|
||||
try {
|
||||
// TODO:: 待规则确定后, 检查用户是否符合助力条件
|
||||
const chest = await ActivityChest.findOne({ shareCode: code, activity: user.activity }).session(session)
|
||||
const chest = await ActivityChest.findOne({ shareCode: code, activity: user.activity })
|
||||
if (chest.bonusUsers.includes(uid)) {
|
||||
throw new ZError(10, 'user already enhanced')
|
||||
}
|
||||
@ -95,22 +94,15 @@ class BoxController extends BaseController {
|
||||
chest.bonusUsers.push(uid)
|
||||
chest.bonusScores.push(score)
|
||||
chest.scoreBonus += score
|
||||
await chest.save({ session })
|
||||
const chestsForUser = await ActivityChest.find({ user: uid, activity: user.activity }).session(session)
|
||||
await chest.save()
|
||||
const chestsForUser = await ActivityChest.find({ user: uid, activity: user.activity })
|
||||
// 如果用户没有宝箱, 则说明用户是新用户, 生成一个宝箱
|
||||
if (chestsForUser.length === 0) {
|
||||
const newChest = generateNewChest(uid, user.activity, 1, ChestStatusEnum.LOCKED)
|
||||
await newChest.save({ session })
|
||||
await newChest.save()
|
||||
}
|
||||
await session.commitTransaction()
|
||||
session.endSession()
|
||||
return {
|
||||
score: 1,
|
||||
}
|
||||
} catch (error) {
|
||||
session.abortTransaction()
|
||||
session.endSession()
|
||||
throw error
|
||||
score,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -197,10 +197,10 @@ class GameController extends BaseController {
|
||||
throw new ZError(11, 'invalid step')
|
||||
}
|
||||
step = parseInt(step)
|
||||
const session = await mongoose.startSession()
|
||||
session.startTransaction()
|
||||
try {
|
||||
const record = await ActivityGame.insertOrUpdate({ user: user.id, activity: user.activity }, {}).session(session)
|
||||
// const session = await mongoose.startSession()
|
||||
// session.startTransaction()
|
||||
// try {
|
||||
const record = await ActivityGame.insertOrUpdate({ user: user.id, activity: user.activity }, {})
|
||||
if (MANUAL_OPEN_GAME && record.status === 0) {
|
||||
throw new ZError(12, 'map not open')
|
||||
}
|
||||
@ -227,18 +227,18 @@ class GameController extends BaseController {
|
||||
}
|
||||
}
|
||||
for (let chest of chests) {
|
||||
await chest.save({ session })
|
||||
await chest.save()
|
||||
}
|
||||
await ticketRecord.save({ session })
|
||||
await ticketRecord.save()
|
||||
// await ticketRecord.save({ session })
|
||||
await record.save()
|
||||
await session.commitTransaction()
|
||||
|
||||
// await session.commitTransaction()
|
||||
// session.endSession()
|
||||
return { score, chests: chests.map(chest => chest.toJson()) }
|
||||
} catch (e) {
|
||||
session.abortTransaction()
|
||||
throw e
|
||||
} finally {
|
||||
session.endSession()
|
||||
}
|
||||
// } catch (e) {
|
||||
// session.abortTransaction()
|
||||
// session.endSession()
|
||||
// throw e
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
@ -21,14 +21,14 @@ class ActivityGameClass extends BaseModule {
|
||||
@prop({ default: 0 })
|
||||
public status: number
|
||||
// 拥有的ticket数量
|
||||
@prop()
|
||||
@prop({ default: 0 })
|
||||
public tickets: number
|
||||
// 最后一次签到日期
|
||||
@prop()
|
||||
public lastSignDay: string
|
||||
|
||||
// 最大宝箱无宝箱步数
|
||||
@prop()
|
||||
@prop({ default: 0 })
|
||||
public maxNoChestCount: number
|
||||
|
||||
public toJson() {
|
||||
|
@ -14,7 +14,7 @@ export const generateNewChest = (uid: string, activity: string, level = 1, statu
|
||||
if (!cfg) {
|
||||
throw new ZError(11, 'chest cfg not found')
|
||||
}
|
||||
let scoreInit = Math.floor(Math.random() * (cfg.scoreMax - cfg.scoreMin + 1) + cfg.scoreMin)
|
||||
let scoreInit = Math.floor(Math.random() * (cfg.initScoreMax - cfg.initScoreMin + 1) + cfg.initScoreMin)
|
||||
let chest = new ActivityChest({
|
||||
user: uid,
|
||||
activity: activity,
|
||||
|
Loading…
x
Reference in New Issue
Block a user