From 08c99b98cc47d1df1f06851df907c68f921e1218 Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Mon, 2 Feb 2026 10:52:28 +0800 Subject: [PATCH] =?UTF-8?q?update=20m2pool=20=20=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hashrate/impl/M2poolHashrateStrategy.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/m2pool/lease/strategy/hashrate/impl/M2poolHashrateStrategy.java b/src/main/java/com/m2pool/lease/strategy/hashrate/impl/M2poolHashrateStrategy.java index 51825a5..8fd7c6c 100644 --- a/src/main/java/com/m2pool/lease/strategy/hashrate/impl/M2poolHashrateStrategy.java +++ b/src/main/java/com/m2pool/lease/strategy/hashrate/impl/M2poolHashrateStrategy.java @@ -47,7 +47,39 @@ public class M2poolHashrateStrategy implements HashrateFetchStrategy { LocalDateTime queryEndTime = dto.getEndTime().plusMinutes(30); dto.setEndTime(queryEndTime); } - return leaseOrderMiningMapper.getRecently24HourHashrate(list, POOL_NAME); + List recently24HourHashrate = leaseOrderMiningMapper.getRecently24HourHashrate(list, POOL_NAME); + List filteredHashrateList = new ArrayList<>(); + + for (PurchasedMachineListDto dto : list) { + LocalDateTime startTime = dto.getStartTime(); + LocalDateTime endTime = dto.getEndTime(); + + // 将开始时间向上取整到最近的5分钟 + LocalDateTime currentQueryTime = roundUpToNext5Minutes(startTime); + + while (currentQueryTime.isBefore(endTime) || currentQueryTime.isEqual(endTime)) { + // 在recently24HourHashrate中查找匹配的记录 + for (RealHashrateInfoDto hashrateDto : recently24HourHashrate) { + if (hashrateDto.getDatetime().isEqual(currentQueryTime)) { + filteredHashrateList.add(hashrateDto); + break; + } + } + // 移动到下一个30分钟间隔 + currentQueryTime = currentQueryTime.plusMinutes(DATA_INTERVAL_MINUTES); + } + } + + return filteredHashrateList; + } + + private LocalDateTime roundUpToNext5Minutes(LocalDateTime dateTime) { + int minute = dateTime.getMinute(); + int remainder = minute % 5; + if (remainder == 0) { + return dateTime; + } + return dateTime.plusMinutes(5 - remainder).withSecond(0).withNano(0); } }