🐞 fix(gvg): 修复战区问题,不跨服服务器应单列
This commit is contained in:
@@ -2,7 +2,7 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { getZeroPoint } from '../pubUtils/timeUtil';
|
||||
|
||||
@index({ day: 1, groupId: 1, serverType: 1, score: 1 })
|
||||
@index({ day: 1, groupKey: 1, score: 1 })
|
||||
@index({ roleId: 1 })
|
||||
export default class GVGVestigeSumRank extends BaseModel {
|
||||
|
||||
@@ -19,10 +19,7 @@ export default class GVGVestigeSumRank extends BaseModel {
|
||||
leagueCode: string; // 联军id
|
||||
|
||||
@prop({ required: true })
|
||||
groupId: number; // 战区id
|
||||
|
||||
@prop({ required: true })
|
||||
serverType: number; // 1-单服 2-跨服
|
||||
groupKey: string; // 战区id
|
||||
|
||||
@prop({ required: true })
|
||||
score: number; // 得分
|
||||
@@ -33,21 +30,21 @@ export default class GVGVestigeSumRank extends BaseModel {
|
||||
@prop({ required: true })
|
||||
isReceived: boolean; // 是否领取过
|
||||
|
||||
public static async incScore(roleId: string, leagueCode: string, configId: number, groupId: number, serverType: number, inc: number) {
|
||||
public static async incScore(roleId: string, leagueCode: string, configId: number, groupKey: string, inc: number) {
|
||||
let today = getZeroPoint();
|
||||
let result: GVGVestigeSumRankType = await GVGVestigeSumRankModel.findOneAndUpdate({
|
||||
configId, day: today, groupId, serverType, roleId, leagueCode
|
||||
configId, day: today, groupKey, roleId, leagueCode
|
||||
}, { $inc: { score: inc } , $setOnInsert: { rank: 0, isReceived: false } }, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
// 排行榜
|
||||
public static async findRankByGroupId(): Promise<{ _id: { groupId: number, serverType: number }, arr: { roleId: string, score: number, updatedAt: Date }[], roleIds: string[] }[]> {
|
||||
public static async findRankByGroupId(): Promise<{ _id: string, arr: { roleId: string, score: number, updatedAt: Date }[], roleIds: string[] }[]> {
|
||||
let today = getZeroPoint();
|
||||
let ranks = await GVGVestigeSumRankModel.aggregate([
|
||||
{ $match: { day: today } },
|
||||
{ $group: {
|
||||
_id: { groupId: "$groupId", serverType: "$serverType" },
|
||||
_id: "$groupKey",
|
||||
arr: { $push: { roleId: "$roleId", score: "$score", updatedAt: "$updatedAt", leagueCode: "$leagueCode" } }, roleIds: { $addToSet: "$roleId" }
|
||||
}},
|
||||
]);
|
||||
@@ -64,10 +61,10 @@ export default class GVGVestigeSumRank extends BaseModel {
|
||||
return ranks;
|
||||
}
|
||||
|
||||
public static async saveRank(groupId: number, serverType: number, ranks: { rank: number, field: string }[]) {
|
||||
public static async saveRank(groupKey: string, ranks: { rank: number, field: string }[]) {
|
||||
let today = getZeroPoint();
|
||||
await GVGVestigeSumRankModel.bulkWrite(ranks.map(({ field, rank }) => {
|
||||
return { updateOne: { filter: { day: today, groupId, serverType, roleId: field }, update: { $set: { rank } }} }
|
||||
return { updateOne: { filter: { day: today, groupKey, roleId: field }, update: { $set: { rank } }} }
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user