1
zj
2024-06-13 66c2ab8a29786a5ee15c649890c5ec3c876c4774
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
package com.yami.trading.service.miner.job;
 
import java.util.Date;
import java.util.List;
 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yami.trading.bean.syspara.domain.Syspara;
import com.yami.trading.service.miner.service.MinerOrderProfitService;
import com.yami.trading.bean.data.domain.Realtime;
import com.yami.trading.bean.miner.MinerOrder;
import com.yami.trading.bean.model.Log;
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.service.data.DataService;
import com.yami.trading.service.syspara.SysparaService;
import com.yami.trading.service.system.LogService;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.asm.Advice;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
 
@Component
@Slf4j
public class MinerOrderProfitJob {
    private static Logger logger = LoggerFactory.getLogger(MinerOrderProfitJob.class);
    @Autowired
    protected MinerOrderProfitService minerOrderProfitService;
    @Autowired
    protected SysparaService sysparaService;
    @Autowired
    protected DataService dataService;
    @Autowired
    protected LogService sysLogService;
 
    public void taskJob() {
 
        try {
            int pageNo = 1;
            int pageSize = 300;
            minerOrderProfitService.cacheRecomProfitClear();
 
            String miner_bonus_parameters = sysparaService.find("miner_bonus_parameters").getSvalue();
            String miner_profit_symbol = sysparaService.find("miner_profit_symbol").getSvalue();
            List<Realtime> realtime_list = this.dataService.realtime(miner_profit_symbol);
            Realtime realtime = null;
            if (!realtime_list.isEmpty()) {
                realtime = realtime_list.get(0);
            }
            if (StringUtils.isNotEmpty(miner_profit_symbol) && realtime == null) {
                // 行情不存在,则退出计算
                return;
            }
 
            while (true) {
                Page page = minerOrderProfitService.pagedQueryComputeOrder(pageNo, pageSize);
                List minerOrders = page.getRecords();
                if (CollectionUtils.isEmpty(minerOrders)) {// 分页没数据时表示已经计算结束
                    break;
                }
                try {
                    this.minerOrderProfitService.saveComputeOrderProfit(minerOrders, miner_profit_symbol, realtime,
                            miner_bonus_parameters);
                } catch (Throwable e) {
                    logger.error("error:", e);
                }
                logger.info("miner profit finished ,count:" + minerOrders.size());
                pageNo++;
            }
            // 用户收益计算完,计算推荐人收益
            minerOrderProfitService.saveRecomProfit();
        } catch (Throwable e) {
            logger.error("miner profit run fail", e);
        }
 
    }
 
    public void handleData(Date systemTime) {
 
        try {
            int pageNo = 1;
            int pageSize = 300;
            minerOrderProfitService.cacheRecomProfitClear();
 
            String miner_bonus_parameters = sysparaService.find("miner_bonus_parameters").getSvalue();
            String miner_profit_symbol = sysparaService.find("miner_profit_symbol").getSvalue();
            List<Realtime> realtime_list = this.dataService.realtime(miner_profit_symbol);
            Realtime realtime = null;
            if (realtime_list.size() > 0) {
                realtime = realtime_list.get(0);
            }
            if (StringUtils.isNotEmpty(miner_profit_symbol) && realtime == null)
                return;// 行情不存在,则退出计算
 
            while (true) {
                Page page = minerOrderProfitService.pagedQueryComputeOrder(pageNo, pageSize);
                List minerOrders = page.getRecords();
                if (CollectionUtils.isEmpty(minerOrders)) {// 分页没数据时表示已经计算结束
                    break;
                }
                try {
                    this.minerOrderProfitService.saveComputeOrderProfit(minerOrders, miner_profit_symbol, realtime,
                            miner_bonus_parameters,systemTime);
                } catch (Throwable e) {
                    logger.error("error:", e);
                }
                logger.info("miner profit finished ,count:" + minerOrders.size());
                pageNo++;
            }
            // 用户收益计算完,计算推荐人收益
            minerOrderProfitService.saveRecomProfit(systemTime);
        } catch (Throwable e) {
            logger.error("MinerOrderProfitJob run fail e:", e);
            Log entity = new Log();
//            entity.setLevel(SysLog.level_error);
            entity.setCreateTime(new Date());
            entity.setOperator("MinerOrderProfitJob 矿机任务 执行失败  e:"+e);
            sysLogService.save(entity);
        }
 
    }
    public void setMinerOrderProfitService(MinerOrderProfitService minerOrderProfitService) {
        this.minerOrderProfitService = minerOrderProfitService;
    }
 
    public void setSysparaService(SysparaService sysparaService) {
        this.sysparaService = sysparaService;
    }
 
    public void setDataService(DataService dataService) {
        this.dataService = dataService;
    }
 
//    public void setSysLogService(SysLogService sysLogService) {
//        this.sysLogService = sysLogService;
//    }
    
 
    // 计时器--------------------------------------------------------------------------------
//    <!-- 每天凌晨4点启动 -->
//    cron="0 0 0 * * ?"
    // @Scheduled(cron = "0 */3 * * * ?")
    @Scheduled(cron = "0 0 4 * * ?")
    public void zeroJobHandle() {
        logger.error("矿机收益凌晨4点开始下发");
        Syspara syspara = this.sysparaService.find("time_task_config");
//        System.out.println("syspara.getSvalue1() => " + syspara.getSvalue());
        if( ObjectUtils.isEmpty(syspara) || (ObjectUtils.isNotEmpty(syspara)&&"1".equals(syspara.getSvalue()))) {
            logger.error("矿机配置为1矿机收益凌晨4点开始下发");
            //矿机每日计息
            this.taskJob();
        }
    }
//    <!-- 每天0,12点启动 -->
//    cron="0 0 0,12 * * ?"
    // @Scheduled(cron = "0 0 0,12 * * ?")
    // @Scheduled(cron = "0 */2 * * * ?")
    @Scheduled(cron = "0 0 0,12 * * ?")
    public void zeroOrtwelveJobHandle() {
        logger.error("矿机收益凌晨零点和12点开始下发");
        Syspara syspara = this.sysparaService.find("time_task_config");
//        System.out.println("syspara.getSvalue2() => " + syspara.getSvalue());
        if(ObjectUtils.isNotEmpty(syspara)&&"2".equals(syspara.getSvalue())) {
            logger.error("矿机配置为2矿机收益凌晨和12点开始下发");
            // 矿机每日计息
            this.taskJob();
        }
    }
 
 
    public void taskJob1() {
        /**
         * 凌晨4点主定时任务
         */
        try {
            // DBBackupLock.add(DBBackupLock.ALL_DB_LOCK);
            
            // activityOrderTaskJobHandle.taskJob();
            
            // 理财每日计息
            // financeOrder1DayJob.taskJob();
            logger.error("矿机收益凌晨4点开始下发");
            Syspara syspara = this.sysparaService.find("time_task_config");
            if(ObjectUtils.isEmpty(syspara)) {
                logger.error("当前配置为空矿机收益默认凌晨4点下");
                // 矿机每日计息
                this.taskJob();
            }else {
                if("0".equals(syspara.getSvalue())) {
                    logger.error("当前配置为0矿机收益凌晨4点下");
                    // 矿机每日计息
                    this.taskJob();
                }
            }
            
            // 每日定时返佣前一天的 充值,为空则 上级不 返佣
            // 是否开启每日定时任务返佣,为空则不开启 0.5% 0.3% 0.2% = 0.005,0.003,0.002
            // Syspara dailyRechargeRecom = this.sysparaService.find("daily_recharge_recom");
            // if(null != dailyRechargeRecom && !"".equals(dailyRechargeRecom.getValue())) {
            //     recharegeBonus1DayJob.taskJob();
            // }
            
            /**
             * 每日定时任务是否重置提现限制流水,1重置,2不重置
             */
            // String withdraw_reset_daily = this.sysparaService.find("withdraw_reset_daily").getValue();
            /**
             * 用户提现限制流水重置时间(1为凌晨4点,2为凌晨0点)
             */
            // String withdraw_reset_daily_time = this.sysparaService.find("withdraw_reset_daily_time").getValue();
            /**
             *    是否重置当日提现限制流水
             */
            // if("1".equals(withdraw_reset_daily) && "1".equals(withdraw_reset_daily_time)) {
            //     withdrawLimitAmountr1DayJob.taskJob();
            // }
            
            // 理财计算前一日购买奖励金额
            // financeOrderCreateRecomJob.taskJob();
 
            // 交割计算前一日购买推荐奖励
            // futuresOrderCreateRecomJob.taskJob();
            
            // 删除和重置分时和K线数据
            // cleanDataJob.taskJob();
            
            // C2C统计数据
            // c2cStatistics1DayJob.taskJob();
            
//            logger.error("TaskJobHandle backup 发起调用 start...........");
            // 每日备份数据库
            // BackupUtil.backup(sysLogService,sysparaService);
//            logger.error("TaskJobHandle backup 调用结束 end...........");
            
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            logger.error("TaskJobHandle fail e:",e);
        }finally {
//            DBBackupLock.remove(DBBackupLock.ALL_DB_LOCK);
        }
    }
    
 
}