feat(gvg): 添加激战期动态

This commit is contained in:
luying
2023-02-20 13:49:14 +08:00
parent bfaaba13e0
commit abe3956214
6 changed files with 114 additions and 9 deletions
@@ -1,4 +1,4 @@
import { GVGRecModel } from '../../../db/GVGRec';
import { GVGRecModel, GVGRecType } from '../../../db/GVGRec';
import { GVGAreaInMap, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap, LeagueGood, MyTeamInfo, MyTeamSimpleInfo } from '../../../domain/gvgField/returnData';
import { GVGTeamModel, GVGTeamType, GVGTeamUpdate } from '../../../db/GVGTeam';
import { GVGUserDataModel } from '../../../db/GVGUserData';
@@ -15,7 +15,7 @@ import { gameData, getReviveGold } from '../../../pubUtils/data';
import { getAllServerName } from '../../../services/redisService';
import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
import { SaveTeamParam, SaveTeamUpdateParam } from '../../../domain/gvgField/gvgDb';
import { GVG_AREA_TYPE, GVG_ITEM, ITEM_CHANGE_REASON, REDIS_KEY, STATUS } from '../../../consts';
import { GVG_AREA_TYPE, GVG_ITEM, GVG_REC_TYPE, ITEM_CHANGE_REASON, REDIS_KEY, STATUS } from '../../../consts';
import { GVGHeroInfo } from '../../../domain/dbGeneral';
import { ArtifactModel } from '../../../db/Artifact';
import { getHeroesAttributes } from '../../../services/playerCeService';
@@ -27,6 +27,7 @@ import { getGoldObject, handleCost } from '../../../services/role/rewardService'
import { GVGCityAreaPointModel } from '../../../db/GVGCityAreaPoint';
import { Rank } from '../../../services/rankService';
import { LeagueRankInfo, RoleRankInfo } from '../../../domain/rank';
import { addBattleEndRec, addTeamSettleRec } from '../../../services/gvg/gvgRecService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -210,7 +211,7 @@ export class GVGBattleHandler {
teamObj.enterCity(...teams);
}
const recs = await GVGRecModel.findByCity(cityId, configId);
const recs = await GVGRecModel.findBattleRecByCity(configId, groupId, serverType, cityId);
const teamResult = teams.map(team => new MyTeamInfo(team));
const { ranks, myRank } = await getBattleRanksByCity(configId, groupId, serverType, cityId, myLeague);
await leaveGVGCityTeamChannel(roleId, sid);
@@ -407,6 +408,9 @@ export class GVGBattleHandler {
let teamObj = getGVGBattleData(groupId, serverType);
teamObj.teamSettle(roleId, teamCode, pointId);
addTeamSettleRec(curTeam);
return resResult(STATUS.SUCCESS, { curTeam: new MyTeamInfo(curTeam) });
}
@@ -506,8 +510,9 @@ export class GVGBattleHandler {
let teamObj = getGVGBattleData(groupId, serverType);
teamObj.battleEnd([attackTeam, defenseTeam]);
// 更新rec
await GVGBattleRecModel.battleEnd(battleCode, isSuccess);
let rec = await GVGBattleRecModel.battleEnd(battleCode, isSuccess);
await battleEndSendMessage(groupId, serverType, cityId, defenseTeam, attackTeam);
addBattleEndRec(rec);
return resResult(STATUS.SUCCESS, { curTeam: new MyTeamInfo(attackTeam) });
}
@@ -611,10 +616,27 @@ export class GVGBattleHandler {
// 获取战报
// type: 战报类型
async getRecs(msg: { type: number }, session: BackendSession) {
const { type } = msg;
async getRecs(msg: { type: number, cityId: number }, session: BackendSession) {
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const { type, cityId } = msg;
// 根据 type 获取战报
const recs = await GVGRecModel.find({ type }).limit(20).lean();
let { configId, period } = getGVGPeriodData();
let groupId = await getGroupIdOfServer(serverId);
let serverType = await getGVGServerType(serverId);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
let recs: GVGRecType[] = [];
if(type == GVG_REC_TYPE.BATTLE_BY_CITY) {
recs = await GVGRecModel.findBattleRecByCity(configId, groupId, serverType, cityId);
} else if (type == GVG_REC_TYPE.BATTLE_BY_LEAGUE) {
recs = await GVGRecModel.findBattleRecByLeague(configId, myLeague.leagueCode);
} else if (type == GVG_REC_TYPE.BATTLE_BY_ROLE) {
recs = await GVGRecModel.findBattleRecByRole(configId, roleId, myLeague.leagueCode);
}
return resResult(STATUS.SUCCESS, { recs });
}