✨ feat(离线icon): 到8110dd75c
This commit is contained in:
@@ -214,5 +214,5 @@ export const PUSH_ROUTE = {
|
||||
GVG_REC_ADD: 'onGVGRecAdd', // 动态更新
|
||||
ROUGE_COLLECT_UPDATE: 'onRougeCollectUpdate', // 更新图鉴
|
||||
ROUGE_CHALLENGE_UPDATE: 'onRougeChallengeUpdate', //更新学宫挑战进度
|
||||
|
||||
LADDER_OR_GVG_ICON_SHOW: 'onLadderOrGvgIconShow', //名将擂台icon提示
|
||||
}
|
||||
@@ -127,6 +127,23 @@ export default class GVGVestigeRec extends BaseModel {
|
||||
}).select({ battleCode: 1, attackRoleId: 1, defenseRoleId: 1, _id: 0, endTime: 1, attackInfo: 1, defenseInfo: 1, hasRpl: 1, remoteUrl: 1 }).limit(1000).lean();
|
||||
return recs;
|
||||
}
|
||||
|
||||
public static async findRecCurDay(roleId: string, startMs:number) {
|
||||
const pipeline = [
|
||||
{ $match: {endTime: { $gt: startMs }, $or: [{ attackRoleId: roleId }, { defenseRoleId: roleId }]} },
|
||||
{ $sort: { endTime: -1 } },
|
||||
// { $limit: 1000 },
|
||||
];
|
||||
let result:GVGVestigeRecType[] = []
|
||||
const recs: GVGVestigeRecType[] = await GVGVestigeRecModel.aggregate(pipeline);
|
||||
if (recs.length > 0) {
|
||||
for(const obj of recs){
|
||||
if(obj.defenseRoleId == roleId && (!obj.defenseInfo.isSuccess)) result.push(obj);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const GVGVestigeRecModel = getModelForClass(GVGVestigeRec);
|
||||
|
||||
@@ -41,12 +41,12 @@ export default class LadderMatchRec extends BaseModel {
|
||||
remoteUrl: string; // 录像地址
|
||||
|
||||
public static async findByRoleId(roleId: string, getters = false) {
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOne({ roleId1: roleId }).lean({ getters});
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOne({ roleId1: roleId }).lean({ getters });
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findNotCompleteRecByRoleId(roleId: string, getters = false) {
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOne({ roleId1: roleId, status: { $in: [ LADDER_STATUS.BATTLE, LADDER_STATUS.CHECK ] } }).lean({ getters});
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOne({ roleId1: roleId, status: { $in: [LADDER_STATUS.BATTLE, LADDER_STATUS.CHECK] } }).lean({ getters });
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -82,11 +82,11 @@ export default class LadderMatchRec extends BaseModel {
|
||||
|
||||
public static async battleEnd(battleCode: string, isSuccess: boolean, endTime: number, atkNewRank?: number, defNewRank?: number) {
|
||||
let update: LadderMatchRecUpdate = { status: LADDER_STATUS.COMPLETE, endTime, timeout: false };
|
||||
if(isSuccess) {
|
||||
if (isSuccess) {
|
||||
update['attackInfo.isSuccess'] = true;
|
||||
update['defenseInfo.isSuccess'] = false;
|
||||
}
|
||||
if(atkNewRank != undefined && defNewRank != undefined) {
|
||||
if (atkNewRank != undefined && defNewRank != undefined) {
|
||||
update['attackInfo.newRank'] = atkNewRank;
|
||||
update['attackInfo.oldRank'] = defNewRank;
|
||||
update['defenseInfo.newRank'] = defNewRank;
|
||||
@@ -98,10 +98,10 @@ export default class LadderMatchRec extends BaseModel {
|
||||
}
|
||||
|
||||
public static async findRec(roleId: string) {
|
||||
let recs: LadderMatchRecType[] = await LadderMatchRecModel.find({
|
||||
$or: [{roleId1: roleId}, { roleId2: roleId }],
|
||||
let recs: LadderMatchRecType[] = await LadderMatchRecModel.find({
|
||||
$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();
|
||||
}).select({ battleCode: 1, roleId1: 1, roleId2: 1, _id: -1, endTime: 1, attackInfo: 1, defenseInfo: 1, hasRpl: 1 }).limit(1000).lean();
|
||||
return recs;
|
||||
}
|
||||
|
||||
@@ -116,30 +116,55 @@ export default class LadderMatchRec extends BaseModel {
|
||||
public static async findRecentRec(roleId: string, startMs: number) {
|
||||
let recs: LadderMatchRecType[] = await LadderMatchRecModel.find({
|
||||
endTime: { $gt: startMs },
|
||||
$or: [{roleId1: roleId}, { roleId2: roleId }],
|
||||
$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, remoteUrl: 1 }).limit(1000).lean();
|
||||
}).select({ battleCode: 1, roleId1: 1, roleId2: 1, _id: -1, endTime: 1, attackInfo: 1, defenseInfo: 1, hasRpl: 1, remoteUrl: 1 }).limit(1000).lean();
|
||||
return recs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找包含roleId最新一条记录
|
||||
* @param roleId
|
||||
* @returns true--表示查到最新一条roleId作为守方失败
|
||||
*/
|
||||
// public static async findOneRecByRoleId(roleId: string) {
|
||||
// let recs: LadderMatchRecType = await LadderMatchRecModel.findOne({ $or: [{ roleId1: roleId }, { roleId2: roleId }], status: LADDER_STATUS.COMPLETE }).sort({ endTime: -1 }).limit(1).lean();
|
||||
// if (recs && recs.roleId2 == roleId && (!recs.defenseInfo.isSuccess)) return true;
|
||||
// return false;
|
||||
// }
|
||||
public static async findRecByRoleId(roleId: string, quitTime: number) {
|
||||
const pipeline = [
|
||||
{ $match: { endTime: { $gt: quitTime }, $or: [{ roleId1: roleId }, { roleId2: roleId }], status: LADDER_STATUS.COMPLETE } },
|
||||
{ $sort: { endTime: -1 } },
|
||||
// { $limit: 1 },
|
||||
{ $project: { _id: 0, roleId2: 1, "defenseInfo.isSuccess": 1 } }
|
||||
];
|
||||
const recs: LadderMatchRecType[] = await LadderMatchRecModel.aggregate(pipeline);
|
||||
for (let obj of recs) {
|
||||
if (obj.roleId2 === roleId && !obj.defenseInfo.isSuccess) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public static async getUncompleteData() {
|
||||
let recs = await LadderMatchRecModel.find({
|
||||
let recs = await LadderMatchRecModel.find({
|
||||
$or: [
|
||||
{ status: LADDER_STATUS.CHECK },
|
||||
{ status: LADDER_STATUS.BATTLE }
|
||||
]
|
||||
});
|
||||
});
|
||||
return recs;
|
||||
}
|
||||
|
||||
public static async timeoutMany(battleCode: string[]) {
|
||||
|
||||
await LadderMatchRecModel.updateMany({
|
||||
|
||||
await LadderMatchRecModel.updateMany({
|
||||
battleCode: { $in: battleCode }
|
||||
}, { $set: { status: LADDER_STATUS.COMPLETE, timeout: true, endTime: Date.now() } });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user