添加排行榜
This commit is contained in:
@@ -8,8 +8,8 @@ import { resResult, reduceCe, genCode } from '../../../pubUtils/util';
|
||||
import { SystemConfigModel } from '../../../db/SystemConfig'
|
||||
|
||||
import { PvpDefenseModel, PvpDefenseType, OppPlayers } from '../../../db/PvpDefense';
|
||||
import { oppHeroesDefenseInter, pvpEndParamInter } from '../../../pubUtils/interface';
|
||||
import { PVP_HERO_POS } from '../../../consts';
|
||||
import { oppHeroesDefenseInter, pvpEndParamInter, RankParam } from '../../../pubUtils/interface';
|
||||
import { PVP_HERO_POS, REDIS_KEY } from '../../../consts';
|
||||
|
||||
import { HeroType, HeroModel } from '../../../db/Hero';
|
||||
import { CeAttrNumber } from '../../../db/generalField';
|
||||
@@ -17,6 +17,8 @@ import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
|
||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||
import { PvpRecordModel, HeroesRecord } from '../../../db/PvpRecord';
|
||||
import { setPvpDefResult } from '../../../services/timeTaskService';
|
||||
import { existsRank, initRank, getRank, setRank, getMyRank } from '../../../services/redisService';
|
||||
|
||||
export default function(app: Application) {
|
||||
return new PvpHandler(app);
|
||||
}
|
||||
@@ -25,17 +27,10 @@ export class PvpHandler {
|
||||
constructor(private app: Application) {
|
||||
}
|
||||
|
||||
async test(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
const result = await initPvpInfo(role);
|
||||
return resResult(STATUS.SUCCESS, {result});
|
||||
}
|
||||
|
||||
async getData (msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
let oppPlayers = getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
let oppPlayers = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
let {warId, seasonNum, seasonEndTime} = await SystemConfigModel.findSystemConfig();
|
||||
let {heroes, score, pLv, winStreakNum, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores, isFirstEntry} = pvpDefense;
|
||||
if (pvpDefense.seasonNum !== seasonNum) {
|
||||
@@ -44,7 +39,7 @@ export class PvpHandler {
|
||||
if (isFirstEntry) {
|
||||
await PvpDefenseModel.updateInfo(roleId, {isFirstEntry:false});
|
||||
}
|
||||
let myRank = 999;//TODO去redis中获取
|
||||
let myRank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);//去redis中获取排名
|
||||
let data = {warId, seasonNum, seasonEndTime, myRank, oppPlayers, heroes, score, pLv, winStreakNum, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores, isFirstEntry}
|
||||
return resResult(STATUS.SUCCESS, data);
|
||||
}
|
||||
@@ -59,7 +54,9 @@ export class PvpHandler {
|
||||
let oppPlayers = await refreshEnemies(role, pvpDefense.score, pvpDefense.pLv);
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { oppPlayers });
|
||||
let result = getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
let result = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
|
||||
// TODO 刷新次数及消耗
|
||||
|
||||
return resResult(STATUS.SUCCESS, { oppPlayers: result, refOppCnt: 0 });
|
||||
}
|
||||
@@ -146,6 +143,8 @@ export class PvpHandler {
|
||||
let checkHeroes = await checkBattleHeroesByHid(roleId, heroes);
|
||||
if(!checkHeroes) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
|
||||
|
||||
// TODO 检查挑战次数
|
||||
|
||||
const pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
let { oppPlayers } = pvpDefense;
|
||||
@@ -256,15 +255,6 @@ export class PvpHandler {
|
||||
const role = await RoleModel.findByRoleId(roleId);
|
||||
let newOppPlayers: Array<OppPlayers> = await refreshEnemies(role, score, pLv);
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { oppPlayers: newOppPlayers, heroScores, score, pLv, winStreakNum });
|
||||
let result = getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
|
||||
|
||||
// 更新battleRecord
|
||||
await BattleRecordModel.updateBattleRecordByCode(battleCode, {
|
||||
$set: { status: isSuccess?1:2 }
|
||||
}, true);
|
||||
|
||||
let oppRole;
|
||||
if(curOpp.isRobot) {
|
||||
oppRole = { ...curOpp.robot, title: 1, topFiveCe: curOpp.robot.defCe};
|
||||
@@ -279,9 +269,23 @@ export class PvpHandler {
|
||||
roleId: oppRole.roleId, roleName: oppRole.roleName, lv: oppRole.lv, sHid: oppRole.sHid, headHid: oppRole.headHid, title: oppRole.title, ce: oppRole.topFiveCe, heroes: myHeroRecords, isSuccess: !isSuccess, score: 0
|
||||
}})
|
||||
|
||||
// 更新battleRecord
|
||||
await BattleRecordModel.updateBattleRecordByCode(battleCode, {
|
||||
$set: { status: isSuccess?1:2 }
|
||||
}, true);
|
||||
|
||||
// TODO 增加挑战次数
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { oppPlayers: newOppPlayers, heroScores, score, pLv, winStreakNum });
|
||||
let result = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
|
||||
// 加入排行榜
|
||||
let params = new RankParam(roleName, role.lv, role.vLv, role.headHid, role.sHid, role.title);
|
||||
await setRank(REDIS_KEY.PVP_RANK, 0, roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), params);
|
||||
let myRank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
battleCode, isSuccess,
|
||||
score, pLv, myRank: 0,
|
||||
score, pLv, myRank,
|
||||
heroScores: showHeroScores,
|
||||
oppPlayers: result
|
||||
});
|
||||
@@ -333,5 +337,26 @@ export class PvpHandler {
|
||||
}
|
||||
}
|
||||
|
||||
async getRank(msg: {}, session: BackendSession) {
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let serverId = session.get('serverId')
|
||||
|
||||
const hasRank = await existsRank(REDIS_KEY.PVP_RANK, serverId);
|
||||
if(!hasRank) await initRank(serverId);
|
||||
|
||||
let {ranks, myRank} = await getRank(REDIS_KEY.PVP_RANK, 0, roleId);
|
||||
if(!myRank) {
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let { lv, vLv, headHid, sHid, title} = role;
|
||||
let rankRank = new RankParam(roleName, lv, vLv, headHid, sHid, title);
|
||||
myRank = {
|
||||
rank: 0, roleId, ...rankRank, num: pvpDefense.score, str: ''
|
||||
}
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { ranks: ranks.slice(0, 100), myRank });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurT
|
||||
import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService';
|
||||
import { checkBattleHeroes } from '../../../services/normalBattleService';
|
||||
import { getRank, setRank, initRank, existsRank } from '../../../services/redisService';
|
||||
import { RankParam } from '../../../pubUtils/interface';
|
||||
|
||||
export default function(app: Application) {
|
||||
return new TowerBattleHandler(app);
|
||||
@@ -33,8 +34,9 @@ export class TowerBattleHandler {
|
||||
towerLv = 1;
|
||||
let role = await RoleModel.towerLvUp(roleId);
|
||||
// 更新redis
|
||||
let { roleName, towerUpTime, lv, vLv } = role;
|
||||
await setRank(REDIS_KEY.TOWER_RANK, serverId, roleId, towerLv, towerUpTime.getTime(), {roleName, lv, vLv, guildName:"", head: "zhaoyun"});
|
||||
let { roleName, towerUpTime, lv, vLv, headHid, sHid, title } = role;
|
||||
let rankRank = new RankParam(roleName, lv, vLv, headHid, sHid, title);
|
||||
await setRank(REDIS_KEY.TOWER_RANK, serverId, roleId, towerLv, towerUpTime.getTime(), rankRank);
|
||||
|
||||
}
|
||||
let towerRec = await TowerRecordModel.getRecordByLv(roleId, towerLv);
|
||||
|
||||
Reference in New Issue
Block a user