From 84b7334df1bdf43842cdf6e1de188797df1ddfa5 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 15 Oct 2021 16:03:28 +0800 Subject: [PATCH] fix --- .../app/servers/guild/handler/cityActivityHandler.ts | 6 +++--- .../app/servers/guild/handler/gateActivityHandler.ts | 6 +++--- game-server/app/services/guildActivityService.ts | 8 ++++---- game-server/app/services/rankService.ts | 2 +- game-server/app/services/timeTaskService.ts | 12 ++++++++---- shared/db/GuildActivityRec.ts | 2 +- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/game-server/app/servers/guild/handler/cityActivityHandler.ts b/game-server/app/servers/guild/handler/cityActivityHandler.ts index f97373c1f..4af2fb344 100644 --- a/game-server/app/servers/guild/handler/cityActivityHandler.ts +++ b/game-server/app/servers/guild/handler/cityActivityHandler.ts @@ -217,7 +217,7 @@ export class CityActivityHandler { const sid = session.get('sid'); let { cityId, code, damage, hid, round } = msg; - if (!damage || damage < 0) return resResult(STATUS.WRONG_PARMS); + if (damage == undefined || damage < 0) return resResult(STATUS.WRONG_PARMS); const dicCity = gameData.cityActivity.get(cityId); let obj = getCityActivityObj(); @@ -234,7 +234,7 @@ export class CityActivityHandler { let tomorrow = getTimeFun().getAfterDayWithHour(); // 更新redis数据 - let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }, true); let myScore = await myR.setRankWithRoleInfo(roleId, damage, Date.now(), null, true); await myR.setExpire(tomorrow); @@ -285,7 +285,7 @@ export class CityActivityHandler { // 发放活跃 await addActive(roleId, serverId, GUILD_POINT_WAYS.ACTIVITY); //获得活跃值 // 返回当前军团总军功 - let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }, true); let myScore = await myR.getMyScore({ roleId }); let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId }, true); let guildScore = await r.getMyScore({ guildCode }); diff --git a/game-server/app/servers/guild/handler/gateActivityHandler.ts b/game-server/app/servers/guild/handler/gateActivityHandler.ts index 51adb6ed6..a2a63451b 100644 --- a/game-server/app/servers/guild/handler/gateActivityHandler.ts +++ b/game-server/app/servers/guild/handler/gateActivityHandler.ts @@ -140,7 +140,7 @@ export class GateActivityHandler { let tomorrow = getTimeFun().getAfterDayWithHour(); // 更新redis数据 - let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, false); + let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); let myScore = await myR.setRankWithRoleInfo(roleId, score, Date.now(), null, true); await myR.setExpire(tomorrow); @@ -186,7 +186,7 @@ export class GateActivityHandler { pinus.app.rpc.chat.guildRemote.pushGateHp.toServer(chatSid, guildCode, gateHp); // 返回当前军团总军功 - let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); let myScore = await myR.getMyScore({ roleId }); let r = new Rank(REDIS_KEY.GATE_ACTIVITY, { serverId }, true); let guildScore = await r.getMyScore({ guildCode }); @@ -231,7 +231,7 @@ export class GateActivityHandler { } } - let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); let r = new Rank(REDIS_KEY.GATE_ACTIVITY, { serverId }, true); if (isSuccess) { let score = gameData.gateActivityPoint.get(GET_POINT_WAYS.DEFENSE_SUCCESS); diff --git a/game-server/app/services/guildActivityService.ts b/game-server/app/services/guildActivityService.ts index 2e7698353..7ed3fe132 100644 --- a/game-server/app/services/guildActivityService.ts +++ b/game-server/app/services/guildActivityService.ts @@ -185,7 +185,7 @@ export async function getGateActivityRank(guildCode: string, serverId: number, r myGuildRank = await r.generMyRankWithGuild(guildCode, 0, 0); } - let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); myR.setGenerFieldsFun(generGuildActivityMemberRankField); let { ranks: memberRank, myRank: myMemberRank } = await myR.getRankListWithMyRank({ roleId }); if (roleName && !myMemberRank) { @@ -204,7 +204,7 @@ export async function getCityActivityRank(guildCode: string, serverId: number, c myGuildRank = await r.generMyRankWithGuild(guildCode, 0, 0); } - let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }, true); myR.setGenerFieldsFun(generGuildActivityMemberRankField); let { ranks: memberRank, myRank: myMemberRank } = await myR.getRankListWithMyRank({ roleId }); if (roleName && !myMemberRank) { @@ -403,7 +403,7 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb // 结算功勋等奖励 let dic = gameData.guildActivity.get(GUILD_ACTIVITY_TYPE.GATE_ACTIVITY); - let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); let ranks = await myR.getRankByRange(); for (let { rank, roleId, num: myScore } of ranks) { @@ -468,7 +468,7 @@ export async function cityActivitySettleReward(cityId: number, serverId: number) await genAuction(guildCode, AUCTION_SOURCE.CITY, rec.code, serverId, rewards); let dic = gameData.guildActivity.get(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY); - let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }); + let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); let ranks = await myR.getRankByRange(); let userRank = 0; for (let { rank, roleId, num: myScore } of ranks) { diff --git a/game-server/app/services/rankService.ts b/game-server/app/services/rankService.ts index f7ec6a545..73dd3e2aa 100644 --- a/game-server/app/services/rankService.ts +++ b/game-server/app/services/rankService.ts @@ -400,7 +400,7 @@ export class Rank { let key = this.keyName.getNameWithPlus(config.name); if(config.isTimestamp) score = this.handleTimestamp(score, config.len); if(config.reverse) { - let pow = Math.pow(10, config.len + 1); + let pow = Math.pow(10, config.len); score = pow - 1 - score; } await redisClient().zaddAsync(key, score, this.composeFields(this.key, myId)); diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index 380d37491..7fab01c76 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -348,6 +348,14 @@ export async function guildActivitySchedule() { if (guildActStartJobId) { guildActStartJobId.cancel(); } + if (guildActSecondsJobId) { + guildActSecondsJobId.cancel(); + guildActSecondsJobId = undefined; + } + if (guildActEndJobId) { + guildActEndJobId.cancel(); + guildActEndJobId = undefined; + } let dicGuildActivity = getTodayGuildActivity(); await delGuildActivityRank(dicGuildActivity.id); @@ -367,10 +375,6 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) { if (!dicGuildActivity) dicGuildActivity = getTodayGuildActivity(); if (!dicGuildActivity) return; - if (guildActSecondsJobId || guildActEndJobId) { - return false - } - console.log('********', dicGuildActivity.id, Date.now() + dicGuildActivity.duringTime * 1000) let servers = await getAllServers(); // 玩家serverId列表 if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) { diff --git a/shared/db/GuildActivityRec.ts b/shared/db/GuildActivityRec.ts index 1a054abae..5a1596f14 100644 --- a/shared/db/GuildActivityRec.ts +++ b/shared/db/GuildActivityRec.ts @@ -71,7 +71,7 @@ export default class GuildActivityRecord extends BaseModel { let update = Object.assign(docs, { code, guildCode, serverId, aid, createdAt: new Date() }); if(events) update = Object.assign(update, { events }); let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate( - { guildCode, createdAt: { $gte: today }, status: 1}, + { aid, guildCode, createdAt: { $gte: today }, status: 1}, { $setOnInsert: update }, {new: true, upsert: true}).lean(); return rec;