update 2miner 策略修改
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.m2pool.lease.strategy.hashrate.impl;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.m2pool.lease.dto.v2.PurchasedMachineListDto;
|
||||
import com.m2pool.lease.dto.v2.RealHashrateInfoDto;
|
||||
import com.m2pool.lease.mapper.LeaseOrderMiningMapper;
|
||||
@@ -48,15 +49,50 @@ public class TwoMinersHashrateStrategy implements HashrateFetchStrategy {
|
||||
dto.setEndTime(queryEndTime);
|
||||
}
|
||||
List<RealHashrateInfoDto> recently24HourHashrate = leaseOrderMiningMapper.getRecently24HourHashrate(list, POOL_NAME);
|
||||
System.out.println("yyb-最近算力 = " + JSONUtil.toJsonPrettyStr(recently24HourHashrate));
|
||||
|
||||
//TODO 根据list中开始时间和结束时间 取recently24HourHashrate中(5分钟一个)值,如开始时间是2026-01-28 17:13:33
|
||||
// 那么取第一个值就是 2026-01-28 17:45:00点的数据,
|
||||
// 第二个就是2026-01-28 18:15:00
|
||||
// 第三个就是2026-01-28 18:45:00 以此类推。
|
||||
// 根据list中开始时间和结束时间 取recently24HourHashrate中(5分钟一个)值,如开始时间是2026-01-28 17:13:33
|
||||
// 那么取第一个值就是 2026-01-28 17:15:00点的数据,
|
||||
// 第二个就是2026-01-28 17:45:00
|
||||
// 第三个就是2026-01-28 18:15:00 以此类推。
|
||||
List<RealHashrateInfoDto> filteredHashrateList = new ArrayList<>();
|
||||
|
||||
return recently24HourHashrate;
|
||||
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.getOrderItemId().equals(dto.getOrderItemId())
|
||||
&& hashrateDto.getDatetime().isEqual(currentQueryTime)) {
|
||||
filteredHashrateList.add(hashrateDto);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 移动到下一个30分钟间隔
|
||||
currentQueryTime = currentQueryTime.plusMinutes(DATA_INTERVAL_MINUTES);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return filteredHashrateList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将时间向上取整到最近的5分钟
|
||||
* 例如:2026-01-28 17:13:33 -> 2026-01-28 17:15:00
|
||||
* 例如:2026-01-28 17:15:00 -> 2026-01-28 17:15:00
|
||||
* 例如:2026-01-28 17:16:30 -> 2026-01-28 17:20:00
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user