pvp测试debug

This commit is contained in:
mamengke01
2021-01-12 11:05:34 +08:00
parent 81d51c6099
commit 58f3e94fc0
5 changed files with 48 additions and 31 deletions

View File

@@ -19,7 +19,7 @@ import { PvpRecordModel, HeroesRecord } from '../../../db/PvpRecord';
import { existsRank, initRank, getRank, setRank, getMyRank } from '../../../services/redisService';
import { handleCost } from '../../../services/rewardService';
import { nowSeconds } from '../../../pubUtils/timeUtil';
import { setPvpSeasonResult, resetPvpWarId } from '../../../services/timeTaskService';
export default function(app: Application) {
return new PvpHandler(app);
}
@@ -51,6 +51,16 @@ export class PvpHandler {
}
async debugPvpSeasonReset(msg: {}, session: BackendSession) {
let { seasonNum, seasonEndTime } = await setPvpSeasonResult({name: 'exce setPvpSeasonResult debug'});
return resResult(STATUS.SUCCESS, { seasonNum, seasonEndTime })
}
async debugPvpWarReset(msg: {}, session: BackendSession) {
let systemConfig = await resetPvpWarId();
return resResult(STATUS.SUCCESS, {systemConfig});
}
async getData (msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
let {pvpDefense, warId} = await findPvpDefAllByRoleId(roleId);
@@ -261,7 +271,7 @@ export class PvpHandler {
if (!!isDefaultHero) {
let role = await RoleModel.findByRoleId(roleId);
let { resHeroes } = await defaultHeroes(role);
let { resHeroes } = await defaultHeroes(role, challengeCnt, challengeRefTime, true);
return resResult(STATUS.SUCCESS, { heroes: resHeroes, challengeCnt, challengeRefTime, isDefaultHero} );
} else {
for (let dataId = PVP_HERO_POS.START; dataId <= PVP_HERO_POS.END; dataId++) {

View File

@@ -1,4 +1,4 @@
import { Application, ChannelService, FrontendSession, RemoterClass } from 'pinus';
import { Application, ChannelService, FrontendSession, pinus, RemoterClass } from 'pinus';
import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
import { getRedis, setRedis, delRedis } from '../../../services/redisService';
@@ -28,7 +28,8 @@ export class ConnectorRemote {
await sessionService.akick(uid);
}
public async pushMessage(sid: string, uid: string, route: string, data:any) {
public async pushMessage( uid: string, route: string, data:any) {
let sid = pinus.app.getServerId();
if (!!sid) {
let uids = [{uid, sid}];
this.channelService.pushMessageByUids(route, data, uids);

View File

@@ -238,19 +238,24 @@ export function getLvByScore(heroScores: HeroScores[]) {
return getPLvByScore(score);
}
export async function defaultHeroes ( role:RoleType, challengeCnt?:number, challengeRefTime?:number,) {
let { heroes } = await PvpDefenseModel.findByRoleId(role.roleId);
var orders = [1, 2, 3, 4, 5];
heroes.sort(function(a, b) {
if (!!a.order&& !!a.hero) {
let index = orders.indexOf(a.order);
orders.splice(index, 1);
}
return b.ce - b.dataId - a.ce + a.dataId;
});
export async function defaultHeroes ( role:RoleType, challengeCnt?:number, challengeRefTime?:number, isUpdate?: boolean) {
let { heroes, isDefaultHero } = await PvpDefenseModel.findByRoleId(role.roleId);
if (!isUpdate && !isDefaultHero) {
return;
}
let orders = [1, 2, 3, 4, 5];
role.topFive.sort(function(a, b) {
return b.ce - a.ce;
});
heroes.sort(function(a, b) {
return b.ce - b.dataId - a.ce + a.dataId;
});
for (let hero of heroes) {
if (!!hero.order&& !!hero.hero && _.findIndex(role.topFive, {hid: hero.actorId}) != -1) {
let index = orders.indexOf(hero.order);
orders.splice(index, 1);
}
}
let defCe = 0;
let num = 0;
for (let i = 0; i < role.topFive.length; i++) {

View File

@@ -8,7 +8,7 @@ import PvpDefenseType,{ PvpDefenseModel } from '../db/PvpDefense';
import { PVP } from '../pubUtils/dicParam';
import { nowSeconds, getTodayZeroPoint } from '../pubUtils/timeUtil';
import { getPvpGkWarIds, getPvpRankRewards, getPvpHeroRewards } from '../pubUtils/data';
import { getRandomArr } from '../pubUtils/util';
import { deepCopy, getRandomArr } from '../pubUtils/util';
import { getLvByScore } from './pvpService';
import { getMyRank, setRank, getRedis } from './redisService';
import { REDIS_KEY } from '../consts';
@@ -49,21 +49,21 @@ export async function setPvpSeasonResult(obj:{ name:string }) {
for (let page = 0; page < 3; page++) {
let pvpDefenses = await PvpDefenseModel.getPvpDef(500, page);
let addMails = new Array<MailType>();
let pushMessage = new Array<any>();
for (let pvpDefense of pvpDefenses) {
if (pvpDefense.seasonNum !== seasonNum) {
await setPvpDefResultOnTime(pvpDefense, seasonNum, seasonEndTime, addMails);
await setPvpDefResultOnTime(pvpDefense, seasonNum, seasonEndTime, addMails,pushMessage);
}
}
await MailModel.addMails(addMails);
// let key = 'login_roleId_' + pvpDefense.roleId;
// let sid = await getRedis(key);
// if (!!sid) {
// pinus.app.rpc.connector.connectorRemote.pushMessage.toServer(sid, pvpDefense.roleId, 'onMailsAdd', [mail]);
// }
for (let message of pushMessage) {
pinus.app.rpc.connector.connectorRemote.pushMessage.toServer(message.sid, message.uid, message.route, message.data);
}
}
return { seasonNum, seasonEndTime };
}
export async function setPvpDefResultOnTime(pvpDefense: PvpDefenseType, seasonNum: number, seasonEndTime:number, addMails: Array<MailType>) {
export async function setPvpDefResultOnTime(pvpDefense: PvpDefenseType, seasonNum: number, seasonEndTime:number, addMails: Array<MailType>, pushMessage:Array<any>) {
let role = await RoleModel.findByRoleId(pvpDefense.roleId);
if (!role) {
return;
@@ -75,8 +75,13 @@ export async function setPvpDefResultOnTime(pvpDefense: PvpDefenseType, seasonNu
setRank(REDIS_KEY.PVP_RANK, 0, pvpDefense.roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), params);
//下发邮件
const doc = new MailModel();
const mail = Object.assign(doc.toJSON(), { goods, sendName: '系统', mailId: 1, sendTime: nowSeconds()});
const mail = Object.assign(doc.toJSON(), {roleId: pvpDefense.roleId, goods, sendName: '系统', mailId: 1, sendTime: nowSeconds()});
addMails.push(mail);
let key = 'login_roleId_' + pvpDefense.roleId;
let sid = await getRedis(key);
if (!!sid) {
pushMessage.push({route: 'onMailsAdd', data:[mail], uid: pvpDefense.roleId, sid});
}
return pvpDefense;
}
@@ -127,14 +132,14 @@ export async function setPvpDefResult(pvpDefense: PvpDefenseType, seasonNum: num
export async function resetPvpWarId() {
console.log('resetPvpWarId');
let systemConfig = await SystemConfigModel.findSystemConfig();
let warIds = getPvpGkWarIds();
let warIds = deepCopy(getPvpGkWarIds());
let index = _.indexOf(warIds, systemConfig.warId);
if (index != -1) {
warIds.splice(index, 1);
}
let res = getRandomArr(warIds, 1);
let warId = res[0];//TODO随机地图
await SystemConfigModel.updateSystemConfig({ warId });
return await SystemConfigModel.updateSystemConfig({ warId });
}
async function setNextPvpTime() {

View File

@@ -7,10 +7,7 @@ import { nowSeconds } from '../pubUtils/timeUtil';
export default class Mail extends BaseModel {
@prop({ required: true })
roleId: number;
@prop({ required: true })
seqId: number;
roleId: string;
@prop({ required: true })
mailId: number;
@@ -25,8 +22,7 @@ export default class Mail extends BaseModel {
sendName: string;
public static async addMails( mails: Array<MailType>) {
let mailInfos:Array<MailType> = await MailModel.insertMany(mails);
return mailInfos;
await MailModel.insertMany(mails);
}
public static async addMail(params:{ goods: Array<RewardInter>, sendName: string, mailId: number, sendTime?: number}) {