🐞 fix(gvg): 千机阁取消解锁的时候后置节点也要取消
This commit is contained in:
@@ -410,9 +410,6 @@ export class GVGHandler {
|
||||
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);
|
||||
|
||||
@@ -420,18 +417,37 @@ export class GVGHandler {
|
||||
const checkAuth = await checkLeagueAuth(roleId, myLeague, LEAGUE_MANAGE_TYPE.UNLOCK_TECH);
|
||||
if(!checkAuth) return resResult(STATUS.GVG_HAS_NO_AUTH);
|
||||
|
||||
let dicTech = gameData.gvgTech.get(techId);
|
||||
if(!dicTech) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
// 并发锁
|
||||
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);
|
||||
let techIds: number[] = [], preTechId = techId;
|
||||
// 如果有后置节点,那么后置节点也需要解锁
|
||||
for(let { id, progress } of (leaguePrepare?.techQueue||[]) ) {
|
||||
if(id == techId) {
|
||||
if(progress > 0) {
|
||||
res.releaseCallback();
|
||||
return resResult(STATUS.GVG_TECH_HAS_PROGRESS);
|
||||
}
|
||||
techIds.push(id)
|
||||
} else {
|
||||
let dicCurTech = gameData.gvgTech.get(id);
|
||||
if(dicCurTech.prepositionId.find(arr => arr.indexOf(preTechId) != -1)) {
|
||||
if(progress > 0) {
|
||||
res.releaseCallback();
|
||||
return resResult(STATUS.GVG_TECH_HAS_PROGRESS);
|
||||
}
|
||||
techIds.push(id);
|
||||
preTechId = id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
leaguePrepare = await GVGLeaguePrepareModel.rollbackTech(configId, myLeague.leagueCode, techId);
|
||||
leaguePrepare = await GVGLeaguePrepareModel.rollbackTech(configId, myLeague.leagueCode, techIds);
|
||||
if(!leaguePrepare) {
|
||||
res.releaseCallback();
|
||||
return resResult(STATUS.GVG_TECH_QUEUECNT_MAX);
|
||||
@@ -440,7 +456,7 @@ export class GVGHandler {
|
||||
res.releaseCallback();
|
||||
|
||||
// 推送千机阁解锁消息
|
||||
await pushTechRollback(myLeague.guildCodes, techId);
|
||||
await pushTechRollback(myLeague.guildCodes, techIds);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
queue: leaguePrepare?.techQueue||[]
|
||||
|
||||
Reference in New Issue
Block a user