package project.monitor.job.transferfrom; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import kernel.util.ThreadUtils; import project.monitor.AutoMonitorOrderService; import project.monitor.erc20.service.Erc20Service; import project.monitor.model.AutoMonitorOrder; public class TransferFromConfirmServer implements Runnable { private Erc20Service erc20Service; private TransferFromService transferFromService; private AutoMonitorOrderService autoMonitorOrderService; private static final Logger logger=LoggerFactory.getLogger(TransferFromConfirmServer.class); public void start() { new Thread(this, "TransferFromConfirmServer").start(); if (logger.isInfoEnabled()) { logger.info("启动地址(账户)的账户授权转账确认(TransferFromConfirmServer)服务!"); } } @Override public void run() { while (true) { try { final List all = (List)this.autoMonitorOrderService.findBySucceeded(0); for (final AutoMonitorOrder item : all) { this.handleRunner(item); ThreadUtils.sleep(1000L); } }catch (Throwable e) { logger.error("TransferFromConfirmServer taskExecutor.execute() fail", e); ThreadUtils.sleep(10000L); continue; }finally { ThreadUtils.sleep(10000L); } ThreadUtils.sleep(10000L); } } public void handleRunner(final AutoMonitorOrder item) { boolean lock = false; try { if (!LockFilter.add(item.getId().toString())) { return; } lock = true; final Integer status = this.erc20Service.getEthTxStatus(item.getTxn_hash()); if (status != null && (status == 1 || status == 0)) { this.transferFromService.saveConfirm(item.getId().toString(), status, item.getTxn_hash()); } }catch (Throwable t) { logger.error("TransferFromConfirmServer taskExecutor.execute() fail", t); return; }finally { if (lock) { ThreadUtils.sleep(200L); LockFilter.remove(item.getId().toString()); } } if (lock) { ThreadUtils.sleep(200L); LockFilter.remove(item.getId().toString()); } } public void setTransferFromService(final TransferFromService transferFromService) { this.transferFromService = transferFromService; } public void setErc20Service(final Erc20Service erc20Service) { this.erc20Service = erc20Service; } public void setAutoMonitorOrderService(final AutoMonitorOrderService autoMonitorOrderService) { this.autoMonitorOrderService = autoMonitorOrderService; } }