package org.jeecg.modules.demo.contract.controller;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.annotation.PostConstruct;
|
import lombok.extern.slf4j.Slf4j;
|
import org.jeecg.config.firewall.SqlInjection.impl.RobinJdbcConfig;
|
import org.jeecg.modules.demo.contract.entity.Contract;
|
import org.jeecg.modules.demo.contract.entity.SemanticWord;
|
import org.jeecg.modules.demo.contract.service.IContractService;
|
import org.jeecg.modules.demo.contract.service.ISemanticWordService;
|
import org.jeecg.modules.message.handle.impl.EmailSendMsgHandle;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* JEECG-Boot 定时发送邮件任务
|
*/
|
@Tag(name="邮件")
|
@RestController
|
@RequestMapping("/email")
|
@Slf4j
|
public class EmailScheduledTask {
|
|
@Autowired
|
@Qualifier("robinJdbcTemplate") // 指定特定的JdbcTemplate
|
private JdbcTemplate jdbcTemplate;
|
|
@Autowired
|
private EmailSendMsgHandle emailSendMsgHandle;
|
|
@Autowired
|
private ISemanticWordService semanticWordService;
|
|
@Autowired
|
private IContractService contractService;
|
|
// @PostConstruct
|
public void init() {
|
new Thread(() -> {
|
try {
|
Thread.sleep(60000); // 延迟一分钟
|
sendTimedEmail(); // 执行首次任务
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}).start();
|
}
|
|
|
// @Scheduled(fixedRate = 1800000)
|
public void sendTimedEmail() {
|
|
List<SemanticWord> list = semanticWordService.list();
|
|
for (SemanticWord semanticWord : list) {
|
Contract byId = contractService.getById(semanticWord.getContractId());
|
if (byId == null) {
|
return;
|
} else {
|
String contractId = byId.getContractCode();
|
String sql = "select count(1) from d_event_list where contract_name = '" + contractId + "' and (keyword_name like concat('%','" + semanticWord.getWord() + "','%') or target_name like concat('%','" + semanticWord.getOutWord() + "','%'))";
|
Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql);
|
if (stringObjectMap != null) {
|
if (stringObjectMap.get("count(1)") != null && !stringObjectMap.get("count(1)").toString().equals("0")) {
|
if (semanticWord.getCount() == null || !semanticWord.getCount().equals(stringObjectMap.get("count(1)").toString())) {
|
semanticWord.setCount(stringObjectMap.get("count(1)").toString());
|
|
String sqlTest = "select keyword_name,target_name,iResultRank from d_event_list where contract_name = '" + contractId + "' and (keyword_name like concat('%','" + semanticWord.getWord() + "','%') or target_name like concat('%','" + semanticWord.getOutWord() + "','%')) order by create_time desc limit 0,1";
|
Map<String, Object> semMap = jdbcTemplate.queryForMap(sqlTest);
|
|
String[] es_receiver = new String[]{"182004222@qq.com","lospace@163.com","2156125618@qq.com"};
|
String es_title = semMap.get("target_name") + (Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()? (stringObjectMap.get("count(1)").toString().equals("1")?"首次上词提醒邮件" : "再次上词提醒邮件") : "掉词提醒邮件");
|
String es_content = "语义词:" + semMap.get("keyword_name").toString() + ";漏出词:" + semMap.get("target_name") + (Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()? (stringObjectMap.get("count(1)").toString().equals("1")?"首次上词" : "再次上词") : "掉词了") +",当前排名:" + semMap.get("iResultRank") + "。";
|
for (String s_receiver : es_receiver) {
|
emailSendMsgHandle.sendMsg(s_receiver ,es_title ,es_content);
|
}
|
|
semanticWord.setNowNo(semMap.get("iResultRank").toString());
|
semanticWord.setStatus(Integer.parseInt(semMap.get("iResultRank").toString()) <= semanticWord.getRanking()?"5" : "6");
|
|
semanticWordService.updateById(semanticWord);
|
|
}
|
}
|
}
|
}
|
}
|
int i = 1;
|
|
// String es_receiver = "2156125618@qq.com";
|
// String es_title = "jeecg测试邮件";
|
// String es_content = "测试内容";
|
// emailSendMsgHandle.sendMsg(es_receiver ,es_title ,es_content );
|
}
|
}
|