update 幸运值修改

This commit is contained in:
yyb 2025-05-12 09:37:33 +08:00
parent 87a6e09c14
commit cd57115454
4 changed files with 96 additions and 77 deletions

View File

@ -10,6 +10,7 @@ import com.m2pool.pool.vo.DateValueVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -198,4 +199,22 @@ public interface PoolMapper {
@DistributionDB @DistributionDB
public int selectPoolBlock(@Param("reduce")int reduce); public int selectPoolBlock(@Param("reduce")int reduce);
/**
* 查询一段时间内矿池平均算力
* @param coin
* @param start
* @param end
* @return
*/
DateBigDecimalDto getAvgPowerForPool(@Param("coin") String coin, @Param("start")Date start, @Param("end")Date end);
/**
* 查询一段时间段内全网平均算力
* @param coin
* @param start
* @param end
* @return
*/
DateBigDecimalDto getAvgPowerForNet(@Param("coin") String coin, @Param("start")Date start, @Param("end")Date end);
} }

View File

@ -399,10 +399,10 @@ public class DataTask {
} }
//@Scheduled(cron = "30 2,7 0,12 * * ?")
@Scheduled(cron = "30 2,5 0/12 * * ?") @Scheduled(cron = "30 2,5 0/12 * * ?")
public void NEXALuckyDataToDB(){ public void NEXALuckyDataToDB(){
log.info("nexa幸运值---时任务开始"); log.info("nexa幸运值---时任务开始");
LuckDto dto = new LuckDto(); LuckDto dto = new LuckDto();
Date end = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD)); Date end = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD));
//幸运值 = 矿池实际报块/矿池理论报块 //幸运值 = 矿池实际报块/矿池理论报块
@ -424,24 +424,27 @@ public class DataTask {
//3天矿池实际报块数 //3天矿池实际报块数
int actualBlocks = poolMapper.selectPoolBlock(3); int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值 //3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值 //7天幸运值
useAggregated = blockPerDays.size() >= 7; useAggregated = blockPerDays.size() >= 7;
blockData = blockDataContext.getBlockData("nexa",start7d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("nexa",start7d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start7d, end, blockData); throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7); actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值 //30天幸运值
useAggregated = blockPerDays.size() >= 30; useAggregated = blockPerDays.size() >= 30;
blockData = blockDataContext.getBlockData("nexa",start30d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("nexa",start30d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start30d, end, blockData); throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30); actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值 //90天幸运值
useAggregated = blockPerDays.size() >= 90; useAggregated = blockPerDays.size() >= 90;
@ -449,12 +452,14 @@ public class DataTask {
blockData = blockDataContext.getBlockData("nexa",start90d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("nexa",start90d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start90d, end, blockData); throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90); actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("NEXALuck"); redisService.deleteObject("NEXALuck");
redisService.setCacheObject("NEXALuck",dto); redisService.setCacheObject("NEXALuck",dto);
log.info("nexa幸运值入库完成"); log.info("nexa幸运值入库完成---幸运值3天{},幸运值7天{},幸运值30天{},幸运值90天{},",
dto.getLuck3d(),dto.getLuck7d(),dto.getLuck30d(),dto.getLuck90d());
} }
@ -468,47 +473,17 @@ public class DataTask {
*/ */
public BigDecimal getTheoreticalBlocks(String coin,int hRate,Date start,Date end,BlockTimeAndNumberDto blockData){ public BigDecimal getTheoreticalBlocks(String coin,int hRate,Date start,Date end,BlockTimeAndNumberDto blockData){
//得到每一个小时定时任务存储到数据库的全网算力 //查询一段时间内矿池平均算力
List<DateBigDecimalDto> netPowerList = poolMapper.getDailyNetPower(coin); DateBigDecimalDto avgPowerForPool = poolMapper.getAvgPowerForPool(coin, start, end);
if(netPowerList.isEmpty()){ //查询一段时间段内全网平均算力
return BigDecimal.ZERO; DateBigDecimalDto avgPowerForNet = poolMapper.getAvgPowerForNet(coin, start, end);
}
//得时间段到矿池的算力
List<DateBigDecimalDto> poolPowerList = poolMapper.getDailyPoolPower(coin);
//A:矿池N天总算力
//计算矿池每日实际应出块数 block中算力单位是H/s
BigDecimal pPow3d = poolPowerList.stream()
.filter(e -> (e.getPDate().before(end)))
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start)))
.map(DateBigDecimalDto::getValue).reduce(BigDecimal.ZERO, BigDecimal::add)
.multiply(BigDecimal.valueOf(hRate));
//作为A的除数得到N天内的矿池平均算力
long pDay3d = poolPowerList.stream()
.filter(e -> (e.getPDate().before(end)))
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start))).count();
//B:N天全网算力 if(avgPowerForNet.getValue().equals(BigDecimal.ZERO)){
BigDecimal nPow3d = netPowerList.stream()
.filter(e -> (e.getPDate().before(end)))
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start)))
.map(DateBigDecimalDto::getValue).reduce(BigDecimal.ZERO, BigDecimal::add);
//作为B的除数得到3天内的全网平均算力
long nDay3d = netPowerList.stream()
.filter(e -> (e.getPDate().before(end)))
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start))).count();
if(pDay3d == 0 || nDay3d == 0){
return BigDecimal.ZERO; return BigDecimal.ZERO;
} }
return pPow3d return avgPowerForPool.getValue().multiply(BigDecimal.valueOf(hRate)).divide(avgPowerForNet.getValue(),8, RoundingMode.HALF_UP)
.divide(BigDecimal.valueOf(pDay3d),8, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(blockData.getHeight())).setScale(8, RoundingMode.HALF_UP);
.divide(nPow3d,8, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(nDay3d))
.multiply(BigDecimal.valueOf(blockData.getHeight()))
.multiply(blockData.getDateLength())
.setScale(8, RoundingMode.HALF_UP);
} }
@ -885,37 +860,42 @@ public class DataTask {
//3天矿池实际报块数 //3天矿池实际报块数
int actualBlocks = poolMapper.selectPoolBlock(3); int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值 //3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值 //7天幸运值
useAggregated = blockPerDays.size() >= 7; useAggregated = blockPerDays.size() >= 7;
blockData = blockDataContext.getBlockData("grs",start7d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("grs",start7d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start7d, end, blockData); throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7); actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值 //30天幸运值
useAggregated = blockPerDays.size() >= 30; useAggregated = blockPerDays.size() >= 30;
blockData = blockDataContext.getBlockData("grs",start30d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("grs",start30d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start30d, end, blockData); throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30); actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值 //90天幸运值
useAggregated = blockPerDays.size() >= 90; useAggregated = blockPerDays.size() >= 90;
blockData = blockDataContext.getBlockData("grs",start90d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("grs",start90d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start90d, end, blockData); throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90); actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("GRSLuck"); redisService.deleteObject("GRSLuck");
redisService.setCacheObject("GRSLuck",dto); redisService.setCacheObject("GRSLuck",dto);
log.info("grs幸运值入库完成"); log.info("grs幸运值入库完成---幸运值3天{},幸运值7天{},幸运值30天{},幸运值90天{},",
dto.getLuck3d(),dto.getLuck7d(),dto.getLuck30d(),dto.getLuck90d());;
} }
@Scheduled(cron = "12 1,3,12,31,33,42 * * * ?") @Scheduled(cron = "12 1,3,12,31,33,42 * * * ?")
@ -1268,6 +1248,7 @@ public class DataTask {
//@Scheduled(cron = "30 2,7 0,12 * * ?") //@Scheduled(cron = "30 2,7 0,12 * * ?")
@Scheduled(cron = "32 2,5 0/12 * * ?") @Scheduled(cron = "32 2,5 0/12 * * ?")
public void MONALuckyDataToDB(){ public void MONALuckyDataToDB(){
log.info("MONA幸运值---定时任务开始");
LuckDto dto = new LuckDto(); LuckDto dto = new LuckDto();
Date end = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD)); Date end = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD));
//幸运值 = 矿池实际报块/矿池理论报块 //幸运值 = 矿池实际报块/矿池理论报块
@ -1293,24 +1274,27 @@ public class DataTask {
//3天矿池实际报块数 //3天矿池实际报块数
int actualBlocks = poolMapper.selectPoolBlock(3); int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值 //3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值 //7天幸运值
useAggregated = blockPerDays.size() >= 7; useAggregated = blockPerDays.size() >= 7;
blockData = blockDataContext.getBlockData("mona",start7d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("mona",start7d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start7d, end, blockData); throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7); actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值 //30天幸运值
useAggregated = blockPerDays.size() >= 30; useAggregated = blockPerDays.size() >= 30;
blockData = blockDataContext.getBlockData("mona",start30d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("mona",start30d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.MONA.gethRate(),start30d, end, blockData); throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.MONA.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30); actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值 //90天幸运值
useAggregated = blockPerDays.size() >= 90; useAggregated = blockPerDays.size() >= 90;
@ -1318,10 +1302,13 @@ public class DataTask {
blockData = blockDataContext.getBlockData("mona",start90d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("mona",start90d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start90d, end, blockData); throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90); actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("MONALuck"); redisService.deleteObject("MONALuck");
redisService.setCacheObject("MONALuck",dto); redisService.setCacheObject("MONALuck",dto);
log.info("MONA幸运值入库完成---幸运值3天{},幸运值7天{},幸运值30天{},幸运值90天{},",
dto.getLuck3d(),dto.getLuck7d(),dto.getLuck30d(),dto.getLuck90d());
} }
@Scheduled(cron = "14 1,3,9,31,33,39 * * * ?") @Scheduled(cron = "14 1,3,9,31,33,39 * * * ?")
@ -3390,7 +3377,7 @@ public class DataTask {
//@Scheduled(cron = "30 2,7 0,12 * * ?") //@Scheduled(cron = "30 2,7 0,12 * * ?")
@Scheduled(cron = "39 2,5 0/12 * * ?") @Scheduled(cron = "39 2,5 0/12 * * ?")
public void RXDLuckyDataToDB(){ public void RXDLuckyDataToDB(){
log.info("rxd幸运值---定时任务开"); log.info("rxd幸运值---定时任务开");
LuckDto dto = new LuckDto(); LuckDto dto = new LuckDto();
Date end = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD)); Date end = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD));
//幸运值 = 矿池实际报块/矿池理论报块 //幸运值 = 矿池实际报块/矿池理论报块
@ -3416,24 +3403,27 @@ public class DataTask {
//3天矿池实际报块数 //3天矿池实际报块数
int actualBlocks = poolMapper.selectPoolBlock(3); int actualBlocks = poolMapper.selectPoolBlock(3);
//3天幸运值 //3天幸运值
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck3d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//7天幸运值 //7天幸运值
useAggregated = blockPerDays.size() >= 7; useAggregated = blockPerDays.size() >= 7;
blockData = blockDataContext.getBlockData("rxd",start7d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("rxd",start7d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start7d, end, blockData); throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start7d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(7); actualBlocks = poolMapper.selectPoolBlock(7);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//30天幸运值 //30天幸运值
useAggregated = blockPerDays.size() >= 30; useAggregated = blockPerDays.size() >= 30;
blockData = blockDataContext.getBlockData("rxd",start30d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("rxd",start30d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start30d, end, blockData); throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start30d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(30); actualBlocks = poolMapper.selectPoolBlock(30);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
//90天幸运值 //90天幸运值
useAggregated = blockPerDays.size() >= 90; useAggregated = blockPerDays.size() >= 90;
@ -3441,11 +3431,13 @@ public class DataTask {
blockData = blockDataContext.getBlockData("rxd",start90d, end,blockPerDays, useAggregated); blockData = blockDataContext.getBlockData("rxd",start90d, end,blockPerDays, useAggregated);
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start90d, end, blockData); throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start90d, end, blockData);
actualBlocks = poolMapper.selectPoolBlock(90); actualBlocks = poolMapper.selectPoolBlock(90);
if(!BigDecimal.ZERO.equals(throreticalBlocks)){
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue()); dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
}
redisService.deleteObject("RXDLuck"); redisService.deleteObject("RXDLuck");
redisService.setCacheObject("RXDLuck",dto); redisService.setCacheObject("RXDLuck",dto);
log.info("rxd幸运值入库完成"); log.info("rxd幸运值入库完成---幸运值3天{},幸运值7天{},幸运值30天{},幸运值90天{},",
dto.getLuck3d(),dto.getLuck7d(),dto.getLuck30d(),dto.getLuck90d());
} }
@Scheduled(cron = "21 1,3,13,31,33,43 * * * ?") @Scheduled(cron = "21 1,3,13,31,33,43 * * * ?")

View File

@ -509,6 +509,7 @@ public class NodeTask {
try { try {
BlockInfo block = NodeRpc.getBlock(blockName); BlockInfo block = NodeRpc.getBlock(blockName);
poolMapper.insertNetBlock(tableName, block.getHeight()); poolMapper.insertNetBlock(tableName, block.getHeight());
log.info("插入币种 {} ,插入的最新高度为{}", blockName,block.getHeight());
return; return;
} catch (Exception e) { } catch (Exception e) {
retryCount++; retryCount++;

View File

@ -883,7 +883,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="insertNetBlock"> <insert id="insertNetBlock">
insert into ${tableName} (`date`,`height`) values(#{date},#{height}) ON DUPLICATE KEY UPDATE `height` = VALUES(`height`) insert into ${tableName} (`height`) values(#{height}) ON DUPLICATE KEY UPDATE `height` = VALUES(`height`)
</insert> </insert>
<select id="selectNetBlock" resultType="com.m2pool.pool.dto.BlockInfoDto"> <select id="selectNetBlock" resultType="com.m2pool.pool.dto.BlockInfoDto">
SELECT `date`,height FROM ${tableName} WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL 90 DAY) ORDER BY `date` DESC SELECT `date`,height FROM ${tableName} WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL 90 DAY) ORDER BY `date` DESC
@ -891,7 +891,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectPoolBlock" resultType="java.lang.Integer"> <select id="selectPoolBlock" resultType="java.lang.Integer">
SELECT count(*) FROM nexa_blkreportprofitv2 WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL #{reduce} DAY) SELECT count(*) FROM nexa_blkreportprofitv2 WHERE `date` >= DATE_SUB(CURDATE(),INTERVAL #{reduce} DAY)
</select> </select>
<select id="getAvgPowerForPool" resultType="com.m2pool.pool.dto.DateBigDecimalDto">
select avg(mhs) `value` from ${coin}_pool_30m
where `date` >= #{start} and `date` <![CDATA[ <= ]]> #{end}
</select>
<select id="getAvgPowerForNet" resultType="com.m2pool.pool.dto.DateBigDecimalDto">
select avg(`value`) `value` from ${coin}_net_power
where `date` >= #{start} and `date` <![CDATA[ <= ]]> #{end}
</select>
</mapper> </mapper>