peternameyakj
2024-07-21 25e1d54f2295934446473fe85cf022fa6140b4e0
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
package project.monitor.internal;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
 
import kernel.util.Arith;
import kernel.util.StringUtils;
import kernel.web.ApplicationUtil;
import project.monitor.AutoMonitorPoolMiningDataService;
import project.monitor.model.AutoMonitorPoolMiningData;
import project.syspara.SysparaService;
 
public class AutoMonitorPoolMiningDataServiceImpl implements AutoMonitorPoolMiningDataService {
 
    private SysparaService sysparaService;
 
    @Override
    public void save(AutoMonitorPoolMiningData entity) {
        ApplicationUtil.executeInsert(entity);
    }
 
    @Override
    public void update(AutoMonitorPoolMiningData entity) {
        ApplicationUtil.executeUpdate(entity);
    }
 
    @Override
    public AutoMonitorPoolMiningData findById(String id) {
        return ApplicationUtil.executeGet(id,AutoMonitorPoolMiningData.class);
    }
 
    /**
     * 默认数据
     * @param id
     * @return
     */
    public AutoMonitorPoolMiningData findDefault() {
        List<AutoMonitorPoolMiningData> list = ApplicationUtil.executeSelect(AutoMonitorPoolMiningData.class);
        return list.size()<=0?null:list.get(0);
    }
 
    /**
     * 当有新的授权时,更新数据
     */
    public void updatePoolDataByApproveSuccess() {
        /**
         * 是否授权成功后自动归集客户钱包金额,是否授权成功后自动归集金额:1不归集,2归集
         */
        double auto_monitor_mining_change = Double.valueOf(sysparaService.find("auto_monitor_mining_change").getValue());
        if (auto_monitor_mining_change==1) return;
        if (auto_monitor_mining_change==2) {
            AutoMonitorPoolMiningData findDefault = findDefault();
            Map<String, Double> recomRate = getRecomRate(findDefault);
            double incomeRate_recom = recomRate.get(String.valueOf(0));
            findDefault.setTotal_output(Arith.add(incomeRate_recom,findDefault.getTotal_output()));
            double verifier_now = Arith.sub(findDefault.getVerifier(),findDefault.getRate());
            if(verifier_now < 0) {
                verifier_now=0;
            }
            findDefault.setVerifier(verifier_now);
            update(findDefault);
        }
    }
    
    private Map<String, Double> getRecomRate(AutoMonitorPoolMiningData config) {
        Map<String, Double> map = new HashMap<String, Double>();
        if (StringUtils.isNullOrEmpty(config.getRate_node())) {
            /*
             * 没有配置,直接返回
             */
            return map;
        }
 
        String[] split = config.getRate_node().split("\\|");
        for (int i = 0; i < split.length; i++) {
            Double min = Double.valueOf(split[i].split("-")[0]);
            Double max = Double.valueOf(split[i].split("-")[1]);
            map.put(String.valueOf(i), this.getRandomDouble(min, max));
        }
 
        return map;
    }
    
    private double getRandomDouble(double min, double max) {
        return Arith.add(min, Arith.mul(Arith.sub(max, min), new Random().nextDouble()));
    }
 
    public void setSysparaService(SysparaService sysparaService) {
        this.sysparaService = sysparaService;
    }
}