🐞 fix(gvg): 修复联军组建期相关的一些问题
This commit is contained in:
@@ -557,11 +557,12 @@ export class GuildHandler {
|
|||||||
const ip = session.get('ip');
|
const ip = session.get('ip');
|
||||||
const { code } = msg;
|
const { code } = msg;
|
||||||
|
|
||||||
const guild = await GuildModel.dismiss(code, serverId);
|
let guild = await GuildModel.findByCode(code, serverId, 'leagueCode');
|
||||||
if (!guild) return resResult(STATUS.GUILD_DELETE_ERROR);
|
|
||||||
|
|
||||||
if(guild.leagueCode) return resResult(STATUS.GVG_GUILD_HAS_LEAGUE);
|
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 sendMailToGuildByContent(MAIL_TYPE.GUILD_DISSMISS, code, {}, guild);
|
||||||
await UserGuildModel.dismiss(code);
|
await UserGuildModel.dismiss(code);
|
||||||
const { members } = guild;
|
const { members } = guild;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { GVG } from "../../../pubUtils/dicParam";
|
|||||||
import { RewardInter } from "../../../pubUtils/interface";
|
import { RewardInter } from "../../../pubUtils/interface";
|
||||||
import { resResult } from "../../../pubUtils/util";
|
import { resResult } from "../../../pubUtils/util";
|
||||||
import { isHeroHidden } from "../../../services/dataService";
|
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 { addGVGReward, combinePushItem, handleGVGCost } from "../../../services/gvg/gvgItemService";
|
||||||
import { addGVGActive } from "../../../services/gvg/gvgPrepareService";
|
import { addGVGActive } from "../../../services/gvg/gvgPrepareService";
|
||||||
import { addVestigeBattleEndRec } from "../../../services/gvg/gvgRecService";
|
import { addVestigeBattleEndRec } from "../../../services/gvg/gvgRecService";
|
||||||
@@ -414,11 +414,12 @@ export class GVGProduceHandler {
|
|||||||
|
|
||||||
let yesterdayRank = await GVGVestigeLeagueRank.getYesterdayRank(myLeague.leagueCode);
|
let yesterdayRank = await GVGVestigeLeagueRank.getYesterdayRank(myLeague.leagueCode);
|
||||||
let canReceiveRanks = await GVGVestigeLeagueRank.getCanReceiveRanks(configId, myLeague.leagueCode);
|
let canReceiveRanks = await GVGVestigeLeagueRank.getCanReceiveRanks(configId, myLeague.leagueCode);
|
||||||
|
let { canReceiveBox, boxPreview } = calVestigeLeagueBoxRewards(canReceiveRanks);
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
ranks, myRank,
|
ranks, myRank,
|
||||||
latestRank: yesterdayRank?.rank||0,
|
latestRank: yesterdayRank?.rank||0,
|
||||||
canReceiveBox: canReceiveRanks.length > 0
|
canReceiveBox, boxPreview
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -478,13 +479,8 @@ export class GVGProduceHandler {
|
|||||||
let { configId } = getGVGPeriodData();
|
let { configId } = getGVGPeriodData();
|
||||||
let canReceiveRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode);
|
let canReceiveRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode);
|
||||||
if(canReceiveRanks.length <= 0) return resResult(STATUS.GVG_RECEIVE_NO_RANK_REWARD);
|
if(canReceiveRanks.length <= 0) return resResult(STATUS.GVG_RECEIVE_NO_RANK_REWARD);
|
||||||
let rewards: RewardInter[] = [], leagueReward: RewardInter[] = [];
|
|
||||||
for(let { rank } of canReceiveRanks) {
|
let { leagueReward, rewards } = calVestigeLeagueBoxRewards(canReceiveRanks);
|
||||||
let dicRank = getGVGVestigeLeagueRank(rank);
|
|
||||||
if(!dicRank) { console.error('dic_zyz_GVGVestigeLeagueRank error'); continue; }
|
|
||||||
combinePushItem(rewards, dicRank.rankReward);
|
|
||||||
combinePushItem(leagueReward, dicRank.rankLeagueReward);
|
|
||||||
}
|
|
||||||
let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, leagueReward, rewards, ITEM_CHANGE_REASON.GVG_VESTIGE_RECEIVE_RANK)
|
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));
|
await GVGVestigeLeagueRankModel.receiveRanks(canReceiveRanks.map(cur => cur._id));
|
||||||
|
|
||||||
|
|||||||
@@ -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 { 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 { resResult } from "../../../pubUtils/util";
|
||||||
import { GuildModel, GuildType } from "../../../db/Guild";
|
import { GuildModel, GuildType } from "../../../db/Guild";
|
||||||
import { UserGuildModel } from "../../../db/UserGuild";
|
|
||||||
import { GVGLeagueModel, GVGLeagueType } from "../../../db/GVGLeague";
|
import { GVGLeagueModel, GVGLeagueType } from "../../../db/GVGLeague";
|
||||||
import { GVGLeagueApplyModel } from "../../../db/GVGLeagueApply";
|
import { GVGLeagueApplyModel } from "../../../db/GVGLeagueApply";
|
||||||
import { calLeagueCe, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType, getServersOfSameGroup } from "../../../services/gvg/gvgService";
|
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);
|
if(league) return resResult(STATUS.GVG_LEAGUE_HAS_EXIST);
|
||||||
|
|
||||||
const newLeague = await createLeague(guild, { name, icon, notice });
|
const newLeague = await createLeague(guild, { name, icon, notice });
|
||||||
|
await GVGLeagueApplyModel.deleteByGuild(guildCode);
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
leagueCode: newLeague.leagueCode,
|
leagueCode: newLeague.leagueCode,
|
||||||
@@ -95,9 +95,14 @@ export class GVGManageHandler {
|
|||||||
let hasApply = await GVGLeagueApplyModel.checkApply(leagueCode, guildCode, GVG_APPLY_TYPE.APPLY);
|
let hasApply = await GVGLeagueApplyModel.checkApply(leagueCode, guildCode, GVG_APPLY_TYPE.APPLY);
|
||||||
result.setHasApply(hasApply);
|
result.setHasApply(hasApply);
|
||||||
|
|
||||||
|
let { configId } = getGVGConfig();
|
||||||
// TODO 占领城池
|
// TODO 占领城池
|
||||||
const cities = await getGVGCities(league);
|
const cities = await getGVGCities(league);
|
||||||
result.setCities(cities);
|
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, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
league: result
|
league: result
|
||||||
@@ -179,7 +184,7 @@ export class GVGManageHandler {
|
|||||||
let result = await joinGuildToLeague(myLeague, targetGuildCode);
|
let result = await joinGuildToLeague(myLeague, targetGuildCode);
|
||||||
if(result.code == 0) {
|
if(result.code == 0) {
|
||||||
myLeague = <GVGLeagueType>result.data;
|
myLeague = <GVGLeagueType>result.data;
|
||||||
await GVGLeagueApplyModel.deleteAllGuildApply(targetGuildCode);
|
await GVGLeagueApplyModel.deleteByGuild(targetGuildCode);
|
||||||
} else {
|
} else {
|
||||||
await GVGLeagueApplyModel.deleteApply(targetGuildCode, myLeague.leagueCode);
|
await GVGLeagueApplyModel.deleteApply(targetGuildCode, myLeague.leagueCode);
|
||||||
return result;
|
return result;
|
||||||
@@ -304,7 +309,7 @@ export class GVGManageHandler {
|
|||||||
let result = await joinGuildToLeague(league, guildCode);
|
let result = await joinGuildToLeague(league, guildCode);
|
||||||
if(result.code == 0) {
|
if(result.code == 0) {
|
||||||
hasLeague = true;
|
hasLeague = true;
|
||||||
await GVGLeagueApplyModel.deleteAllGuildApply(guildCode);
|
await GVGLeagueApplyModel.deleteByGuild(guildCode);
|
||||||
} else {
|
} else {
|
||||||
await GVGLeagueApplyModel.deleteInvite(guildCode, league.leagueCode);
|
await GVGLeagueApplyModel.deleteInvite(guildCode, league.leagueCode);
|
||||||
return result;
|
return result;
|
||||||
@@ -339,7 +344,7 @@ export class GVGManageHandler {
|
|||||||
let active = userdatas.reduce((pre, userdata) => {
|
let active = userdatas.reduce((pre, userdata) => {
|
||||||
let member = members.find(cur => cur.roleId == userdata.roleId);
|
let member = members.find(cur => cur.roleId == userdata.roleId);
|
||||||
if(member && member.guildCode == guild.code) {
|
if(member && member.guildCode == guild.code) {
|
||||||
return pre + userdata.active;
|
return pre + (userdata.active||0);
|
||||||
}
|
}
|
||||||
return pre;
|
return pre;
|
||||||
}, 0);
|
}, 0);
|
||||||
@@ -482,6 +487,7 @@ export class GVGManageHandler {
|
|||||||
await GuildModel.dissmissLeague(targetLeagueCode);
|
await GuildModel.dissmissLeague(targetLeagueCode);
|
||||||
// 更新联军信息
|
// 更新联军信息
|
||||||
await GVGLeagueModel.dismiss(myLeague.leagueCode);
|
await GVGLeagueModel.dismiss(myLeague.leagueCode);
|
||||||
|
await GVGLeagueApplyModel.deleteByLeague(myLeague.leagueCode);
|
||||||
// 发送消息
|
// 发送消息
|
||||||
for(let guildCode of myLeague.guildCodes) {
|
for(let guildCode of myLeague.guildCodes) {
|
||||||
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.LEAGUE_DISSMISS, { leagueCode: myLeague.leagueCode });
|
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.LEAGUE_DISSMISS, { leagueCode: myLeague.leagueCode });
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
// 征战中原相关
|
// 征战中原相关
|
||||||
|
|
||||||
import moment = require("moment");
|
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 { ArtifactModel } from "../../db/Artifact";
|
||||||
import { GVGConfigModel } from "../../db/GVGConfig";
|
import { GVGConfigModel } from "../../db/GVGConfig";
|
||||||
import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague";
|
import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague";
|
||||||
import { GVGUserDataModel } from "../../db/GVGUserData";
|
import { GVGUserDataModel } from "../../db/GVGUserData";
|
||||||
import { GVGVestigeModel } from "../../db/GVGVestige";
|
import { GVGVestigeModel } from "../../db/GVGVestige";
|
||||||
import { GVGVestigeLeagueRankModel } from "../../db/GVGVestigeLeagueRank";
|
import { GVGVestigeLeagueRankModel, GVGVestigeLeagueRankType } from "../../db/GVGVestigeLeagueRank";
|
||||||
import { GVGVestigeLockModel } from "../../db/GVGVestigeLock";
|
import { GVGVestigeLockModel } from "../../db/GVGVestigeLock";
|
||||||
import { GVGVestigeRankModel, GVGVestigeRankType, GVGVestigeRankUpdate } from "../../db/GVGVestigeRank";
|
import { GVGVestigeRankModel, GVGVestigeRankType, GVGVestigeRankUpdate } from "../../db/GVGVestigeRank";
|
||||||
import { GVGVestigeRecType } from "../../db/GVGVestigeRec";
|
import { GVGVestigeRecType } from "../../db/GVGVestigeRec";
|
||||||
@@ -17,7 +17,7 @@ import { RoleModel } from "../../db/Role";
|
|||||||
import { OppDetailData, OppPlayerHeroInfo, OppPlayerInfo } from "../../domain/gvgField/gvgDb";
|
import { OppDetailData, OppPlayerHeroInfo, OppPlayerInfo } from "../../domain/gvgField/gvgDb";
|
||||||
import { GVGVestigeOppPlayer } from "../../domain/gvgField/returnData";
|
import { GVGVestigeOppPlayer } from "../../domain/gvgField/returnData";
|
||||||
import { KeyNameParam, LeagueRankInfo, myIdInter, RoleRankInfo } from "../../domain/rank";
|
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 { GVG } from "../../pubUtils/dicParam";
|
||||||
import { RewardInter } from "../../pubUtils/interface";
|
import { RewardInter } from "../../pubUtils/interface";
|
||||||
import { getTimeFun } from "../../pubUtils/timeUtil";
|
import { getTimeFun } from "../../pubUtils/timeUtil";
|
||||||
@@ -379,4 +379,20 @@ export async function saveVestigeRankSchedule() {
|
|||||||
|
|
||||||
let playerSumRanks = await GVGVestigeSumRankModel.findAllScores();
|
let playerSumRanks = await GVGVestigeSumRankModel.findAllScores();
|
||||||
await GVGUserDataModel.addVestigeScores(config.configId, playerSumRanks);
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -80,11 +80,11 @@ export async function setGVGConfig(config?: GVGConfigType) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function getGVGConfig() {
|
export function getGVGConfig() {
|
||||||
let configId = pinus.app.get('gvgConfigId');
|
let configId: number = pinus.app.get('gvgConfigId');
|
||||||
let teamTime = pinus.app.get('gvgTeamTime');
|
let teamTime: number = pinus.app.get('gvgTeamTime');
|
||||||
let prepareTime = pinus.app.get('gvgPrepareTime');
|
let prepareTime: number = pinus.app.get('gvgPrepareTime');
|
||||||
let battleTime = pinus.app.get('gvgBattleTime');
|
let battleTime: number = pinus.app.get('gvgBattleTime');
|
||||||
let scheduleTime = pinus.app.get('gvgScheduleTime');
|
let scheduleTime: number = pinus.app.get('gvgScheduleTime');
|
||||||
return { configId, teamTime, prepareTime, battleTime, scheduleTime }
|
return { configId, teamTime, prepareTime, battleTime, scheduleTime }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,8 +85,13 @@ export default class GVGLeagueApply extends BaseModel {
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async deleteAllGuildApply(guildCode: string) {
|
public static async deleteByGuild(guildCode: string) {
|
||||||
const n = await GVGLeagueApplyModel.deleteMany({ guildCode, type: GVG_APPLY_TYPE.APPLY });
|
const n = await GVGLeagueApplyModel.deleteMany({ guildCode });
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async deleteByLeague(leagueCode: string) {
|
||||||
|
const n = await GVGLeagueApplyModel.deleteMany({ leagueCode });
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -176,6 +176,7 @@ export class LeagueListInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class LeagueSimpleInfo extends LeagueListInfo {
|
export class LeagueSimpleInfo extends LeagueListInfo {
|
||||||
|
lv: number = 1; // 等级
|
||||||
notice: string; // 公共
|
notice: string; // 公共
|
||||||
cities: number[] = []; // 占领的城池
|
cities: number[] = []; // 占领的城池
|
||||||
|
|
||||||
@@ -188,6 +189,10 @@ export class LeagueSimpleInfo extends LeagueListInfo {
|
|||||||
setCities(cities: number[]) {
|
setCities(cities: number[]) {
|
||||||
this.cities = cities;
|
this.cities = cities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setLv(lv: number) {
|
||||||
|
this.lv = lv;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LeagueGuildInfo {
|
export class LeagueGuildInfo {
|
||||||
@@ -257,7 +262,7 @@ export class LeagueMemberListInfo {
|
|||||||
|
|
||||||
setByUserData(data: GVGUserDataType) {
|
setByUserData(data: GVGUserDataType) {
|
||||||
if(!data) return;
|
if(!data) return;
|
||||||
this.active = data.active;
|
this.active = data.active||0;
|
||||||
this.job = data.job;
|
this.job = data.job;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user