From 639049ddbe59569d4a89e8467fa0fd7af16810ea Mon Sep 17 00:00:00 2001 From: luying Date: Wed, 5 Jan 2022 16:17:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E8=A1=8C=E6=A6=9C=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=8E=92=E8=A1=8C=E6=A6=9C=E5=A5=96=E5=8A=B1=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/rankService.ts | 14 ++++++++------ shared/db/RankFirst.ts | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/game-server/app/services/rankService.ts b/game-server/app/services/rankService.ts index 583695106..ddec25271 100644 --- a/game-server/app/services/rankService.ts +++ b/game-server/app/services/rankService.ts @@ -7,7 +7,7 @@ import { HeroModel, HeroType, HeroUpdate } from "../db/Hero"; import { PVPConfigModel } from "../db/SystemConfig"; import { PvpDefenseModel } from "../db/PvpDefense"; import { gameData } from "../pubUtils/data"; -import { nowSeconds } from "../pubUtils/timeUtil"; +import { getSeconds, nowSeconds } from "../pubUtils/timeUtil"; import { getWorldChannelSid } from "./chatChannelService"; import { pinus } from "pinus"; import { RankFirstModel, RankFirstType, RankFirstUpdateParam } from "../db/RankFirst"; @@ -176,7 +176,7 @@ export class Rank { * @param hero 武将数据库 * @param isInc 得分是累加上的还是直接设置的 */ - public async setRankWithHeroInfo(roleId: string, hid: number, score: number, timestamp: number, hero?: HeroType, isInc = true) { + public async setRankWithHeroInfo(roleId: string, hid: number, score: number, timestamp: number, hero?: HeroType, isInc = false) { // 如果没有信息,更新玩家信息 for (let infoKey of [this.infoKey, ...this.extraKeys]) { await this.generParamAndSet(infoKey, { roleId, hid }, { hero }); @@ -882,11 +882,13 @@ export class Rank { // console.log(rankId, dicRank.id, oldScore, condition, newScore); if(dicRank.id == rankId && oldScore < condition && newScore >= condition) { let rankFirstRec = await RankFirstModel.createRankFirst(serverId, id, rankId, { userInfo, guildInfo }); - let roleServers = pinus.app.getServersByType('role'); - for(let server of roleServers) { - pinus.app.rpc.role.roleRemote.setRankFirst.toServer(server.id, rankFirstRec); + if(rankFirstRec && getSeconds(rankFirstRec.createdAt) == getSeconds(rankFirstRec.updatedAt)) { + let roleServers = pinus.app.getServersByType('role'); + for(let server of roleServers) { + pinus.app.rpc.role.roleRemote.setRankFirst.toServer(server.id, rankFirstRec); + } + rankFirstRecs.push({ ... rankFirstRec, status: 1}); } - rankFirstRecs.push({ ... rankFirstRec, status: 1}); } } } diff --git a/shared/db/RankFirst.ts b/shared/db/RankFirst.ts index 48ee5fbbe..708aca69a 100644 --- a/shared/db/RankFirst.ts +++ b/shared/db/RankFirst.ts @@ -23,7 +23,7 @@ guildInfo: GuildRankParam; // 军团信息 public static async createRankFirst(serverId: number, id: number, type: number, update: RankFirstUpdateParam) { - const rec: RankFirstType = await RankFirstModel.findOneAndUpdate({ serverId, id, type}, { $setOnInsert: update }, { new: true, upsert: true }).lean(); + const rec: RankFirstType = await RankFirstModel.findOneAndUpdate({ serverId, id, type, }, { $setOnInsert: update }, { new: true, upsert: true }).lean(); return rec; }