🐞 fix(gvg): 千机阁回退解锁

This commit is contained in:
luying
2023-03-14 15:07:28 +08:00
parent 6e3a82ddea
commit 4d0816858a
5 changed files with 68 additions and 1 deletions

View File

@@ -12,7 +12,7 @@ import { GVGUserItemModel } from "../../../db/GVGUserItem";
import { GVGUserTaskModel } from "../../../db/GVGUserTask";
import { GVG } from "../../../pubUtils/dicParam";
import { RoleModel } from "../../../db/Role";
import { addGVGTechActive, calFighterContribute, calProducerContribute, checkPreTech, checkTechIsIng, getDailyLoginReward, getMyContribute, pushTechChange, sendUngotBoxReward } from "../../../services/gvg/gvgPrepareService";
import { addGVGTechActive, calFighterContribute, calProducerContribute, checkPreTech, checkTechIsIng, checkTechProgress, getDailyLoginReward, getMyContribute, pushTechChange, pushTechRollback, sendUngotBoxReward } from "../../../services/gvg/gvgPrepareService";
import { GVGUserDailyDataModel } from "../../../db/GVGUserDailyData";
import { gameData } from "../../../pubUtils/data";
import { lockLeagueData } from "../../../services/redLockService";
@@ -400,6 +400,53 @@ export class GVGHandler {
});
}
// 千机阁解锁
async rollbackTech(msg: { techId: number }, session: BackendSession) {
const roleId = session.get('roleId');
const roleName = session.get('roleName');
const guildCode = session.get('guildCode');
const { techId } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
const dicTech = gameData.gvgTech.get(techId);
if(!dicTech) return resResult(STATUS.DIC_DATA_NOT_FOUND);
const myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
// 权限
const checkAuth = await checkLeagueAuth(roleId, myLeague, LEAGUE_MANAGE_TYPE.UNLOCK_TECH);
if(!checkAuth) return resResult(STATUS.GVG_HAS_NO_AUTH);
// 并发锁
let res: any = await lockLeagueData(DATA_NAME.LEAGUE_TECH, myLeague.leagueCode);//加锁
if (!!res.err) return resResult(STATUS.REDLOCK_ERR);
let leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
if(!checkTechProgress(techId, leaguePrepare?.techQueue||[])) {
res.releaseCallback();
return resResult(STATUS.GVG_TECH_HAS_PROGRESS);
}
leaguePrepare = await GVGLeaguePrepareModel.rollbackTech(configId, myLeague.leagueCode, techId);
if(!leaguePrepare) {
res.releaseCallback();
return resResult(STATUS.GVG_TECH_QUEUECNT_MAX);
}
res.releaseCallback();
// 推送千机阁解锁消息
await pushTechRollback(myLeague.guildCodes, techId);
return resResult(STATUS.SUCCESS, {
queue: leaguePrepare?.techQueue||[]
});
}
// 千机阁激活
async activate(msg: { techId: number, battleFeats: number }, session: BackendSession) {
const serverId = session.get('serverId');