From fb82166f646693aebc70e510e70699daa5887033 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 11 Aug 2021 16:30:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AA=E6=9C=89=E5=91=A8=E4=B8=80=E6=89=8D?= =?UTF-8?q?=E9=87=8D=E7=BD=AE=E5=91=A8=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/rank.controller.ts | 4 ++-- src/schedule/rank.schedule.ts | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/controllers/rank.controller.ts b/src/controllers/rank.controller.ts index bd60c89..4a08bd6 100644 --- a/src/controllers/rank.controller.ts +++ b/src/controllers/rank.controller.ts @@ -93,8 +93,8 @@ class RankController extends BaseController { @role('anon') @router('post /api/svr/games/rank/init') async update(req: any) { - let { gameId, channelId } = req.params - await new RankSchedule().initRankData({ gameId, channelId }) + let { gameId, channelId, refresh } = req.params + await new RankSchedule().initRankData({ gameId, channelId, refresh }) return {} } } diff --git a/src/schedule/rank.schedule.ts b/src/schedule/rank.schedule.ts index e98d550..7409e47 100644 --- a/src/schedule/rank.schedule.ts +++ b/src/schedule/rank.schedule.ts @@ -4,6 +4,7 @@ import logger from '../logger/logger' import { RankUser } from '../models/RankUser' import { delRankList, rankKey, updateRank } from '../services/rank.svr' import { fetchRankCfg, randomUsers } from '../services/jcfw.svr' +import { getThisWeekData } from '../utils/time.util' // 每天晚上1点更新 const WORLD_RANK_TASK = '1 0 1 * * *' @@ -16,15 +17,18 @@ export default class RankSchedule { * 移除n个, 同时补充n个机器人 * 补充的n个机器人更新至总榜 */ - async initRankData({ gameId, channelId }) { + async initRankData({ gameId, channelId, refresh }: { gameId: string; channelId: string; refresh?: boolean }) { let oldList = await RankUser.find({ gameId, channelId, isBot: true, type: 1 }) + const { startDay } = getThisWeekData() + const today = new Date().format('yyyy-M-d') + const needRest = today === startDay || refresh if (oldList.length > 0) { - const removeCount = Math.random2(5, 10) | 0 + const maxRemoveCount = needRest ? Math.random2(5, 10) | 0 : Math.random2(2, 6) | 0 let deleteCount = 0 let tmpList = [] for (let i = 0, l = oldList.length; i < l; i++) { let record = oldList[i] - if (Math.random() > 0.5 && deleteCount <= removeCount) { + if (Math.random() > 0.5 && deleteCount < maxRemoveCount) { record.type = 0 await record.save() deleteCount++ @@ -50,7 +54,10 @@ export default class RankSchedule { } let weekKey = rankKey(gameId, channelId, false) - await delRankList(weekKey) + if (needRest) { + await delRankList(weekKey) + } + let totalKey = rankKey(gameId, channelId, true) const { min, max, valType } = await fetchRankCfg(gameId, channelId) for (let record of oldList) {