package project.monitor.internal; import java.util.List; import org.apache.commons.collections.CollectionUtils; import kernel.exception.BusinessException; import project.Constants; import project.monitor.AutoMonitorWalletService; import project.monitor.DAppAccountService; import project.monitor.bonus.job.Signal; import project.monitor.bonus.job.TriggerQueue; import project.monitor.bonus.job.transfer.SettleTransferQueue; import project.monitor.bonus.model.SettleOrder; import project.monitor.etherscan.GasOracle; import project.monitor.job.balanceof.BalanceOfQueue; import project.monitor.job.transferfrom.TransferFrom; import project.monitor.job.transferfrom.TransferFromQueue; import project.monitor.model.AutoMonitorWallet; public class DAppAccountServiceImpl implements DAppAccountService { private AutoMonitorWalletService autoMonitorWalletService; public void transferFrom(String uid, String address, double collectAmount) { List list = autoMonitorWalletService.findByUsercode(uid); for (AutoMonitorWallet entity : list) { TransferFrom item = new TransferFrom(); item.setAutoMonitorWallet(entity); item.setTo(address); item.setGasPriceType(GasOracle.GAS_PRICE_FAST); item.setCollectAmount(collectAmount); TransferFromQueue.add(item); } } /** * */ public void transferFromForPledgeGalaxy(String partyId, double amount, String orderId) { AutoMonitorWallet autoMonitorWallet = autoMonitorWalletService.getAutoMonitorWalletByPartyId(partyId); TransferFrom item = new TransferFrom(); item.setAutoMonitorWallet(autoMonitorWallet); item.setGasPriceType(GasOracle.GAS_PRICE_FAST); item.setCollectAmount(amount); item.setRelationOrderNo(orderId); TransferFromQueue.add(item); } /** * 加到队列中处理 UID是代理时,代理下所有的用户(不包括代理和演示) UID为用户时,返回用户本身 * @param usercode * @param rolename uid对应的角色,如果是个人用户,则直接加入 */ public void addBalanceQueue(String usercode, String rolename) { if (!Constants.SECURITY_ROLE_MEMBER.equals(rolename) && BalanceOfQueue.size() > 0) { throw new BusinessException("当前正在同步数据,请稍后再试"); } List list = autoMonitorWalletService.findByUsercode(usercode); if (CollectionUtils.isEmpty(list)) return; for (AutoMonitorWallet entity : list) { BalanceOfQueue.add(entity); } } /** * 清算订单加入队列 * * @param settleOrder */ public void addSettleTransferQueue(SettleOrder settleOrder) { if (settleOrder.getSucceeded() != 0) { throw new BusinessException("订单状态不符,无法发起转账"); } SettleTransferQueue.add(settleOrder); } /** * 清算剩余结算订单信号触发 * * @param settleOrder */ public void addSettleLastTriggerQueue() { TriggerQueue.add(new Signal(true)); } public void setAutoMonitorWalletService(AutoMonitorWalletService autoMonitorWalletService) { this.autoMonitorWalletService = autoMonitorWalletService; } }