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 errQueueList = redisUtil.lrange(MqConstants.ERR_QUEUE_REDIS, 0, -1); if(CollUtil.isNotEmpty(errQueueList)){ log.info("修复队列中...."); List intefaceAdminLogList=new ArrayList<>(); List operationAppLogList=new ArrayList<>(); List 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("日志服务启动成功"); } }