package com.cloudroam.service.impl;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.cloudroam.bo.meeting.MeetingBO;
|
import com.cloudroam.common.enumeration.GroupLevel2Enum;
|
import com.cloudroam.model.EmailSmtpSettingDO;
|
import com.cloudroam.model.UserDO;
|
import com.cloudroam.service.AdminService;
|
import com.cloudroam.service.EmailSmtpSettingService;
|
import com.cloudroam.service.MailService;
|
import com.cloudroam.service.UserService;
|
import com.cloudroam.util.MailUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
import javax.annotation.PostConstruct;
|
import java.time.format.DateTimeFormatter;
|
import java.util.List;
|
|
@Service
|
public class MailServiceImpl implements MailService {
|
|
@Value("${front.url}")
|
private String url;
|
|
@Autowired
|
private AdminService adminService;
|
|
@Autowired
|
private EmailSmtpSettingService emailSmtpSettingService;
|
|
@Autowired
|
private UserService userService;
|
|
private List<UserDO> managerList;
|
|
private EmailSmtpSettingDO emailSmtpSettingDO;
|
|
|
|
|
|
@PostConstruct
|
public void init() {
|
// 获取部门经理
|
managerList=adminService.getGroupsUserListOnJob(GroupLevel2Enum.MANAGER.getValue());
|
// 获取邮件服务器配置
|
List<EmailSmtpSettingDO> settingDOList=emailSmtpSettingService.getEmailSmtpSettingList();
|
emailSmtpSettingDO = settingDOList.get(0);
|
|
}
|
@Async
|
@Override
|
// @Logger(template = "{user.nickname} 日志提交提醒邮件已发送 ")
|
public void sendCommitDailyMail(UserDO userDO, String dailyDate) {
|
|
String subjectFormat="(%s)~%s 日志提交提醒";
|
String contentFormat="(%s)~%s 日志已经提交,请及时确认";
|
|
for(UserDO manager:managerList){
|
if(StrUtil.isNotBlank(manager.getEmail())){
|
MailUtils.sendEmailHtml(emailSmtpSettingDO.getSmtpHost(),emailSmtpSettingDO.getSmtpPort(),emailSmtpSettingDO.getSmtpFrom(),emailSmtpSettingDO.getSmtpUsername(),emailSmtpSettingDO.getSmtpPassword(),
|
manager.getEmail(), String.format(subjectFormat,dailyDate, userDO.getNickname()),
|
String.format(contentFormat, dailyDate,userDO.getNickname()));
|
}
|
|
}
|
|
}
|
|
@Override
|
public void sendConfirmDailyMail(UserDO confirmDO, String dailyDate, String userId, String confirmContent) {
|
|
String subjectFormat="(%s)~%s 日志已经确认提醒";
|
String contentFormat="(%s)~%s 日志已经确认,请在下班前填写完成工作的实际工时";
|
String contentFormat2="(%s)~%s 日志已经确认,审核意见是:%s,请在下班前填写完成工作的实际工时";
|
String sendContent="";
|
if(StrUtil.isNotBlank(confirmContent)){
|
sendContent=String.format(contentFormat, dailyDate,confirmDO.getNickname());
|
}else{
|
sendContent=String.format(contentFormat2, dailyDate,confirmDO.getNickname(),confirmContent);
|
}
|
|
|
UserDO receiverUser = userService.getUserById(userId);
|
|
if(StrUtil.isNotBlank(receiverUser.getEmail())){
|
MailUtils.sendEmailHtml(emailSmtpSettingDO.getSmtpHost(),emailSmtpSettingDO.getSmtpPort(),emailSmtpSettingDO.getSmtpFrom(),emailSmtpSettingDO.getSmtpUsername(),emailSmtpSettingDO.getSmtpPassword(),
|
receiverUser.getEmail(), String.format(subjectFormat,dailyDate, confirmDO.getNickname()),
|
sendContent);
|
}
|
|
}
|
|
@Override
|
public void sendUnConfirmDailyMail(UserDO unConfirmUser, String dailyDate, String createUserId) {
|
String subjectFormat="(%s)~%s 日志被设置为未确认提醒";
|
String contentFormat="(%s)~%s 日志被设置成了未确认,请尽快修改并提交日志";
|
|
|
UserDO receiverUser = userService.getUserById(createUserId);
|
|
if(StrUtil.isNotBlank(receiverUser.getEmail())){
|
MailUtils.sendEmailHtml(emailSmtpSettingDO.getSmtpHost(),emailSmtpSettingDO.getSmtpPort(),emailSmtpSettingDO.getSmtpFrom(),emailSmtpSettingDO.getSmtpUsername(),emailSmtpSettingDO.getSmtpPassword(),
|
receiverUser.getEmail(), String.format(subjectFormat,dailyDate, unConfirmUser.getNickname()),
|
String.format(contentFormat, dailyDate,unConfirmUser.getNickname()));
|
}
|
}
|
|
@Override
|
public void sendConfirmUnPassDailyMail(UserDO unPassUser, String dailyDate, String createUserId, String confirmContent) {
|
String subjectFormat="(%s)~%s 日志确认未被通过";
|
String contentFormat="(%s)~%s 日志确认未被通过,修改意见为:%s ,请尽快修改并提交日志";
|
|
|
UserDO receiverUser = userService.getUserById(createUserId);
|
|
if(StrUtil.isNotBlank(receiverUser.getEmail())){
|
MailUtils.sendEmailHtml(emailSmtpSettingDO.getSmtpHost(),emailSmtpSettingDO.getSmtpPort(),emailSmtpSettingDO.getSmtpFrom(),emailSmtpSettingDO.getSmtpUsername(),emailSmtpSettingDO.getSmtpPassword(),
|
receiverUser.getEmail(), String.format(subjectFormat,dailyDate, unPassUser.getNickname()),
|
String.format(contentFormat, dailyDate,unPassUser.getNickname(),confirmContent));
|
}
|
}
|
|
|
@Async("taskExecutor")
|
@Override
|
public void sendMeetingCommitMail(MeetingBO meetingBO,UserDO commitUser) {
|
// UserDO user = LocalUser.getLocalUser();
|
|
String meetingUrl="<a href='%s#/meeting/page?id=%s'>%s</a>";
|
final String meetingUrlFormat = String.format(meetingUrl, url, meetingBO.getId(), meetingBO.getMeetingTitle());
|
|
|
String subjectFormat="(%s)(%s)~%s 会议纪要已提交";
|
String contentFormat="(%s)(%s)~%s <br/>" +
|
"提交人:%s <br/> 提交时间:%s <br/> 内容链接:%s";
|
|
// managerList=adminService.getGroupsUserList(GroupLevel2Enum.MANAGER.getValue(),"1");
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
String meetingDate=meetingBO.getMeetingDate().format(formatter);
|
|
final String smtpFrom =!StringUtils.isEmpty(commitUser.getEmailpwd())?commitUser.getEmail():emailSmtpSettingDO.getSmtpFrom();
|
String smtpUsername=!StringUtils.isEmpty(commitUser.getEmailpwd())?commitUser.getEmail():emailSmtpSettingDO.getSmtpUsername();
|
String smtpPassword=!StringUtils.isEmpty(commitUser.getEmailpwd())?commitUser.getEmailpwd():emailSmtpSettingDO.getSmtpPassword();
|
|
managerList.stream().forEach(toUser -> {
|
// MailUtils.sendEmailHtml(emailSmtpSettingDO.getSmtpHost(),emailSmtpSettingDO.getSmtpPort(),emailSmtpSettingDO.getSmtpFrom(),emailSmtpSettingDO.getSmtpUsername(),emailSmtpSettingDO.getSmtpPassword(),
|
// userDO.getEmail(), String.format(subjectFormat,meetingDate,meetingBO.getMeetingTypeName(), meetingBO.getMeetingTitle()),
|
// String.format(contentFormat, meetingDate,meetingBO.getMeetingTypeName(),meetingBO.getMeetingTitle(),meetingBO.getCommitUserName(),meetingBO.getCommitTime().format(formatter2),meetingBO.getMeetingContent()));
|
|
MailUtils.sendEmailHtml(
|
emailSmtpSettingDO.getSmtpHost(),
|
emailSmtpSettingDO.getSmtpPort(),
|
smtpFrom,
|
smtpUsername,
|
smtpPassword,
|
toUser.getEmail(),
|
String.format(subjectFormat,meetingDate,meetingBO.getMeetingTypeName(), meetingBO.getMeetingTitle()),
|
String.format(contentFormat, meetingDate,meetingBO.getMeetingTypeName(),meetingBO.getMeetingTitle(),meetingBO.getCommitUserName(),meetingBO.getCommitTime().format(formatter2),meetingUrlFormat)
|
);
|
|
});
|
}
|
}
|