peternameyakj
2025-01-06 4c82733d79b03ee1d5304398b0598d826e6fd0e9
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
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<AutoMonitorWallet> 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<AutoMonitorWallet> 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;
    }
 
}