🐞 fix(gvg): gvg个人排行
This commit is contained in:
@@ -610,6 +610,7 @@ export const FILENAME = {
|
||||
DIC_GVG_AREA_POINT: 'dic_zyz_GVGAreaPoint',
|
||||
DIC_GVG_BATTLE_RANK_REWARD: 'dic_zyz_GVGBattleRankReward',
|
||||
DIC_GK_GVGBATTLE: 'dic_zyz_gk_GVGBattle',
|
||||
DIC_GVG_VESTIGE_PLAYER_RANK: 'dic_zyz_GVGVestigePlayerRank',
|
||||
}
|
||||
|
||||
export const WAR_RELATE_TABLES = [
|
||||
|
||||
@@ -6,6 +6,9 @@ import { getZeroPoint } from '../pubUtils/timeUtil';
|
||||
@index({ roleId: 1 })
|
||||
export default class GVGVestigeSumRank extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
configId: number; // 赛期
|
||||
|
||||
@prop({ required: true })
|
||||
day: number; // 每天5点
|
||||
|
||||
@@ -24,11 +27,17 @@ export default class GVGVestigeSumRank extends BaseModel {
|
||||
@prop({ required: true })
|
||||
score: number; // 得分
|
||||
|
||||
public static async incScore(roleId: string, leagueCode: string, groupId: number, serverType: number, inc: number) {
|
||||
@prop({ required: true })
|
||||
rank: number; // 最后的排名,每天22点定格
|
||||
|
||||
@prop({ required: true })
|
||||
isReceived: boolean; // 是否领取过
|
||||
|
||||
public static async incScore(roleId: string, leagueCode: string, configId: number, groupId: number, serverType: number, inc: number) {
|
||||
let today = getZeroPoint();
|
||||
let result: GVGVestigeSumRankType = await GVGVestigeSumRankModel.findOneAndUpdate({
|
||||
day: today, groupId, serverType, roleId, leagueCode
|
||||
}, { $inc: { score: inc } }, { new: true, upsert: true }).lean();
|
||||
configId, day: today, groupId, serverType, roleId, leagueCode
|
||||
}, { $inc: { score: inc } , $setOnInsert: { rank: 0, isReceived: false } }, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -54,6 +63,23 @@ export default class GVGVestigeSumRank extends BaseModel {
|
||||
]);
|
||||
return ranks;
|
||||
}
|
||||
|
||||
public static async saveRank(groupId: number, serverType: number, 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 } }} }
|
||||
}));
|
||||
}
|
||||
|
||||
public static async getCanReceiveRanks(configId: number, roleId: string) {
|
||||
console.log(configId, roleId)
|
||||
let result: GVGVestigeSumRankType[] = await GVGVestigeSumRankModel.find({ configId, roleId, rank: { $gt: 0 }, isReceived: false }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async receiveRanks(_ids: string[]) {
|
||||
await GVGVestigeSumRankModel.updateMany({ _id: { $in: _ids } }, { $set: { isReceived: true } });
|
||||
}
|
||||
}
|
||||
|
||||
export const GVGVestigeSumRankModel = getModelForClass(GVGVestigeSumRank);
|
||||
|
||||
@@ -131,6 +131,7 @@ import { dicGVGVestigeByType, dicGVGVestigeName, loadGVGVestigeType } from './di
|
||||
import { dicGVGVestige, loadGVGVestige } from './dictionary/DicGVGVestige';
|
||||
import { DicGVGVestigeRange, dicGVGVestigeRange, loadGVGVestigeRange } from './dictionary/DicGVGVestigeRange';
|
||||
import { DicGVGVestigeLeagueRank, dicGVGVestigeLeagueRank, loadGVGVestigeLeagueRank } from "./dictionary/DicGVGVestigeLeagueRank";
|
||||
import { DicGVGVestigePlayerRank, dicGVGVestigePlayerRank, loadGVGVestigePlayerRank } from "./dictionary/DicGVGVestigePlayerRank";
|
||||
import { dicGVGAreaPoint, loadGVGAreaPoint, dicGVGPointsByAreaId } from "./dictionary/DicGVGAreaPoint";
|
||||
import { DicGVGBattleRankReward, dicGVGBattleRankReward, loadGVGBattleRankReward } from './dictionary/DicGVGBattleRankReward';
|
||||
|
||||
@@ -331,6 +332,7 @@ export const gameData = {
|
||||
gvgVestige: dicGVGVestige,
|
||||
gvgVestigeRange: dicGVGVestigeRange,
|
||||
gvgVestigeLeagueRank: dicGVGVestigeLeagueRank,
|
||||
gvgVestigePlayerRank: dicGVGVestigePlayerRank,
|
||||
gvgVestigeName: dicGVGVestigeName,
|
||||
gvgAreaPoint: dicGVGAreaPoint,
|
||||
gvgBattleRankReward: dicGVGBattleRankReward,
|
||||
@@ -1197,7 +1199,19 @@ export function getGVGVestigeLeagueRank(myLeagueRank: number) {
|
||||
for(let dic of gameData.gvgVestigeLeagueRank) {
|
||||
lastRank = dic;
|
||||
let { rankMin, rankMax } = dic;
|
||||
if(rankMin < myLeagueRank && (rankMax >= myLeagueRank || rankMax == 0)) {
|
||||
if(rankMin <= myLeagueRank && (rankMax >= myLeagueRank || rankMax == 0)) {
|
||||
return dic;
|
||||
}
|
||||
}
|
||||
return lastRank
|
||||
}
|
||||
|
||||
export function getGVGVestigePlayerRank(myRank: number) {
|
||||
let lastRank: DicGVGVestigePlayerRank;
|
||||
for(let dic of gameData.gvgVestigePlayerRank) {
|
||||
lastRank = dic;
|
||||
let { rankMin, rankMax } = dic;
|
||||
if(rankMin <= myRank && (rankMax >= myRank || rankMax == 0)) {
|
||||
return dic;
|
||||
}
|
||||
}
|
||||
@@ -1460,6 +1474,7 @@ function loadDatas() {
|
||||
loadGVGVestige();
|
||||
loadGVGVestigeRange();
|
||||
loadGVGVestigeLeagueRank();
|
||||
loadGVGVestigePlayerRank();
|
||||
loadGVGAreaPoint();
|
||||
loadGVGBattleRankReward();
|
||||
}
|
||||
|
||||
30
shared/pubUtils/dictionary/DicGVGVestigePlayerRank.ts
Normal file
30
shared/pubUtils/dictionary/DicGVGVestigePlayerRank.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
// GVG遗迹
|
||||
import { FILENAME } from '../../consts'
|
||||
import { RewardInter } from '../interface';
|
||||
import { parseGoodStr, readFileAndParse } from '../util'
|
||||
|
||||
export interface DicGVGVestigePlayerRank {
|
||||
// id
|
||||
readonly id: number;
|
||||
// 最低排名
|
||||
readonly rankMin: number;
|
||||
// 最高排名
|
||||
readonly rankMax: number;
|
||||
// 普通奖励
|
||||
readonly rankPlayerReward: RewardInter[];
|
||||
// gvg内奖励
|
||||
readonly rankPlayerLeagueReward: RewardInter[];
|
||||
}
|
||||
|
||||
export const dicGVGVestigePlayerRank: DicGVGVestigePlayerRank[] = [];
|
||||
export function loadGVGVestigePlayerRank() {
|
||||
dicGVGVestigePlayerRank.splice(0, dicGVGVestigePlayerRank.length);
|
||||
|
||||
let arr = readFileAndParse(FILENAME.DIC_GVG_VESTIGE_PLAYER_RANK);
|
||||
arr.forEach(o => {
|
||||
o.rankPlayerReward = parseGoodStr(o.rankPlayerReward);
|
||||
o.rankPlayerLeagueReward = parseGoodStr(o.rankPlayerLeagueReward);
|
||||
dicGVGVestigePlayerRank.push(o);
|
||||
});
|
||||
arr = undefined;
|
||||
}
|
||||
@@ -4,167 +4,167 @@
|
||||
"type": 1,
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"reward": "71058&20|71068&1|71067&5|40016&5000|31002&1000"
|
||||
"reward": "71061&20|71069&20|40016&1000|31002&1000|31001&1600000"
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"type": 1,
|
||||
"min": 2,
|
||||
"max": 3,
|
||||
"reward": "71058&15|71068&1|71067&4|40016&4000|31002&800"
|
||||
"reward": "71061&15|71069&18|40016&900|31002&800|31001&1500000"
|
||||
},
|
||||
{
|
||||
"id": 103,
|
||||
"type": 1,
|
||||
"min": 4,
|
||||
"max": 10,
|
||||
"reward": "71058&12|71068&1|71067&3|40016&3500|31002&700"
|
||||
"reward": "71061&12|71069&16|40016&800|31002&700|31001&1300000"
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"type": 1,
|
||||
"min": 11,
|
||||
"max": 20,
|
||||
"reward": "71058&10|71068&1|71067&3|40016&3000|31002&600"
|
||||
"reward": "71061&10|71069&12|40016&600|31002&600|31001&1000000"
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"type": 1,
|
||||
"min": 21,
|
||||
"max": 50,
|
||||
"reward": "71058&5|82003&1|71067&3|40016&2500|31002&600"
|
||||
"reward": "71061&5|71069&10|40016&500|31002&600|31001&800000"
|
||||
},
|
||||
{
|
||||
"id": 106,
|
||||
"type": 1,
|
||||
"min": 51,
|
||||
"max": 100,
|
||||
"reward": "71058&1|82003&1|71067&2|40016&2000|31002&500"
|
||||
"reward": "71069&9|40016&400|31002&500|31001&700000"
|
||||
},
|
||||
{
|
||||
"id": 107,
|
||||
"type": 1,
|
||||
"min": 101,
|
||||
"max": 200,
|
||||
"reward": "82002&8|71067&1|40016&2000|31002&500"
|
||||
"reward": "71069&6|40016&300|31002&500|31001&500000"
|
||||
},
|
||||
{
|
||||
"id": 108,
|
||||
"type": 1,
|
||||
"min": 201,
|
||||
"max": -1,
|
||||
"reward": "82002&6|71067&1|40016&2000|31002&500"
|
||||
"reward": "71069&5|40016&200|31002&500|31001&300000"
|
||||
},
|
||||
{
|
||||
"id": 201,
|
||||
"type": 2,
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"reward": "71067&5|71066&5|40005&20000|31001&3000000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 202,
|
||||
"type": 2,
|
||||
"min": 2,
|
||||
"max": 2,
|
||||
"reward": "71067&4|71066&4|40005&15000|31001&2700000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 203,
|
||||
"type": 2,
|
||||
"min": 3,
|
||||
"max": 3,
|
||||
"reward": "71067&3|71066&3|40005&14000|31001&2400000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"type": 2,
|
||||
"min": 4,
|
||||
"max": 5,
|
||||
"reward": "71067&2|71066&3|40005&12000|31001&2100000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 205,
|
||||
"type": 2,
|
||||
"min": 6,
|
||||
"max": 10,
|
||||
"reward": "71067&2|71066&2|40005&10000|31001&1800000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 206,
|
||||
"type": 2,
|
||||
"min": 11,
|
||||
"max": 20,
|
||||
"reward": "71067&2|71066&1|40005&8000|31001&1500000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 207,
|
||||
"type": 2,
|
||||
"min": 21,
|
||||
"max": 50,
|
||||
"reward": "71067&1|71066&1|40005&6000|31001&1200000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"type": 2,
|
||||
"min": 51,
|
||||
"max": -1,
|
||||
"reward": "71067&1|71066&1|40005&3000|31001&800000"
|
||||
"reward": "&"
|
||||
},
|
||||
{
|
||||
"id": 301,
|
||||
"type": 3,
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"reward": "71067&8|71066&9|17053&25|40016&3000|31002&800"
|
||||
"reward": "71069&30|17053&50|40016&2000|40005&20000|31002&800"
|
||||
},
|
||||
{
|
||||
"id": 302,
|
||||
"type": 3,
|
||||
"min": 2,
|
||||
"max": 2,
|
||||
"reward": "71067&6|71066&8|17053&20|40016&2500|31002&600"
|
||||
"reward": "71069&26|17053&40|40016&1800|40005&18000|31002&600"
|
||||
},
|
||||
{
|
||||
"id": 303,
|
||||
"type": 3,
|
||||
"min": 3,
|
||||
"max": 3,
|
||||
"reward": "71067&6|71066&7|17053&16|40016&2200|31002&500"
|
||||
"reward": "71069&24|17053&32|40016&1600|40005&16000|31002&500"
|
||||
},
|
||||
{
|
||||
"id": 304,
|
||||
"type": 3,
|
||||
"min": 4,
|
||||
"max": 5,
|
||||
"reward": "71067&5|71066&6|17053&12|40016&2000|31002&500"
|
||||
"reward": "71069&20|17053&24|40016&1200|40005&12000|31002&500"
|
||||
},
|
||||
{
|
||||
"id": 305,
|
||||
"type": 3,
|
||||
"min": 6,
|
||||
"max": 10,
|
||||
"reward": "71067&4|71066&5|17053&10|40016&1800|31002&400"
|
||||
"reward": "71069&16|17053&20|40016&1000|40005&10000|31002&400"
|
||||
},
|
||||
{
|
||||
"id": 306,
|
||||
"type": 3,
|
||||
"min": 11,
|
||||
"max": 20,
|
||||
"reward": "71067&3|71066&4|17053&10|40016&1600|31002&400"
|
||||
"reward": "71069&12|17053&20|40016&800|40005&8000|31002&400"
|
||||
},
|
||||
{
|
||||
"id": 307,
|
||||
"type": 3,
|
||||
"min": 21,
|
||||
"max": 50,
|
||||
"reward": "71067&2|71066&3|17053&8|40016&1400|31002&300"
|
||||
"reward": "71069&8|17053&16|40016&600|40005&6000|31002&300"
|
||||
},
|
||||
{
|
||||
"id": 308,
|
||||
"type": 3,
|
||||
"min": 51,
|
||||
"max": -1,
|
||||
"reward": "71067&1|71066&2|17053&6|40016&1000|31002&300"
|
||||
"reward": "71069&5|17053&12|40016&300|40005&5000|31002&300"
|
||||
}
|
||||
]
|
||||
@@ -5,7 +5,7 @@
|
||||
"foodAdd": 30,
|
||||
"mineralAdd": 30,
|
||||
"woodAdd": 30,
|
||||
"occupyReward": "71067&3|40016&6000|40005&10000"
|
||||
"occupyReward": "71061&10|71070&20|40016&6000"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
@@ -13,7 +13,7 @@
|
||||
"foodAdd": 60,
|
||||
"mineralAdd": 60,
|
||||
"woodAdd": 60,
|
||||
"occupyReward": "71067&2|40016&3000|40005&8000"
|
||||
"occupyReward": "71061&6|71070&15|40016&3000"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
@@ -21,6 +21,6 @@
|
||||
"foodAdd": 100,
|
||||
"mineralAdd": 100,
|
||||
"woodAdd": 100,
|
||||
"occupyReward": "71067&1|40016&2000|40005&5000"
|
||||
"occupyReward": "71061&3|71070&10|40016&2000"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user