🐞 fix(gvg): 修复战区问题,不跨服服务器应单列
This commit is contained in:
+12
-15
@@ -14,7 +14,7 @@ export class Lineup {
|
||||
ce: number; // 战力
|
||||
}
|
||||
|
||||
@index({ day: 1, groupId: 1, serverType: 1, vestigeId: 1, rank: 1 })
|
||||
@index({ day: 1, groupKey: 1, vestigeId: 1, rank: 1 })
|
||||
@index({ roleId: 1 })
|
||||
export default class GVGVestigeRank extends BaseModel {
|
||||
|
||||
@@ -25,14 +25,11 @@ export default class GVGVestigeRank extends BaseModel {
|
||||
day: number; // 每天5点
|
||||
|
||||
@prop({ required: true })
|
||||
groupId: number; // 战区id
|
||||
groupKey: string; // 战区
|
||||
|
||||
@prop({ required: true })
|
||||
vestigeId: number; // 遗迹id
|
||||
|
||||
@prop({ required: true })
|
||||
serverType: number; // 1-单服 2-跨服
|
||||
|
||||
@prop({ required: true })
|
||||
roleId: string; // 玩家
|
||||
|
||||
@@ -72,16 +69,16 @@ export default class GVGVestigeRank extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRank(configId: number, groupId: number, serverType: number, vestigeId: number, rank: number) {
|
||||
public static async findByRank(configId: number, groupKey: string, vestigeId: number, rank: number) {
|
||||
let today = getZeroPoint();
|
||||
let result: GVGVestigeRankType = await GVGVestigeRankModel.findOne({ configId, groupId, serverType, day: today, vestigeId, rank }).lean();
|
||||
let result: GVGVestigeRankType = await GVGVestigeRankModel.findOne({ configId, groupKey, day: today, vestigeId, rank }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async initRank(configId: number, vestigeId: number, groupId: number, serverType: number, role: RoleType, leagueCode: string, oppRanks: number[]) {
|
||||
public static async initRank(configId: number, vestigeId: number, groupKey: string, role: RoleType, leagueCode: string, oppRanks: number[]) {
|
||||
let today = getZeroPoint();
|
||||
let doc = new GVGVestigeRankModel();
|
||||
let update = Object.assign(doc.toJSON(), { role: role._id, configId, groupId, serverType, oppRanks, leagueCode });
|
||||
let update = Object.assign(doc.toJSON(), { role: role._id, configId, groupKey, oppRanks, leagueCode });
|
||||
let result: GVGVestigeRankType = await GVGVestigeRankModel.findOneAndUpdate({ day: today, vestigeId, roleId: role.roleId }, { $setOnInsert: update }, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
}
|
||||
@@ -92,9 +89,9 @@ export default class GVGVestigeRank extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRanks(groupId: number, serverType: number, vestigeId: number, ranks: number[]) {
|
||||
public static async findByRanks(groupKey: string, vestigeId: number, ranks: number[]) {
|
||||
let today = getZeroPoint();
|
||||
let result: GVGVestigeRankType[] = await GVGVestigeRankModel.find({ day: today, vestigeId, groupId, serverType, rank: { $in: ranks } })
|
||||
let result: GVGVestigeRankType[] = await GVGVestigeRankModel.find({ day: today, vestigeId, groupKey, rank: { $in: ranks } })
|
||||
.lean();
|
||||
return result;
|
||||
}
|
||||
@@ -146,21 +143,21 @@ export default class GVGVestigeRank extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findRank(): Promise<{ _id: { groupId: number, vestigeId: number, serverType: number }, arr: { roleId: string, rank: number }[], roleIds: string[] }[]> {
|
||||
public static async findRank(): Promise<{ _id: { groupKey: string, vestigeId: number }, arr: { roleId: string, rank: number }[], roleIds: string[] }[]> {
|
||||
let today = getZeroPoint();
|
||||
let ranks = await GVGVestigeRankModel.aggregate([
|
||||
{ $match: { day: today } },
|
||||
{ $group: {
|
||||
_id: { groupId: "$groupId", vestigeId: "$vestigeId", serverType: "$serverType" },
|
||||
_id: { groupKey: "$groupKey", vestigeId: "$vestigeId" },
|
||||
arr: { $push: { roleId: "$roleId", rank: "$rank" } }, roleIds: { $addToSet: "$roleId" }
|
||||
}},
|
||||
]);
|
||||
return ranks;
|
||||
}
|
||||
|
||||
public static async findRankByVestige(groupId: number, serverType: number, vestigeId: number) {
|
||||
public static async findRankByVestige(groupKey: string, vestigeId: number) {
|
||||
let today = getZeroPoint();
|
||||
let result: GVGVestigeRankType[] = await GVGVestigeRankModel.find({ day: today, vestigeId, groupId, serverType, rank: { $gt: 0 } }).sort({ rank: 1 }).select('roleId rank lineup').lean();
|
||||
let result: GVGVestigeRankType[] = await GVGVestigeRankModel.find({ day: today, vestigeId, groupKey, rank: { $gt: 0 } }).sort({ rank: 1 }).select('roleId rank lineup').lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user