|
@@ -1,16 +1,16 @@
|
|
package com.simuwang.manage.service.impl;
|
|
package com.simuwang.manage.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.simuwang.base.common.conts.UserConstants;
|
|
import com.simuwang.base.common.conts.UserConstants;
|
|
import com.simuwang.base.common.enums.EmailCron;
|
|
import com.simuwang.base.common.enums.EmailCron;
|
|
|
|
+import com.simuwang.base.common.enums.OpenStatusType;
|
|
import com.simuwang.base.common.enums.ResultCode;
|
|
import com.simuwang.base.common.enums.ResultCode;
|
|
import com.simuwang.base.common.support.MybatisPage;
|
|
import com.simuwang.base.common.support.MybatisPage;
|
|
-import com.simuwang.base.common.util.DateUtils;
|
|
|
|
-import com.simuwang.base.common.util.EmailUtil;
|
|
|
|
-import com.simuwang.base.common.util.StringUtil;
|
|
|
|
|
|
+import com.simuwang.base.common.util.*;
|
|
import com.simuwang.base.mapper.MailboxInfoMapper;
|
|
import com.simuwang.base.mapper.MailboxInfoMapper;
|
|
-import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
|
|
|
|
import com.simuwang.base.pojo.dos.MailboxInfoDO;
|
|
import com.simuwang.base.pojo.dos.MailboxInfoDO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
|
|
+import com.simuwang.base.pojo.dto.QuartzBean;
|
|
import com.simuwang.base.pojo.dto.query.EmailPageQuery;
|
|
import com.simuwang.base.pojo.dto.query.EmailPageQuery;
|
|
import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
|
|
import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
|
|
import com.simuwang.base.pojo.vo.MailboxInfoVO;
|
|
import com.simuwang.base.pojo.vo.MailboxInfoVO;
|
|
@@ -20,7 +20,10 @@ import com.smppw.common.pojo.ResultVo;
|
|
import jakarta.mail.MessagingException;
|
|
import jakarta.mail.MessagingException;
|
|
import jakarta.mail.Store;
|
|
import jakarta.mail.Store;
|
|
import org.quartz.Scheduler;
|
|
import org.quartz.Scheduler;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -42,6 +45,13 @@ public class EmailConfigServiceImpl implements EmailConfigService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private Scheduler scheduler;
|
|
private Scheduler scheduler;
|
|
|
|
+
|
|
|
|
+ @Value("${spring.application.name}")
|
|
|
|
+ private String groupName;
|
|
|
|
+
|
|
|
|
+ private String JOB_CLASS="com.simuwang.manage.task.ParseSchedulerTask";
|
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(EmailConfigServiceImpl.class);
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public MybatisPage<MailboxInfoTableVO> searchEmailConfigList(EmailPageQuery emailPageQuery) {
|
|
public MybatisPage<MailboxInfoTableVO> searchEmailConfigList(EmailPageQuery emailPageQuery) {
|
|
List<MailboxInfoDO> mailboxInfoOS = emailConfigMapper.searchEmailConfigList(emailPageQuery);
|
|
List<MailboxInfoDO> mailboxInfoOS = emailConfigMapper.searchEmailConfigList(emailPageQuery);
|
|
@@ -49,9 +59,8 @@ public class EmailConfigServiceImpl implements EmailConfigService {
|
|
long total = emailConfigMapper.countEmailConfig(emailPageQuery);
|
|
long total = emailConfigMapper.countEmailConfig(emailPageQuery);
|
|
return MybatisPage.of(total,mailboxInfoTableVOS);
|
|
return MybatisPage.of(total,mailboxInfoTableVOS);
|
|
}
|
|
}
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
- @Transactional
|
|
|
|
|
|
+ @Transactional(rollbackFor=Exception.class)
|
|
public void saveEmailConfig(MailboxInfoVO mailboxInfoVO) {
|
|
public void saveEmailConfig(MailboxInfoVO mailboxInfoVO) {
|
|
MailboxInfoDO mailboxInfoDO = toMailboxInfoDO(mailboxInfoVO);
|
|
MailboxInfoDO mailboxInfoDO = toMailboxInfoDO(mailboxInfoVO);
|
|
if(mailboxInfoVO.getId() == null){
|
|
if(mailboxInfoVO.getId() == null){
|
|
@@ -61,8 +70,32 @@ public class EmailConfigServiceImpl implements EmailConfigService {
|
|
}else{
|
|
}else{
|
|
emailConfigMapper.updateById(mailboxInfoDO);
|
|
emailConfigMapper.updateById(mailboxInfoDO);
|
|
}
|
|
}
|
|
|
|
+ //添加任务
|
|
|
|
+ addJob(mailboxInfoVO);
|
|
|
|
+ }
|
|
|
|
+ private void addJob(MailboxInfoVO mailboxInfoVO) {
|
|
|
|
+ try{
|
|
|
|
+ QuartzUtils.deleteScheduleJob(scheduler,mailboxInfoVO.getEmail());
|
|
|
|
+ MailboxInfoDO infoDO = emailConfigMapper.selectEmailConfigByEmail(mailboxInfoVO.getEmail());
|
|
|
|
+ QuartzBean quartzBean = new QuartzBean();
|
|
|
|
+ quartzBean.setCronExpression(infoDO.getCron());
|
|
|
|
+ quartzBean.setStatus(infoDO.getOpenStatus());
|
|
|
|
+ quartzBean.setGroupName(groupName);
|
|
|
|
+ quartzBean.setJobName(mailboxInfoVO.getEmail());
|
|
|
|
+ quartzBean.setJobClass(JOB_CLASS);
|
|
|
|
+ //请求参数
|
|
|
|
+ MailboxInfoDTO paramDTO = new MailboxInfoDTO();
|
|
|
|
+ paramDTO.setAccount(infoDO.getEmail());
|
|
|
|
+ paramDTO.setPassword(infoDO.getPassword());
|
|
|
|
+ paramDTO.setPort(infoDO.getPort());
|
|
|
|
+ paramDTO.setHost(infoDO.getServer());
|
|
|
|
+ paramDTO.setProtocol(infoDO.getProtocol());
|
|
|
|
+ quartzBean.setJobParam(JSON.toJSONString(paramDTO));
|
|
|
|
+ QuartzUtils.createScheduleJob(scheduler,quartzBean);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ logger.error(e.getMessage(),e);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public ResultVo connectTest(MailboxInfoVO mailboxInfoVO) {
|
|
public ResultVo connectTest(MailboxInfoVO mailboxInfoVO) {
|
|
ResultVo vo = new ResultVo(ResultCode.CONNECT_SUCCESS);
|
|
ResultVo vo = new ResultVo(ResultCode.CONNECT_SUCCESS);
|
|
@@ -88,37 +121,58 @@ public class EmailConfigServiceImpl implements EmailConfigService {
|
|
vo.setMsg(ResultCode.CONNECT_ERROR.getMsg());
|
|
vo.setMsg(ResultCode.CONNECT_ERROR.getMsg());
|
|
return vo;
|
|
return vo;
|
|
}
|
|
}
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
- public void deleteEmailConfig(Integer id) {
|
|
|
|
- List<Integer> idList = new ArrayList<>();
|
|
|
|
- idList.add(id);
|
|
|
|
|
|
+ public void deleteEmailConfig(List<Integer> idList) {
|
|
|
|
+ //删除定时任务
|
|
|
|
+ for(Integer id : idList){
|
|
|
|
+ MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
|
|
|
|
+ QuartzUtils.deleteScheduleJob(scheduler,mailboxInfoDO.getEmail());
|
|
|
|
+ }
|
|
emailConfigMapper.deleteEmailConfigByIds(idList);
|
|
emailConfigMapper.deleteEmailConfigByIds(idList);
|
|
}
|
|
}
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public boolean checkEmailUnique(String email) {
|
|
public boolean checkEmailUnique(String email) {
|
|
- MailboxInfoDO mailboxInfoDO = emailConfigMapper.checkEmailUnique(email);
|
|
|
|
|
|
+ MailboxInfoDO mailboxInfoDO = emailConfigMapper.selectEmailConfigByEmail(email);
|
|
if (StringUtil.isNotNull(mailboxInfoDO))
|
|
if (StringUtil.isNotNull(mailboxInfoDO))
|
|
{
|
|
{
|
|
return UserConstants.NOT_UNIQUE;
|
|
return UserConstants.NOT_UNIQUE;
|
|
}
|
|
}
|
|
return UserConstants.UNIQUE;
|
|
return UserConstants.UNIQUE;
|
|
}
|
|
}
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public MailboxInfoVO searchEmailConfigById(Integer id) {
|
|
public MailboxInfoVO searchEmailConfigById(Integer id) {
|
|
MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
|
|
MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
|
|
MailboxInfoVO mailboxInfoVO = mailboxInfoDO.toVo();
|
|
MailboxInfoVO mailboxInfoVO = mailboxInfoDO.toVo();
|
|
return mailboxInfoVO;
|
|
return mailboxInfoVO;
|
|
}
|
|
}
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public void controlEmailConfig(OpenStatusVO openStatusVO) {
|
|
public void controlEmailConfig(OpenStatusVO openStatusVO) {
|
|
MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(openStatusVO.getId());
|
|
MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(openStatusVO.getId());
|
|
mailboxInfoDO.setOpenStatus(openStatusVO.getOpenStatus());
|
|
mailboxInfoDO.setOpenStatus(openStatusVO.getOpenStatus());
|
|
mailboxInfoDO.setUpdateTime(DateUtils.getNowDate());
|
|
mailboxInfoDO.setUpdateTime(DateUtils.getNowDate());
|
|
emailConfigMapper.updateById(mailboxInfoDO);
|
|
emailConfigMapper.updateById(mailboxInfoDO);
|
|
|
|
+ //设置定时任务
|
|
|
|
+ if(openStatusVO.getOpenStatus().equals(OpenStatusType.YES.getCode())){
|
|
|
|
+ QuartzUtils.resumeScheduleJob(scheduler,mailboxInfoDO.getEmail());
|
|
|
|
+ }else{
|
|
|
|
+ QuartzUtils.pauseScheduleJob(scheduler,mailboxInfoDO.getEmail());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public List<MailboxInfoDO> getAll() {
|
|
|
|
+ return emailConfigMapper.getAll();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public MailboxInfoDO selectEmailConfigByEmail(String email) {
|
|
|
|
+ return emailConfigMapper.selectEmailConfigByEmail(email);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void runOnce(Integer id) {
|
|
|
|
+ MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
|
|
|
|
+ QuartzUtils.runOnce(scheduler,mailboxInfoDO.getEmail());
|
|
}
|
|
}
|
|
|
|
|
|
private MailboxInfoDO toMailboxInfoDO(MailboxInfoVO mailboxInfoVO) {
|
|
private MailboxInfoDO toMailboxInfoDO(MailboxInfoVO mailboxInfoVO) {
|