试炼宝箱领取bug

This commit is contained in:
mamengke01
2021-02-07 15:26:36 +08:00
parent 3f73f25f94
commit ad1881ff9d

View File

@@ -1,6 +1,6 @@
import { Application, BackendSession, pinus } from 'pinus';
import { resResult, genCode, getRandomByLen } from '../../../pubUtils/util';
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB } from '../../../consts';
import { STATUS } from '../../../consts';
import { GuildTrainModel } from '../../../db/GuildTrain';
import { BattleRecordModel } from '../../../db/BattleRecord';
import { nowSeconds, getHourPoint, getCurHourPoint } from '../../../pubUtils/timeUtil';
@@ -252,19 +252,27 @@ export class GuildTrainHandler {
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code } = userGuild;
let { trainLv } = await GuildModel.findGuild(code, serverId, 'trainLv');
let res:any = await lockData(serverId, DATA_NAME.TRAIN_BOX, code + '_' + trainId);//加锁
let res:any = await lockData(serverId, DATA_NAME.TRAIN_BOX, code + '_' + trainId + '_' + index);//加锁
if (!!res.err)
return resResult(STATUS.REDLOCK_ERR);
let { shilianRewardRatio } = getTrainBaseByLv(trainLv);
let { heroRewards, trainInstances } = getArmyTrainJuDian(trainId);
let { progress } = findWhere(trainInstances, {hid});
let guildTrain = await GuildTrainModel.findTrainInstanceBoxByIndex(code, roleId, trainId, hid, index, progress, nowSeconds());
let guildTrain = await GuildTrainModel.findTrainInstanceBoxByIndex(code, trainId, hid, progress);
if (!guildTrain) {
res.releaseCallback();//解锁
return resResult(STATUS.GUILD_TRAIN_SCRIPT_NOT_OPENED);
}
let trainInstance = findWhere(guildTrain.trainInstances, { hid });
if (trainInstance.endTime > nowSeconds())
return resResult(STATUS.GUILD_TRAIN_BOX_IS_OVER_TIME);
let trainBox = findWhere(trainInstance.trainBoxs, { index })
if (!!trainBox)
return resResult(STATUS.GUILD_TRAIN_BOX_INDEX_IS_GOT);
trainBox = findWhere(trainInstance.trainBoxs, { roleId })
if (!!trainBox)
return resResult(STATUS.GUILD_TRAIN_BOX_IS_GOT);
let good = getRandomByLen(heroRewards);
good.count = Math.floor((100 + shilianRewardRatio) * good.count/100);
let goods = await addItems(roleId, roleName, sid, [good]);