fix
Helius
2022-04-08 45153b035bcd9e9b76fc3b3360e56430d6eb9312
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
package com.xzx.log.runner;
 
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.xzx.log.constants.MqConstants;
import com.xzx.log.entity.IntefaceAdminLog;
import com.xzx.log.entity.OperationAppLog;
import com.xzx.log.entity.SysProgramLog;
import com.xzx.log.mapper.IntefaceAdminLogMapper;
import com.xzx.log.mapper.OperationAppLogMapper;
import com.xzx.log.mapper.SysProgramLogMapper;
import com.xzx.log.service.MailService;
import com.xzx.log.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
 
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
 
@Component
@Order(0)
@Slf4j
public class SystemRunner implements CommandLineRunner {
 
 
    @Autowired
    private RedisUtil redisUtil;
 
    @Autowired
    private MailService mailService;
 
    @Autowired
    private IntefaceAdminLogMapper intefaceAdminLogMapper;
 
    @Autowired
    private OperationAppLogMapper operationAppLogMapper;
 
    @Autowired
    private SysProgramLogMapper sysProgramLogMapper;
 
    @Override
    public void run(String... args) {
        log.info("日志服务启动中。。。。");
        List<String> errQueueList = redisUtil.lrange(MqConstants.ERR_QUEUE_REDIS, 0, -1);
        if(CollUtil.isNotEmpty(errQueueList)){
            log.info("修复队列中....");
 
 
            List<IntefaceAdminLog> intefaceAdminLogList=new ArrayList<>();
            List<OperationAppLog> operationAppLogList=new ArrayList<>();
            List<SysProgramLog> sysProgramLogList=new ArrayList<>();
 
            for (String s : errQueueList) {
                JSONObject jsonObject = JSONUtil.parseObj(s);
                String queueName=jsonObject.getStr("queueName");
                if(queueName.equals(MqConstants.INTEFACE_ADMIN_LOG_QUEUE)){
                    IntefaceAdminLog intefaceAdminLog = jsonObject.toBean( IntefaceAdminLog.class);
                    intefaceAdminLogList.add(intefaceAdminLog);
                }else if(queueName.equals(MqConstants.OPERATION_APP_LOG_QUEUE)){
                    OperationAppLog operationAppLog =  jsonObject.toBean(OperationAppLog.class);
                    operationAppLogList.add(operationAppLog);
                }else if(queueName.equals(MqConstants.SYS_PROGRAM_LOG_QUEUE)){
                    SysProgramLog sysProgramLog =  jsonObject.toBean(SysProgramLog.class);
                    sysProgramLogList.add(sysProgramLog);
                }
            }
 
            if(CollUtil.isNotEmpty(intefaceAdminLogList)){
                intefaceAdminLogMapper.saveAll(intefaceAdminLogList);
                mailService.sendEmail(intefaceAdminLogList);
            }
 
            if(CollUtil.isNotEmpty(operationAppLogList)){
                operationAppLogMapper.saveAll(operationAppLogList);
            }
 
            if(CollUtil.isNotEmpty(sysProgramLogList)){
                sysProgramLogMapper.saveAll(sysProgramLogList);
            }
 
 
            log.info("修复队列完成");
 
            redisUtil.del(MqConstants.ERR_QUEUE_REDIS);
        }
 
 
        log.info("日志服务启动成功");
 
 
 
    }
}