🐞 fix(gvg): 修复联军组建期相关的一些问题

This commit is contained in:
luying
2023-02-06 16:48:19 +08:00
parent d2267413d1
commit 4434ef5008
7 changed files with 56 additions and 27 deletions

View File

@@ -557,11 +557,12 @@ export class GuildHandler {
const ip = session.get('ip');
const { code } = msg;
const guild = await GuildModel.dismiss(code, serverId);
if (!guild) return resResult(STATUS.GUILD_DELETE_ERROR);
let guild = await GuildModel.findByCode(code, serverId, 'leagueCode');
if(guild.leagueCode) return resResult(STATUS.GVG_GUILD_HAS_LEAGUE);
guild = await GuildModel.dismiss(code, serverId);
if (!guild) return resResult(STATUS.GUILD_DELETE_ERROR);
await sendMailToGuildByContent(MAIL_TYPE.GUILD_DISSMISS, code, {}, guild);
await UserGuildModel.dismiss(code);
const { members } = guild;

View File

@@ -17,7 +17,7 @@ import { GVG } from "../../../pubUtils/dicParam";
import { RewardInter } from "../../../pubUtils/interface";
import { resResult } from "../../../pubUtils/util";
import { isHeroHidden } from "../../../services/dataService";
import { calBreakGoods, checkHeroIsUsedInOtherVestige, checkVestige, checkVestigeOppStatus, checkVestigeRank, generateAttackHeroInfo, generateAttackInfo, generateDefenseInfo, getDayKeyInfo, getMyVestigeRank, getOppDetailData, getOppPlayerByRanks, getVestigeRecStatus, getVestigeRank, getVestigeUsedHeroes, isRobot, refreshVestigeOppRanks, saveScoreToRank, updateMyVestigeRank, saveVestigeRankSchedule } from "../../../services/gvg/gvgFightService";
import { calBreakGoods, checkHeroIsUsedInOtherVestige, checkVestige, checkVestigeOppStatus, checkVestigeRank, generateAttackHeroInfo, generateAttackInfo, generateDefenseInfo, getDayKeyInfo, getMyVestigeRank, getOppDetailData, getOppPlayerByRanks, getVestigeRecStatus, getVestigeRank, getVestigeUsedHeroes, isRobot, refreshVestigeOppRanks, saveScoreToRank, updateMyVestigeRank, saveVestigeRankSchedule, calVestigeLeagueBoxRewards } from "../../../services/gvg/gvgFightService";
import { addGVGReward, combinePushItem, handleGVGCost } from "../../../services/gvg/gvgItemService";
import { addGVGActive } from "../../../services/gvg/gvgPrepareService";
import { addVestigeBattleEndRec } from "../../../services/gvg/gvgRecService";
@@ -414,11 +414,12 @@ export class GVGProduceHandler {
let yesterdayRank = await GVGVestigeLeagueRank.getYesterdayRank(myLeague.leagueCode);
let canReceiveRanks = await GVGVestigeLeagueRank.getCanReceiveRanks(configId, myLeague.leagueCode);
let { canReceiveBox, boxPreview } = calVestigeLeagueBoxRewards(canReceiveRanks);
return resResult(STATUS.SUCCESS, {
ranks, myRank,
latestRank: yesterdayRank?.rank||0,
canReceiveBox: canReceiveRanks.length > 0
canReceiveBox, boxPreview
})
}
@@ -478,13 +479,8 @@ export class GVGProduceHandler {
let { configId } = getGVGPeriodData();
let canReceiveRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode);
if(canReceiveRanks.length <= 0) return resResult(STATUS.GVG_RECEIVE_NO_RANK_REWARD);
let rewards: RewardInter[] = [], leagueReward: RewardInter[] = [];
for(let { rank } of canReceiveRanks) {
let dicRank = getGVGVestigeLeagueRank(rank);
if(!dicRank) { console.error('dic_zyz_GVGVestigeLeagueRank error'); continue; }
combinePushItem(rewards, dicRank.rankReward);
combinePushItem(leagueReward, dicRank.rankLeagueReward);
}
let { leagueReward, rewards } = calVestigeLeagueBoxRewards(canReceiveRanks);
let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, leagueReward, rewards, ITEM_CHANGE_REASON.GVG_VESTIGE_RECEIVE_RANK)
await GVGVestigeLeagueRankModel.receiveRanks(canReceiveRanks.map(cur => cur._id));

View File

@@ -2,7 +2,6 @@ import { Application, BackendSession, ChannelService, HandlerService } from "pin
import { CHANNEL_PREFIX, GUILD_AUTH, GVG_APPLY_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, LEAGUE_AUTH, LEAGUE_MANAGE_TYPE, MAIL_TYPE, MSG_SOURCE, MSG_TYPE, PUSH_ROUTE, REDIS_KEY, STATUS } from "../../../consts";
import { resResult } from "../../../pubUtils/util";
import { GuildModel, GuildType } from "../../../db/Guild";
import { UserGuildModel } from "../../../db/UserGuild";
import { GVGLeagueModel, GVGLeagueType } from "../../../db/GVGLeague";
import { GVGLeagueApplyModel } from "../../../db/GVGLeagueApply";
import { calLeagueCe, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType, getServersOfSameGroup } from "../../../services/gvg/gvgService";
@@ -50,6 +49,7 @@ export class GVGManageHandler {
if(league) return resResult(STATUS.GVG_LEAGUE_HAS_EXIST);
const newLeague = await createLeague(guild, { name, icon, notice });
await GVGLeagueApplyModel.deleteByGuild(guildCode);
return resResult(STATUS.SUCCESS, {
leagueCode: newLeague.leagueCode,
@@ -95,9 +95,14 @@ export class GVGManageHandler {
let hasApply = await GVGLeagueApplyModel.checkApply(leagueCode, guildCode, GVG_APPLY_TYPE.APPLY);
result.setHasApply(hasApply);
let { configId } = getGVGConfig();
// TODO 占领城池
const cities = await getGVGCities(league);
result.setCities(cities);
result.setLeagueCe(await calLeagueCe(league));
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, leagueCode);
if(leaguePrepare) result.setLv(leaguePrepare.lv);
return resResult(STATUS.SUCCESS, {
league: result
@@ -179,7 +184,7 @@ export class GVGManageHandler {
let result = await joinGuildToLeague(myLeague, targetGuildCode);
if(result.code == 0) {
myLeague = <GVGLeagueType>result.data;
await GVGLeagueApplyModel.deleteAllGuildApply(targetGuildCode);
await GVGLeagueApplyModel.deleteByGuild(targetGuildCode);
} else {
await GVGLeagueApplyModel.deleteApply(targetGuildCode, myLeague.leagueCode);
return result;
@@ -304,7 +309,7 @@ export class GVGManageHandler {
let result = await joinGuildToLeague(league, guildCode);
if(result.code == 0) {
hasLeague = true;
await GVGLeagueApplyModel.deleteAllGuildApply(guildCode);
await GVGLeagueApplyModel.deleteByGuild(guildCode);
} else {
await GVGLeagueApplyModel.deleteInvite(guildCode, league.leagueCode);
return result;
@@ -339,7 +344,7 @@ export class GVGManageHandler {
let active = userdatas.reduce((pre, userdata) => {
let member = members.find(cur => cur.roleId == userdata.roleId);
if(member && member.guildCode == guild.code) {
return pre + userdata.active;
return pre + (userdata.active||0);
}
return pre;
}, 0);
@@ -482,6 +487,7 @@ export class GVGManageHandler {
await GuildModel.dissmissLeague(targetLeagueCode);
// 更新联军信息
await GVGLeagueModel.dismiss(myLeague.leagueCode);
await GVGLeagueApplyModel.deleteByLeague(myLeague.leagueCode);
// 发送消息
for(let guildCode of myLeague.guildCodes) {
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.LEAGUE_DISSMISS, { leagueCode: myLeague.leagueCode });