diff --git a/game-server/app/servers/guild/handler/guildHandler.ts b/game-server/app/servers/guild/handler/guildHandler.ts index 9ef3658ef..6e7e4c6d2 100644 --- a/game-server/app/servers/guild/handler/guildHandler.ts +++ b/game-server/app/servers/guild/handler/guildHandler.ts @@ -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; diff --git a/game-server/app/servers/guild/handler/gvgFighterHandler.ts b/game-server/app/servers/guild/handler/gvgFighterHandler.ts index f51b229e8..464bf7e1e 100644 --- a/game-server/app/servers/guild/handler/gvgFighterHandler.ts +++ b/game-server/app/servers/guild/handler/gvgFighterHandler.ts @@ -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)); diff --git a/game-server/app/servers/guild/handler/gvgManageHandler.ts b/game-server/app/servers/guild/handler/gvgManageHandler.ts index e8f765b3e..58fc53394 100644 --- a/game-server/app/servers/guild/handler/gvgManageHandler.ts +++ b/game-server/app/servers/guild/handler/gvgManageHandler.ts @@ -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 = 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 }); diff --git a/game-server/app/services/gvg/gvgFightService.ts b/game-server/app/services/gvg/gvgFightService.ts index e4a942bc2..1048d3ec1 100644 --- a/game-server/app/services/gvg/gvgFightService.ts +++ b/game-server/app/services/gvg/gvgFightService.ts @@ -1,13 +1,13 @@ // 征战中原相关 import moment = require("moment"); -import { GVG_PERIOD, REDIS_KEY, VESTIGE_OPP_STATUS, VESTIGE_STATUS } from "../../consts"; +import { GVG_PERIOD, GVG_RETURN_ITEM_TYPE, REDIS_KEY, VESTIGE_OPP_STATUS, VESTIGE_STATUS } from "../../consts"; import { ArtifactModel } from "../../db/Artifact"; import { GVGConfigModel } from "../../db/GVGConfig"; import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague"; import { GVGUserDataModel } from "../../db/GVGUserData"; import { GVGVestigeModel } from "../../db/GVGVestige"; -import { GVGVestigeLeagueRankModel } from "../../db/GVGVestigeLeagueRank"; +import { GVGVestigeLeagueRankModel, GVGVestigeLeagueRankType } from "../../db/GVGVestigeLeagueRank"; import { GVGVestigeLockModel } from "../../db/GVGVestigeLock"; import { GVGVestigeRankModel, GVGVestigeRankType, GVGVestigeRankUpdate } from "../../db/GVGVestigeRank"; import { GVGVestigeRecType } from "../../db/GVGVestigeRec"; @@ -17,7 +17,7 @@ import { RoleModel } from "../../db/Role"; import { OppDetailData, OppPlayerHeroInfo, OppPlayerInfo } from "../../domain/gvgField/gvgDb"; import { GVGVestigeOppPlayer } from "../../domain/gvgField/returnData"; import { KeyNameParam, LeagueRankInfo, myIdInter, RoleRankInfo } from "../../domain/rank"; -import { gameData, getGVGVestigeRange } from "../../pubUtils/data"; +import { gameData, getGVGVestigeLeagueRank, getGVGVestigeRange } from "../../pubUtils/data"; import { GVG } from "../../pubUtils/dicParam"; import { RewardInter } from "../../pubUtils/interface"; import { getTimeFun } from "../../pubUtils/timeUtil"; @@ -379,4 +379,20 @@ export async function saveVestigeRankSchedule() { let playerSumRanks = await GVGVestigeSumRankModel.findAllScores(); await GVGUserDataModel.addVestigeScores(config.configId, playerSumRanks); +} + +export function calVestigeLeagueBoxRewards(canReceiveRanks: GVGVestigeLeagueRankType[]) { + 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 boxPreview: { id: number, count: number, itemType: number }[] = []; + for(let { id, count } of rewards) boxPreview.push({ id, count, itemType: GVG_RETURN_ITEM_TYPE.NORMAL_ITEM }); + for(let { id, count } of leagueReward) boxPreview.push({ id, count, itemType: GVG_RETURN_ITEM_TYPE.GVG_ITEM }); + return { + leagueReward, rewards, boxPreview, canReceiveBox: canReceiveRanks.length > 0 + } } \ No newline at end of file diff --git a/game-server/app/services/gvg/gvgService.ts b/game-server/app/services/gvg/gvgService.ts index f67f7f30a..00d35bef2 100644 --- a/game-server/app/services/gvg/gvgService.ts +++ b/game-server/app/services/gvg/gvgService.ts @@ -80,11 +80,11 @@ export async function setGVGConfig(config?: GVGConfigType) { * @returns */ export function getGVGConfig() { - let configId = pinus.app.get('gvgConfigId'); - let teamTime = pinus.app.get('gvgTeamTime'); - let prepareTime = pinus.app.get('gvgPrepareTime'); - let battleTime = pinus.app.get('gvgBattleTime'); - let scheduleTime = pinus.app.get('gvgScheduleTime'); + let configId: number = pinus.app.get('gvgConfigId'); + let teamTime: number = pinus.app.get('gvgTeamTime'); + let prepareTime: number = pinus.app.get('gvgPrepareTime'); + let battleTime: number = pinus.app.get('gvgBattleTime'); + let scheduleTime: number = pinus.app.get('gvgScheduleTime'); return { configId, teamTime, prepareTime, battleTime, scheduleTime } } diff --git a/shared/db/GVGLeagueApply.ts b/shared/db/GVGLeagueApply.ts index a3d2e446b..9c72afd2c 100644 --- a/shared/db/GVGLeagueApply.ts +++ b/shared/db/GVGLeagueApply.ts @@ -85,8 +85,13 @@ export default class GVGLeagueApply extends BaseModel { return n; } - public static async deleteAllGuildApply(guildCode: string) { - const n = await GVGLeagueApplyModel.deleteMany({ guildCode, type: GVG_APPLY_TYPE.APPLY }); + public static async deleteByGuild(guildCode: string) { + const n = await GVGLeagueApplyModel.deleteMany({ guildCode }); + return n; + } + + public static async deleteByLeague(leagueCode: string) { + const n = await GVGLeagueApplyModel.deleteMany({ leagueCode }); return n; } diff --git a/shared/domain/gvgField/returnData.ts b/shared/domain/gvgField/returnData.ts index 89da23539..18b01a6fa 100644 --- a/shared/domain/gvgField/returnData.ts +++ b/shared/domain/gvgField/returnData.ts @@ -176,6 +176,7 @@ export class LeagueListInfo { } export class LeagueSimpleInfo extends LeagueListInfo { + lv: number = 1; // 等级 notice: string; // 公共 cities: number[] = []; // 占领的城池 @@ -188,6 +189,10 @@ export class LeagueSimpleInfo extends LeagueListInfo { setCities(cities: number[]) { this.cities = cities; } + + setLv(lv: number) { + this.lv = lv; + } } export class LeagueGuildInfo { @@ -257,7 +262,7 @@ export class LeagueMemberListInfo { setByUserData(data: GVGUserDataType) { if(!data) return; - this.active = data.active; + this.active = data.active||0; this.job = data.job; }