🐞 fix(battle): 名将擂台战报保留2天

This commit is contained in:
dcl
2023-02-22 17:03:14 +08:00
parent ed6bd1e8d5
commit 7ec11643a1
3 changed files with 90 additions and 2 deletions

View File

@@ -353,10 +353,13 @@ export class LadderHandler {
return resResult(STATUS.SUCCESS, pick(result, ['buyCnt', 'challengeCnt']));
}
// 12. 获取战报信息
// 12. 获取战报信息2天内
async getRec(msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
let list = await LadderMatchRecModel.findRec(roleId);
let endTime = new Date().getTime();
const dayMs = 1000 * 60 * 60 * 24;
let startTime = endTime - dayMs * 2;
let list = await LadderMatchRecModel.findRecByTimeRange(roleId, startTime, endTime);
return resResult(STATUS.SUCCESS, {
list: list.map(rec => {
const { roleId1, battleCode, hasRpl } = rec;

View File

@@ -574,6 +574,73 @@ describe('战斗测试', function () {
it.skip('领取奖励', function (done) {
done();
});
it('获取名将擂台战报', function (done) {
pinusClient.request('battle.ladderHandler.getRec', {}, (res) => {
checkSuccessResponse(res);
expect(res.data.rplPrefixUrl).to.be.an('string');
checkLadderMatchRecs(res.data.list);
done();
});
});
// 名将擂台战报校验 - 2天内的战报记录
function checkLadderMatchRecs(ladderMatchRecs) {
expect(ladderMatchRecs).to.be.an('array');
let now = new Date().getTime();
ladderMatchRecs.forEach(ladderMatchRec => {
expect(ladderMatchRec.battleCode).to.be.a('string');
expect(ladderMatchRec.roleId1).to.be.a('string');
expect(ladderMatchRec.roleId2).to.be.a('string');
let timeDiff = now - ladderMatchRec.endTime;
expect(timeDiff).to.greaterThan(0);
expect(ladderMatchRec.rplFileUrl).to.be.a('string');
// ladderMatchRec.attackInfo
expect(ladderMatchRec.attackInfo.lv).to.be.a('number');
expect(ladderMatchRec.attackInfo.head).to.be.a('number');
expect(ladderMatchRec.attackInfo.frame).to.be.a('number');
expect(ladderMatchRec.attackInfo.spine).to.be.a('number');
expect(ladderMatchRec.attackInfo.title).to.be.a('number');
expect(ladderMatchRec.attackInfo.ce).to.be.a('number');
expect(ladderMatchRec.attackInfo.isSuccess).to.be.a('boolean');
expect(ladderMatchRec.attackInfo.oldRank).to.be.a('number');
expect(ladderMatchRec.attackInfo.newRank).to.be.a('number');
expect(ladderMatchRec.attackInfo.roleId).to.be.a('string');
expect(ladderMatchRec.attackInfo.roleName).to.be.a('string');
expect(ladderMatchRec.attackInfo.heroes).to.be.a('array');
ladderMatchRec.attackInfo.heroes.forEach(hero => {
expect(hero.hid).to.be.a('number');
expect(hero.skinId).to.be.a('number');
expect(hero.quality).to.be.a('number');
expect(hero.star).to.be.a('number');
expect(hero.colorStar).to.be.a('number');
expect(hero.lv).to.be.a('number');
});
// ladderMatchRec.defenseInfo
expect(ladderMatchRec.defenseInfo.lv).to.be.a('number');
expect(ladderMatchRec.defenseInfo.head).to.be.a('number');
expect(ladderMatchRec.defenseInfo.frame).to.be.a('number');
expect(ladderMatchRec.defenseInfo.spine).to.be.a('number');
expect(ladderMatchRec.defenseInfo.title).to.be.a('number');
expect(ladderMatchRec.defenseInfo.ce).to.be.a('number');
expect(ladderMatchRec.defenseInfo.isSuccess).to.be.a('boolean');
expect(ladderMatchRec.defenseInfo.oldRank).to.be.a('number');
expect(ladderMatchRec.defenseInfo.newRank).to.be.a('number');
expect(ladderMatchRec.defenseInfo.roleId).to.be.a('string');
expect(ladderMatchRec.defenseInfo.roleName).to.be.a('string');
expect(ladderMatchRec.defenseInfo.heroes).to.be.a('array');
ladderMatchRec.defenseInfo.heroes.forEach(hero => {
expect(hero.hid).to.be.a('number');
expect(hero.skinId).to.be.a('number');
expect(hero.quality).to.be.a('number');
expect(hero.star).to.be.a('number');
expect(hero.colorStar).to.be.a('number');
expect(hero.lv).to.be.a('number');
});
})
}
});
function getParamHeroes(roleInfo) {

View File

@@ -101,6 +101,24 @@ export default class LadderMatchRec extends BaseModel {
return recs;
}
/**
* 按时间区间查询名将擂台战报用战斗结束时间endTime做比较
* @static
* @param {string} roleId
* @param {number} startTime 开始时间13位时间戳
* @param {number} endTime 结束时间 13位时间戳
* @return {*}
* @memberof LadderMatchRec
*/
public static async findRecByTimeRange(roleId: string, startTime: number, endTime: number) {
let recs: LadderMatchRecType[] = await LadderMatchRecModel.find({
endTime: {$gt: startTime, $lt: endTime},
$or: [{roleId1: roleId}, { roleId2: roleId }],
status: LADDER_STATUS.COMPLETE
}).select({ battleCode: 1, roleId1: 1, roleId2: 1, _id: -1, endTime: 1, attackInfo: 1, defenseInfo: 1, hasRpl: 1 }).limit(1000).lean();
return recs;
}
public static async checkByRank(serverId: number, roleId2: string) {
const result = await LadderMatchRecModel.exists({ serverId, roleId2, status: { $in: [LADDER_STATUS.BATTLE, LADDER_STATUS.CHECK] } });
return result;