Merge remote-tracking branch 'origin/master'

This commit is contained in:
LiuY 2022-06-21 10:31:05 +08:00
commit afd89d5d03

View File

@ -1,12 +1,15 @@
package cn.com.tenlion.systemoa.task; package cn.com.tenlion.systemoa.task;
import cn.com.tenlion.schedule.pojo.dtos.schedule.ScheduleDTO; import cn.com.tenlion.schedule.pojo.dtos.schedule.ScheduleDTO;
import cn.com.tenlion.schedule.pojo.dtos.schedulelog.ScheduleLogDTO;
import cn.com.tenlion.schedule.pojo.vos.schedulelog.ScheduleLogVO;
import cn.com.tenlion.schedule.service.schedule.IScheduleService; import cn.com.tenlion.schedule.service.schedule.IScheduleService;
import cn.com.tenlion.schedule.service.schedulelog.IScheduleLogService;
import cn.com.tenlion.schedule.util.SendShortMessage; import cn.com.tenlion.schedule.util.SendShortMessage;
import cn.com.tenlion.systemoa.service.mail.IMailService; import cn.com.tenlion.systemoa.service.mail.IMailService;
import ink.wgink.interfaces.user.IUserBaseService; import ink.wgink.interfaces.user.IUserBaseService;
import ink.wgink.module.sms.service.email.IEmailService;
import ink.wgink.pojo.dtos.user.UserDTO; import ink.wgink.pojo.dtos.user.UserDTO;
import ink.wgink.util.date.DateUtil;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -14,8 +17,8 @@ import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -41,49 +44,102 @@ public class ScheduleMessage {
@Autowired @Autowired
private IMailService iMailService; private IMailService iMailService;
@Autowired
private IScheduleLogService iScheduleLogService;
@Value("${spring.mail.username}") //发送人的邮箱 @Value("${spring.mail.username}") //发送人的邮箱
private String from; private String from;
@Scheduled(cron="0 0/4 * * * ?") // 4分钟执行1次 @Scheduled(cron="0 0/1 * * * ?") // 4分钟执行1次
public void sendMessage() throws Exception { public void sendMessage() throws Exception {
// 查出已经开始的日程 , 但没有通知的 // 查出已经开始的日程 , 但没有通知的
List<ScheduleDTO> list = iScheduleService.notNoticeList(); List<ScheduleDTO> list = iScheduleService.notNoticeList();
for(ScheduleDTO dto : list) { for(ScheduleDTO dto : list) {
// 查找通知记录
Map<String, ScheduleLogDTO> logMap = iScheduleLogService.getByScheduleId(dto.getScheduleId(), "1");
String levelName = dto.getScheduleLevel().equals("2") ? "【紧急日程】" : "";
// 1:站内,2:短信,3:邮件 // 1:站内,2:短信,3:邮件
// 站内通知 // 站内通知
if(dto.getScheduleMessageType().contains("1")) { if(dto.getScheduleMessageType().contains("1") && logMap.get("1") == null) {
String username = dto.getCreatorName().split("\\|")[0]; String username = dto.getCreatorName().split("\\|")[0];
String name = dto.getCreatorName().split("\\|")[1]; String name = dto.getCreatorName().split("\\|")[1];
String time = dto.getScheduleStartTime().substring(0, 5); String time = dto.getScheduleStartTime().substring(0, 5);
iMailService.cbcSendMail("1", dto.getCreator(), username + "[" + name+ "]", "日程提醒", name + ",您的日程(" + dto.getScheduleTitle() + ")即将在 " + time + "开始" ); String content = name + ",您的日程(" + dto.getScheduleTitle() + ")即将在 " + time + "开始" + levelName;
// 保存记录
ScheduleLogVO logVO = new ScheduleLogVO();
logVO.setScheduleId(dto.getScheduleId());
logVO.setScheduleLogContent(content);
logVO.setScheduleLogStatus("1");
logVO.setScheduleLogTime(DateUtil.getTime());
logVO.setScheduleLogType("1");
try{
iMailService.cbcSendMail("1", dto.getCreator(), username + "[" + name+ "]", "日程提醒", content);
}catch(Exception e) {
logVO.setScheduleLogContent("站内发送失败:" + content);
logVO.setScheduleLogStatus("0");
}
iScheduleLogService.saveData(logVO);
} }
// 短信通知 // 短信通知
if(dto.getScheduleMessageType().contains("2")) { if(dto.getScheduleMessageType().contains("2") && logMap.get("2") == null) {
// 校验手机号是否正确 // 校验手机号是否正确
String phone = dto.getCreatorName().split("\\|")[0]; UserDTO userDTO = iUserBaseService.get(dto.getCreator());
String phone = userDTO.getUserPhone();
String name = dto.getCreatorName().split("\\|")[1]; String name = dto.getCreatorName().split("\\|")[1];
String time = dto.getScheduleStartTime().substring(0, 5);
String content = name + ",您的日程(" + dto.getScheduleTitle() + ")即将在 " + time + "开始" + levelName;
// 保存记录
ScheduleLogVO logVO = new ScheduleLogVO();
logVO.setScheduleId(dto.getScheduleId());
logVO.setScheduleLogContent(content);
logVO.setScheduleLogStatus("1");
logVO.setScheduleLogTime(DateUtil.getTime());
logVO.setScheduleLogType("2");
if(checkMobileNumber(phone)) { if(checkMobileNumber(phone)) {
String time = dto.getScheduleStartTime().substring(0, 5); try{
SendShortMessage.send(phone, name + ",您的日程(" + dto.getScheduleTitle() + ")即将在 " + time + "开始" , null); SendShortMessage.send(phone, content , null);
}catch(Exception e) {
logVO.setScheduleLogContent("短信发送失败:" + content);
logVO.setScheduleLogStatus("0");
}
}else {
logVO.setScheduleLogContent("手机号错误:" + content);
logVO.setScheduleLogStatus("0");
} }
iScheduleLogService.saveData(logVO);
} }
// 邮箱通知 // 邮箱通知
if(dto.getScheduleMessageType().contains("3")) { if(dto.getScheduleMessageType().contains("3") && logMap.get("3") == null) {
String name = dto.getCreatorName().split("\\|")[1]; String name = dto.getCreatorName().split("\\|")[1];
String time = dto.getScheduleStartTime().substring(0, 5); String time = dto.getScheduleStartTime().substring(0, 5);
UserDTO userDTO = iUserBaseService.get(dto.getCreator()); UserDTO userDTO = iUserBaseService.get(dto.getCreator());
String email = userDTO.getUserEmail(); String email = userDTO.getUserEmail();
String content = name + ",您的日程(" + dto.getScheduleTitle() + ")即将在 " + time + "开始" + levelName;
// 保存记录
ScheduleLogVO logVO = new ScheduleLogVO();
logVO.setScheduleId(dto.getScheduleId());
logVO.setScheduleLogContent(content);
logVO.setScheduleLogStatus("1");
logVO.setScheduleLogTime(DateUtil.getTime());
logVO.setScheduleLogType("3");
if(checkEmail(email)) { if(checkEmail(email)) {
SimpleMailMessage message = new SimpleMailMessage(); SimpleMailMessage message = new SimpleMailMessage();
message.setText(name + ",您的日程(" + dto.getScheduleTitle() + ")即将在 " + time + "开始"); message.setText(content);
message.setSubject("日程提醒"); message.setSubject("日程提醒" + levelName);
message.setTo(email); message.setTo(email);
message.setFrom(from); message.setFrom(from);
javaMailSender.send(message); try{
javaMailSender.send(message);
}catch(Exception e) {
logVO.setScheduleLogContent("邮箱发送失败:" + content);
logVO.setScheduleLogStatus("0");
}
}else {
logVO.setScheduleLogContent("邮箱号错误:" + content);
logVO.setScheduleLogStatus("0");
} }
iScheduleLogService.saveData(logVO);
} }
// 更改提醒状态为已提醒
iScheduleService.updateMessageStatus(dto.getScheduleId());
} }
} }