From 6ed6c2fc70cd069a84e8574b841323578ecad09c Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Mon, 13 Oct 2025 13:33:04 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=9F=BF=E6=9C=BA=E7=A6=BB=E7=BA=BF?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E5=8F=91=E9=80=81=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/m2pool/pool/dto/PoolInfoDto.java | 2 +- .../com/m2pool/pool/mapper/PoolMapper.java | 2 + .../m2pool/pool/mapper/UserAccountMapper.java | 6 + .../pool/service/impl/PoolServiceImpl.java | 4 + .../service/impl/UserMinerServiceImpl.java | 7 + .../com/m2pool/pool/task/NeaxPriceTask.java | 2 +- .../m2pool/pool/task/OffLineNoticeTask.java | 256 +++++++++++------- .../main/resources/mapper/pool/PoolMapper.xml | 15 + .../mapper/pool/UserAccountMapper.xml | 13 +- 9 files changed, 213 insertions(+), 94 deletions(-) diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PoolInfoDto.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PoolInfoDto.java index 9603fec..74d44a0 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PoolInfoDto.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PoolInfoDto.java @@ -44,6 +44,6 @@ public class PoolInfoDto implements Serializable { private String model ="PPLNS"; /** 费率% 默认为1%**/ - private int fee = 1; + private double fee = 1; } diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java index 2656573..c17a287 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java @@ -288,4 +288,6 @@ public interface PoolMapper { int deleteUsers30m(@Param("coin") String coin,@Param("date") String date); + List getEmailByUsers(@Param("list") List list,@Param("coin")String coin ); + } diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/UserAccountMapper.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/UserAccountMapper.java index 32fffca..81ce594 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/UserAccountMapper.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/UserAccountMapper.java @@ -102,4 +102,10 @@ public interface UserAccountMapper { public boolean batchDeleteAPIByIdsAndUser(@Param("ids") List ids,@Param("user") String user); + /** + * 删除挖矿账户对应的只读页面 + * @param list + * @return + */ + int deleteBatchReadOnlyPage(@Param("list")List list); } diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java index ded4c36..3b7272c 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java @@ -116,6 +116,10 @@ public class PoolServiceImpl implements PoolService { dto.setPrice(price.toEngineeringString()+ " USD"); } } + if("sha3x".equals(pool.getCoin())){ + dto.setFee(0.4); + } + //从enums中拿币种名、页面显示名、币种对应算法 dto.setCoin(pool.getCoin()); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java index 55adc20..288f598 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java @@ -267,17 +267,20 @@ public class UserMinerServiceImpl implements UserMinserService { if(idStrs.length > 20){ return AjaxResult.error("最多同时删除20个账号"); } + List list = new ArrayList<>(); //校验挖矿账户名是否已存在 /** 判断是否已绑定过该挖矿账号 */ Map map =new HashMap<>(); for(String id : idStrs){ Long maId = Convert.toLong(id,0L); UserAccountDto dto = uaMapper.getAccountByUserAccountId(username, maId); + //删除挖矿账户对应的只读页面 if(StringUtils.isNull(dto)){ return AjaxResult.error("挖矿账号异常:未找到id:"+maId+"对应的账户"); } map.put(id,maId); + list.add(dto); } //查询是否开启双重验证 @@ -293,11 +296,15 @@ public class UserMinerServiceImpl implements UserMinserService { List idsList = map.values().stream().collect(Collectors.toList()); + + + //删除用户挖矿账号 逻辑删除 if(uaMapper.batchDelAccount(idsList)){ //todo 修改钱包表钱包数据状态、并 //todo 日志记录 + uaMapper.deleteBatchReadOnlyPage(list); return AjaxResult.success("账号删除成功"); }else { return AjaxResult.error("数据库执行异常"); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java index 011318b..0068986 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java @@ -493,7 +493,7 @@ public class NeaxPriceTask { //xtm 不通过coinmarketcap 获取币价 BlockInfo sha3xBlockInfoForXml = getSha3xBlockInfoForXml(); if (StringUtils.isNotNull(sha3xBlockInfoForXml)){ - map.put("sha3x",sha3xBlockInfoForXml.getPrice()); + map.put("sha3x",sha3xBlockInfoForXml.getPrice().divide(BigDecimal.valueOf(7.1),8,BigDecimal.ROUND_HALF_UP)); } return map; diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/OffLineNoticeTask.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/OffLineNoticeTask.java index c99b24d..1c683e5 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/OffLineNoticeTask.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/OffLineNoticeTask.java @@ -70,56 +70,60 @@ public class OffLineNoticeTask { System.out.println("查询到离线矿机结果 "+list.size()+"条"); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来? - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.NEXA.getCoin()); - System.out.println("查询到离线通知列表"+nmcList); + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"nexa"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来? (这张表不再使用) + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.NEXA.getCoin()); + //System.out.println("查询到离线通知列表"+nmcList); + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 TODO 这里也没看到redis里面存储的位置 + Map map = redisService.getCacheMap("NEXA_USERS_OFFLINE"); - if(StringUtils.isNotEmpty(userEmails)){ - //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 TODO 这里也没看到redis里面存储的位置 - Map map = redisService.getCacheMap("NEXA_USERS_OFFLINE"); - list.stream().forEach(e -> { - long lastOff = 0; - if(StringUtils.isNotNull(map)){ - lastOff =map.getOrDefault(e.getUser(),0L); - } - if(e.getOffline() > lastOff){ - //对比redis中该挖矿账户上一次离线矿机数 上一次不存在则设上一次离线数为0来进行比较 - //仅当本次离线数大于上次离线数时才通知 - //执行通知 - List emails = userEmails.getOrDefault(e.getUser(), null); - if(StringUtils.isNotNull(emails)){ - String text = "您的"+Pools.NEXA.getCoin()+"下挖矿账户: "+e.getUser()+"有矿机离线!离线矿机列表如下:\n" + - e.getMiners() + " \n"+ - "若您的矿机是因异常断开,请及时处理!"; - emails.stream().forEach(email ->{ - System.out.println("用户"+e.getUser()+"矿机离线通知到"+email); - EmailEntity entity = new EmailEntity(); - entity.setSubject("[M2Pool] 矿机离线提示"); - entity.setEmail(email); - entity.setText(text); - mailService.sendTextMail(entity); - }); - }else { - System.out.println("该用户未添加离线通知 :"+userEmails.toString()); - } + list.stream().forEach(e -> { + long lastOff = 0; + if(StringUtils.isNotNull(map)){ + lastOff = map.getOrDefault(e.getUser(),0L); + } + if(e.getOffline() > lastOff){ + //对比redis中该挖矿账户上一次离线矿机数 上一次不存在则设上一次离线数为0来进行比较 + //仅当本次离线数大于上次离线数时才通知 + //执行通知 + List emails = userEmails.getOrDefault(e.getUser(), null); + if(StringUtils.isNotNull(emails)){ + String text = "您的"+Pools.NEXA.getCoin()+"下挖矿账户: "+e.getUser()+"有矿机离线!离线矿机列表如下:\n" + + e.getMiners() + " \n"+ + "若您的矿机是因异常断开,请及时处理!"; + emails.stream().forEach(email ->{ + System.out.println("用户"+e.getUser()+"矿机离线通知到"+email); + EmailEntity entity = new EmailEntity(); + entity.setSubject("[M2Pool] 矿机离线提示"); + entity.setEmail(email); + entity.setText(text); + mailService.sendTextMail(entity); + }); + redisService.setCacheMapValue("NEXA_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { - //不满足通知条件 不通知 - System.out.println("挖矿账户"+e.getUser()+"本次无需通知,本次离线为"+e.getOffline()+",上次离线数"+ - map.getOrDefault(e.getUser(),0L)); + System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } - }); - }else { - System.out.println("未获取到nexa下相关的离线告警订阅信息"); - } + + }else { + //不满足通知条件 不通知 + System.out.println("挖矿账户"+e.getUser()+"本次无需通知,本次离线为"+e.getOffline()+",上次离线数"+ + map.getOrDefault(e.getUser(),0L)); + } + }); + } @@ -154,21 +158,27 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.GRS.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.NEXA.getCoin()); - System.out.println("查询到离线通知列表"+nmcList); + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"grs"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.NEXA.getCoin()); + //System.out.println("查询到离线通知列表"+nmcList); + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 - Map map = redisService.getCacheMap("NEXA_USERS_OFFLINE"); + Map map = redisService.getCacheMap("GRS_USERS_OFFLINE"); list.stream().forEach(e -> { long lastOff = 0; if(StringUtils.isNotNull(map)){ @@ -191,6 +201,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("GRS_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -233,17 +244,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.MONA.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.MONA.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"mona"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.MONA.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -271,6 +288,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("MONA_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -313,17 +331,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.DGBO.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.DGBO.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"dgbo"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.DGBO.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -350,6 +374,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("DGBO_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -392,17 +417,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.DGBQ.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.DGBQ.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"dgbq"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.DGBQ.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -429,6 +460,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("DGBQ_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -471,17 +503,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.DGBS.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.DGBS.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"dgbs"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.DGBS.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -508,6 +546,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("DGBS_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -550,17 +589,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.RXD.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.RXD.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"rxd"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.RXD.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -587,6 +632,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("RXD_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -629,17 +675,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.ALPH.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.ALPH.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"alph"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.ALPH.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -666,6 +718,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("ALPH_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -708,17 +761,23 @@ public class OffLineNoticeTask { List list = poolMapper.getOfflineList(Pools.ENX.getMhs() + "30m", nowStr); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.ENX.getCoin()); - + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"enx"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.ENX.getCoin()); + // + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 @@ -745,6 +804,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("ENX_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -790,17 +850,23 @@ public class OffLineNoticeTask { System.out.println("查询到离线矿机结果 "+list.size()+"条"); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来? - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.MONERO.getCoin()); - System.out.println("查询到离线通知列表"+nmcList); + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"monero"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来? + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.MONERO.getCoin()); + //System.out.println("查询到离线通知列表"+nmcList); + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 TODO 这里也没看到redis里面存储的位置 @@ -827,6 +893,7 @@ public class OffLineNoticeTask { entity.setText(text); mailService.sendTextMail(entity); }); + redisService.setCacheMapValue("MONERO_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } @@ -874,17 +941,23 @@ public class OffLineNoticeTask { System.out.println("查询到离线矿机结果 "+list.size()+"条"); if(StringUtils.isNotEmpty(list)){ - //list不为空才处理 - - //先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来? - List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.SHA3X.getCoin()); - System.out.println("查询到离线通知列表"+nmcList); + //获取user 对应的邮箱 + List nmcList = poolMapper.getEmailByUsers(list,"sha3x"); Map> userEmails = nmcList.stream(). collect(Collectors.groupingBy( NoticeMinerCoinListDto::getMiner, Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) )); + //先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来? + //List nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.SHA3X.getCoin()); + //System.out.println("查询到离线通知列表"+nmcList); + //Map> userEmails = nmcList.stream(). + // collect(Collectors.groupingBy( + // NoticeMinerCoinListDto::getMiner, + // Collectors.mapping(NoticeMinerCoinListDto::getEmail, Collectors.toList()) + // )); + if(StringUtils.isNotEmpty(userEmails)){ //获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 TODO 这里也没看到redis里面存储的位置 @@ -914,6 +987,7 @@ public class OffLineNoticeTask { }else { System.out.println("该用户未添加离线通知 :"+userEmails.toString()); } + redisService.setCacheMapValue("SHA3X_USERS_OFFLINE",e.getUser(),e.getOffline()); }else { //不满足通知条件 不通知 diff --git a/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml b/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml index 172a6a5..b0d8fe3 100644 --- a/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml +++ b/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml @@ -1018,6 +1018,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select height,difficulty,power,reward,fees,profit from sha3x_block_info order by id desc limit 1; + insert into sha3x_block_info (height,difficulty,power,reward,fees,profit,price) values(#{blockInfo.height} @@ -1033,6 +1034,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from ${coin}_mhs30m where `date` = #{date} delete from ${coin}_pool_30m where `date` = #{date} delete from ${coin}_users_30m where `date` = #{date} + + + diff --git a/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/UserAccountMapper.xml b/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/UserAccountMapper.xml index 148001f..fd70370 100644 --- a/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/UserAccountMapper.xml +++ b/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/UserAccountMapper.xml @@ -131,6 +131,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and `user` = #{user} + + DELETE FROM user_page_info + WHERE ( + + `user` = #{item.user} + AND account = #{item.account} + AND coin = #{item.coin} + + ) + +