diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index d7fa2b5df..8911b529d 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -39,8 +39,7 @@ export class PvpHandler { let {warId, seasonNum, seasonEndTime} = await SystemConfigModel.findSystemConfig(); let {heroes, score, pLv, winStreakNum, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores} = pvpDefense; if (pvpDefense.seasonNum !== seasonNum) { - //TODO去结算 - let {score, pLv, winStreakNum} = await setPvpDefResult(pvpDefense) + let { score, pLv, winStreakNum, heroScores, refOppCnt, challengeCnt, challengeRefTime } = await setPvpDefResult(pvpDefense, seasonNum); } let myRank = 999;//TODO去redis中获取 let data = {warId, seasonNum, seasonEndTime, myRank, oppPlayers, heroes, score, pLv, winStreakNum, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores} diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index 63e3e760a..62ca26e09 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -10,6 +10,7 @@ import { getRandomIndexByLen, genCode, getRandomByLen } from '../pubUtils/util'; import { oppPlayersInter } from '../pubUtils/interface'; import { gameData, getPLvByScore } from "../pubUtils/data"; import { PVP } from '../pubUtils/dicParam'; +import { SystemConfigModel } from '../db/SystemConfig' const _ = require('underscore'); @@ -29,7 +30,9 @@ export async function initPvpInfo(role: RoleType) { } //初始化对手人阵容 let oppPlayers: Array = await refreshEnemies(role, 0, 1); - let result = await PvpDefenseModel.createPvpDefense({ roleId: role.roleId, roleName: role.roleName, role: role._id, heroes, oppPlayers, defCe: role.topFiveCe }); + let {warId, seasonNum } = await SystemConfigModel.findSystemConfig(); + let challengeCnt = PVP.PVP_CHALLENGE_COUNTS; + let result = await PvpDefenseModel.createPvpDefense({ roleId: role.roleId, roleName: role.roleName, role: role._id, heroes, oppPlayers, defCe: role.topFiveCe, seasonNum, warId, challengeCnt }); //加入排行榜 TODO return result; } diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index 18490e0f3..77664a9b6 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -38,14 +38,14 @@ export async function init() { export async function setPvpSeasonResult(obj:{ name:string }) { console.log('exce setPvpSeasonResult'+ obj.name); + let { seasonNum } = await setNextPvpTime(); let pvpDefenses = await PvpDefenseModel.getPvpDef(LIMIT_NUM); for (let pvpDefense of pvpDefenses) { - await setPvpDefResult(pvpDefense); + await setPvpDefResult(pvpDefense, seasonNum); } - await setNextPvpTime(); } -export async function setPvpDefResult(pvpDefense: PvpDefenseType) { +export async function setPvpDefResult(pvpDefense: PvpDefenseType, seasonNum: number) { let pvpRankRewards = getPvpRankRewards(); let pvpHeroRewards = getPvpHeroRewards(); let goods = []; @@ -61,7 +61,7 @@ export async function setPvpDefResult(pvpDefense: PvpDefenseType) { score += heroScore.score; } let pLv = getPLvByScore(score); - pvpDefense = await PvpDefenseModel.updateInfo(pvpDefense.roleId, {score:score, pLv, heroScores: pvpDefense.heroScores}); + pvpDefense = await PvpDefenseModel.updateInfo(pvpDefense.roleId, {score:score, pLv, heroScores: pvpDefense.heroScores, winStreakNum:0, seasonNum, refOppCnt:0, challengeCnt:PVP.PVP_CHALLENGE_COUNTS, challengeRefTime:0}); //TODO 下发邮件 return pvpDefense; } @@ -84,6 +84,7 @@ async function setNextPvpTime() { let systemConfig = await SystemConfigModel.updateSeason(seasonEndTime); let settleTime = (seasonEndTime - SETTLE_DIFF)* PER_SECOND; scheduleJob(settleTime, setPvpSeasonResult); + return systemConfig; } function getScore(arr, score) { diff --git a/shared/db/PvpDefense.ts b/shared/db/PvpDefense.ts index 4adf1617f..75835934c 100644 --- a/shared/db/PvpDefense.ts +++ b/shared/db/PvpDefense.ts @@ -14,6 +14,10 @@ interface pvpUpdateInter { winStreakNum?: number; defCe?:number; heroes?: Array; + seasonNum?: number; + refOppCnt?:number; + challengeCnt?:number; + challengeRefTime?:number; } export class Heroes { @@ -143,7 +147,7 @@ export default class PvpDefense extends BaseModel { return result; } - public static async createPvpDefense(params: { roleId: string, roleName: string, role: string, heroes: Array, oppPlayers: Array, defCe: number }, lean = true) { + public static async createPvpDefense(params: { roleId: string, roleName: string, role: string, heroes: Array, oppPlayers: Array, defCe: number, seasonNum: number, warId: number, challengeCnt: number }, lean = true) { const doc = new PvpDefenseModel(); const update = Object.assign(doc.toJSON(), params); const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean(lean);