Commit deb0e4e8 by huangfusuper

【邮件发送集成】集成发送邮件,测试完成

parent 897264e8
package com.byit.controller;
import com.byit.exception.DataValidationException;
import com.byit.model.vo.EmailAlarmVo;
import com.byit.service.EmailAlarmService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
/**
* @program: byit-myth-job->EmailController
* @description: TODO
* @author: huangfu
* @date: 2019/12/30 11:46
**/
@RestController
public class EmailController {
private final EmailAlarmService emailAlarmService;
@Autowired
public EmailController(EmailAlarmService emailAlarmService) {
this.emailAlarmService = emailAlarmService;
}
@RequestMapping("send")
public String send(){
EmailAlarmVo emailAlarmVo = new EmailAlarmVo();
emailAlarmVo.setFlowId(1);
emailAlarmVo.setFlowName("测试工作流");
emailAlarmVo.setRunId(UUID.randomUUID( ).toString());
emailAlarmVo.setVersionName("V1");
emailAlarmVo.setAlarmEmail("huangfukexing@byitgroup.com");
emailAlarmService.sendEmail(emailAlarmVo);
return "success";
}
}
...@@ -4,10 +4,15 @@ spring: ...@@ -4,10 +4,15 @@ spring:
url: jdbc:mysql://10.0.10.118:3306/myth-job?Unicode=true&characterEncoding=UTF-8&useSSL=true url: jdbc:mysql://10.0.10.118:3306/myth-job?Unicode=true&characterEncoding=UTF-8&useSSL=true
username: root username: root
password: 123456 password: 123456
# jpa:
# hibernate: mail:
# ddl-auto: none host: smtp.163.com #我自己的SMTP服务器地址
# show-sql: false username: huangfusuper@163.com #登录用户名
password: huangfu0110 #授权密码
default-encoding: UTF-8
protocol: smtp #协议
properties:
from: huangfusuper@163.com #真实邮箱
mybatis: mybatis:
mapper-locations: /mapper/*.xml mapper-locations: /mapper/*.xml
......
...@@ -2,9 +2,6 @@ ...@@ -2,9 +2,6 @@
<configuration> <configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>-->
<encoder> <encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder> </encoder>
...@@ -64,6 +61,9 @@ ...@@ -64,6 +61,9 @@
<logger name="com.byit.thread" level="debug" additivity="false"> <logger name="com.byit.thread" level="debug" additivity="false">
<appender-ref ref="console"/> <appender-ref ref="console"/>
</logger> </logger>
<logger name="com.byit.selector" level="debug" additivity="false">
<appender-ref ref="console"/>
</logger>
<logger name="org.springframework.web" level="debug"/> <logger name="org.springframework.web" level="debug"/>
......
...@@ -45,17 +45,6 @@ ...@@ -45,17 +45,6 @@
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
</dependency> </dependency>
<!--自动装载配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId> <artifactId>spring-boot-starter-jdbc</artifactId>
......
...@@ -11,7 +11,8 @@ import lombok.AllArgsConstructor; ...@@ -11,7 +11,8 @@ import lombok.AllArgsConstructor;
**/ **/
@AllArgsConstructor @AllArgsConstructor
public enum AdminEnums implements IEnum { public enum AdminEnums implements IEnum {
TEST("2132131","滚犊子") SEND_EMAIL_FAILURE("100500","邮件发送失败"),
SEND_EMAIL_SUCCESS("100200","邮件发送成功")
; ;
String code; String code;
String msg; String msg;
......
package com.byit.mapper; package com.byit.mapper;
import com.byit.model.EmailAlarm; import com.byit.model.EmailAlarm;
import com.byit.model.vo.EmailAlarmVo;
import org.springframework.stereotype.Repository;
/**
* @author huangfu
*/
@Repository
public interface EmailAlarmMapper { public interface EmailAlarmMapper {
int deleteById(Integer id); /**
* 根据id查询邮件
* @param id
* @return
*/
EmailAlarm findEmailAlarmById(Integer id);
int insertSelective(EmailAlarm record); /**
* 删除一个邮件
* @param id
* @return
*/
int deleteById(Integer id);
EmailAlarm getById(Integer id); /**
* 保存邮件
* @param record
* @return
*/
int saveEmailAlarm(EmailAlarm record);
int updateByIdSelective(EmailAlarm record); /**
* 修改邮件发送情况
* @param record
* @return
*/
int updateEmailAlarm(EmailAlarm record);
} }
\ No newline at end of file
package com.byit.model.vo;
import com.byit.annotation.annotationselector.EmailValidation;
import com.byit.annotation.annotationselector.NotBank;
import com.byit.annotation.annotationselector.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.File;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 邮箱告警
* @author gen
*/
@ApiModel
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class EmailAlarmVo implements Serializable {
/**
* 主键
*/
@ApiModelProperty("主键")
private Integer id;
/**
* 工作流Id
*/
@ApiModelProperty("工作流Id")
@NotNull(errorMessage = "工作流id不能为空")
private Integer flowId;
/**
* 工作流名称
*/
@ApiModelProperty("工作流名称")
@NotBank(errorMessage = "工作流名称不能为空")
private String flowName;
/**
* 运行标识
*/
@ApiModelProperty("运行标识")
@NotBank(errorMessage = "运行标识不能为空")
private String runId;
/**
* 版本名称
*/
@ApiModelProperty("版本名称")
@NotBank(errorMessage = "版本名称不能为空")
private String versionName;
/**
* 告警邮箱
*/
@ApiModelProperty("告警邮箱")
@NotBank(errorMessage = "告警邮箱不能为空,多个联系人可用,分割")
@EmailValidation
private String alarmEmail;
/**
* 当前工作流版本的告警的时机(0 不告警, 1 完成时告警, 2 失败时告警, 3 成功时告警)
*/
@ApiModelProperty("当前工作流版本的告警的时机(0 不告警, 1 完成时告警, 2 失败时告警, 3 成功时告警)")
private String alarmAction;
/**
* 告警结果(0, 未告警 1,告警成功 2,告警失败)
*/
@ApiModelProperty("告警结果(0, 未告警 1,告警成功 2,告警失败)")
private String alarmResult;
/**
* 发送时间
*/
@ApiModelProperty("发送时间")
private Date sendTime;
/**
* 告警内容
*/
@ApiModelProperty("告警内容")
private String alarmContent;
@ApiModelProperty("告警主题")
private String alarmTitle;
@ApiModelProperty("附件")
@JsonIgnore
private List<File> fileList;
/**
*/
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.byit.service;
import com.byit.model.EmailAlarm;
import com.byit.model.vo.EmailAlarmVo;
/**
* @program: byit-myth-job->EmailAlarmService
* @description: 邮件发送的业务接口
* @author: huangfu
* @date: 2019/12/30 10:59
**/
public interface EmailAlarmService {
/**
* 根据id查询邮件
* @param id
* @return
*/
EmailAlarm findEmailAlarmById(Integer id);
/**
* 删除一个邮件
* @param id
* @return
*/
int deleteById(Integer id);
/**
* 保存邮件
* @param record
* @return
*/
int saveEmailAlarm(EmailAlarm record);
/**
* 发送邮件
* @param record
*/
void sendEmail(EmailAlarmVo record);
/**
* 修改邮件发送情况
* @param record
* @return
*/
int updateEmailAlarm(EmailAlarm record);
}
package com.byit.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.byit.annotation.DataValidation;
import com.byit.annotation.ParamValidation;
import com.byit.enums.AdminEnums;
import com.byit.job.exceptions.BusinessException;
import com.byit.mapper.EmailAlarmMapper;
import com.byit.model.EmailAlarm;
import com.byit.model.vo.EmailAlarmVo;
import com.byit.service.EmailAlarmService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import java.util.Date;
/**
* @program: byit-myth-job->EmailAlarmServiceImpl
* @description: 邮件发送的业务接口
* @author: huangfu
* @date: 2019/12/30 11:00
**/
@Service
@Slf4j
public class EmailAlarmServiceImpl implements EmailAlarmService {
private final EmailAlarmMapper emailAlarmMapper;
private final JavaMailSenderImpl javaMailSender;
@Autowired
public EmailAlarmServiceImpl(EmailAlarmMapper emailAlarmMapper, JavaMailSenderImpl javaMailSender) {
this.emailAlarmMapper = emailAlarmMapper;
this.javaMailSender = javaMailSender;
}
@Override
public EmailAlarm findEmailAlarmById(Integer id) {
return emailAlarmMapper.findEmailAlarmById(id);
}
@Override
public int deleteById(Integer id) {
return emailAlarmMapper.deleteById(id);
}
@Override
public int saveEmailAlarm(EmailAlarm record) {
return emailAlarmMapper.saveEmailAlarm(record);
}
@Override
@DataValidation
public void sendEmail(@ParamValidation EmailAlarmVo record) {
record.setSendTime(new Date());
record.setAlarmTitle("测试邮件");
record.setAlarmContent("<div style='color:#F00;font-size:1000px'>测试邮件</div>");
try{
//发送一个支持复杂类型的邮件
MimeMessageHelper messageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);
//邮件发信人
messageHelper.setFrom(javaMailSender.getJavaMailProperties().getProperty("from"));
//邮件收信人
messageHelper.setTo(record.getAlarmEmail().split(","));
//邮件主题
messageHelper.setSubject(record.getAlarmTitle());
//邮件内容
messageHelper.setText(record.getAlarmContent(),true);
if(CollectionUtil.isNotEmpty(record.getFileList())){
record.getFileList().forEach(file ->{
try {
messageHelper.addAttachment(file.getName(),file);
} catch (MessagingException e) {
record.setAlarmResult("2");
log.error("-----------添加附件失败【{}】--------------",e.getMessage());
}
});
}
//正式发送邮件
javaMailSender.send(messageHelper.getMimeMessage());
record.setAlarmResult("1");
}catch (Exception e){
record.setAlarmResult("2");
log.error("-----------邮件发送失败【{}】--------------",e.getMessage());
throw new BusinessException(AdminEnums.SEND_EMAIL_FAILURE);
}
EmailAlarm emailAlarm = new EmailAlarm( );
BeanUtils.copyProperties(record,emailAlarm);
//保存邮件
saveEmailAlarm(emailAlarm);
}
@Override
public int updateEmailAlarm(EmailAlarm record) {
return emailAlarmMapper.updateEmailAlarm(record);
}
}
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<!-- generated @mbg.generated date: 2019-12-25 --> <!-- generated @mbg.generated date: 2019-12-25 -->
alarm_content alarm_content
</sql> </sql>
<select id="getById" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs"> <select id="findEmailAlarmById" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
<!-- generated @mbg.generated date: 2019-12-25 --> <!-- generated @mbg.generated date: 2019-12-25 -->
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
delete from email_alarm delete from email_alarm
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</delete> </delete>
<insert id="insertSelective" parameterType="com.byit.model.EmailAlarm"> <insert id="saveEmailAlarm" parameterType="com.byit.model.EmailAlarm">
<!-- generated @mbg.generated date: 2019-12-25 --> <!-- generated @mbg.generated date: 2019-12-25 -->
insert into email_alarm insert into email_alarm
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<update id="updateByIdSelective" parameterType="com.byit.model.EmailAlarm"> <update id="updateEmailAlarm" parameterType="com.byit.model.EmailAlarm">
<!-- generated @mbg.generated date: 2019-12-25 --> <!-- generated @mbg.generated date: 2019-12-25 -->
update email_alarm update email_alarm
<set> <set>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment