first commit

This commit is contained in:
Ray
2026-02-19 03:37:37 +08:00
commit ccfd8c79a4
2813 changed files with 453657 additions and 0 deletions

View File

@@ -0,0 +1,149 @@
package project.monitor.internal;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import kernel.util.ThreadUtils;
//import cn.hutool.core.thread.ThreadUtil;
import project.monitor.AdminAutoMonitorIndexService;
import project.monitor.AutoMonitorAddressConfigService;
import project.monitor.bonus.AutoMonitorSettleAddressConfigService;
import project.monitor.bonus.model.SettleAddressConfig;
import project.monitor.erc20.service.Erc20RemoteService;
import project.monitor.etherscan.EtheBalance;
import project.monitor.etherscan.EtherscanRemoteService;
import project.monitor.model.AutoMonitorAddressConfig;
public class AdminAutoMonitorIndexServiceImpl extends HibernateDaoSupport implements AdminAutoMonitorIndexService {
private static final Log logger = LogFactory.getLog(AdminAutoMonitorIndexServiceImpl.class);
private EtherscanRemoteService etherscanRemoteService;
private Erc20RemoteService erc20RemoteService;
private AutoMonitorAddressConfigService autoMonitorAddressConfigService;
private AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService;
/**
* 间隔(毫秒)
*/
private long interval = 60*1000*5;
private volatile Date lastTime = new Date();
/**
* key地址
* valueeth余额
*/
private Map<String,Double> ethMap = new ConcurrentHashMap<String,Double>();
/**
* key地址
* valueusdt余额
*/
private Map<String,Double> usdtMap = new ConcurrentHashMap<String,Double>();
private Double collectAddressUsdt;
// public void init() {
// try {
// //spring初始化时未注册zk通过访问db直接构建
//// Map<String, AutoMonitorAddressConfig> cacheAllMap = autoMonitorAddressConfigService.cacheAllMap();
//// Set<String> keySet2 = cacheAllMap.keySet();
// Set<String> keySet = new HashSet<String>();
// List<AutoMonitorAddressConfig> list = getHibernateTemplate().find("FROM AutoMonitorAddressConfig ");
// for (AutoMonitorAddressConfig entity : list) {
// keySet.add(entity.getAddress());
// }
// SettleAddressConfig findDefault = autoMonitorSettleAddressConfigService.findDefault();
// if(findDefault!=null) {
// keySet.add(findDefault.getChannel_address());
// loadValue(keySet,findDefault.getChannel_address());
// }else {
// loadValue(keySet,null);
// }
// }catch (Exception e) {
// // TODO: handle exception
// logger.error("AdminAutoMonitorIndexServiceImpl init fail e:{}",e);
// e.printStackTrace();
// }
// }
/**
* 异步加载余额
* @param addresses
*/
public void loadValue(Collection<String> addresses,String collectAddress) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
List<EtheBalance> etherMultipleBalance = etherscanRemoteService.getEtherMultipleBalance(String.join(",", addresses), 0);
for(EtheBalance etheBalance:etherMultipleBalance) {
ethMap.put(etheBalance.getAccount(), etheBalance.getBalance());
}
// if(!StringUtils.isEmpty(collectAddress)) {
// collectAddressUsdt = erc20RemoteService.getBalance(collectAddress);
// }
//数据同步成功时,更新时间
lastTime = new Date();
}catch (Exception e) {
// TODO: handle exception
logger.error("AdminAutoMonitorIndexServiceImpl loadEthValue fail e:{}",e);
e.printStackTrace();
}
}
});
t.start();
}
@Override
public Map<String,Double> getEthMap(List<String> addresses){
if (!ethMap.isEmpty()&&(new Date().getTime() - lastTime.getTime()) < interval) {
return ethMap;
}
SettleAddressConfig findDefault = autoMonitorSettleAddressConfigService.findDefault();
if(findDefault!=null) {
loadValue(addresses,findDefault.getChannel_address());
}else {
loadValue(addresses,null);
}
//等待1秒获取数据如未获取下次刷新即可
ThreadUtils.sleep(1000);
return ethMap;
}
/**
* 归集地址usdt余额
* @return
*/
public Double getCollectAddressUsdt(){
return collectAddressUsdt;
}
public void setEtherscanRemoteService(EtherscanRemoteService etherscanRemoteService) {
this.etherscanRemoteService = etherscanRemoteService;
}
public void setAutoMonitorAddressConfigService(AutoMonitorAddressConfigService autoMonitorAddressConfigService) {
this.autoMonitorAddressConfigService = autoMonitorAddressConfigService;
}
public void setAutoMonitorSettleAddressConfigService(
AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService) {
this.autoMonitorSettleAddressConfigService = autoMonitorSettleAddressConfigService;
}
public void setErc20RemoteService(Erc20RemoteService erc20RemoteService) {
this.erc20RemoteService = erc20RemoteService;
}
}