diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/mail/MailSendStatusEnum.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/mail/MailSendStatusEnum.java index 8936ea9c7..7cb16edef 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/mail/MailSendStatusEnum.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/mail/MailSendStatusEnum.java @@ -7,7 +7,7 @@ import lombok.Getter; * 邮件的发送状态枚举 * * @author wangjingyi - * @date 2022/4/10 13:39 + * @since 2022/4/10 13:39 */ @Getter @AllArgsConstructor diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailLogController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailLogController.java index 1cad6a02a..88cfeb7a4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailLogController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailLogController.java @@ -3,23 +3,20 @@ package cn.iocoder.yudao.module.system.controller.admin.mail; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.*; +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogRespVO; import cn.iocoder.yudao.module.system.convert.mail.MailLogConvert; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO; import cn.iocoder.yudao.module.system.service.mail.MailLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.util.List; +import javax.annotation.Resource; +import javax.validation.Valid; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -29,7 +26,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @RequestMapping("/system/mail-log") public class MailLogController { - @Autowired + @Resource private MailLogService mailLogService; @GetMapping("/page") @@ -40,14 +37,4 @@ public class MailLogController { return success(MailLogConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @ApiOperation("导出邮箱日志Excel") - @PreAuthorize("@ss.hasPermission('system:mail-log:export')") - public void exportMailLogExcel(@Valid MailLogExportReqVO exportReqVO , - HttpServletResponse response) throws IOException { - List list = mailLogService.getMailLogList(exportReqVO); - // 导出 Excel - List datas = MailLogConvert.INSTANCE.convertList(list); - ExcelUtils.write(response, "邮箱日志.xls", "数据", MailLogExcelVO.class, datas); - } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogBaseVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogBaseVO.java old mode 100644 new mode 100755 index 04679c7f0..4a06fb893 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogBaseVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogBaseVO.java @@ -1,46 +1,76 @@ package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import io.swagger.annotations.*; +import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; -import java.sql.Timestamp; - import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -@ApiModel("管理后台 - 邮箱日志基类 Base VO") +/** +* 邮件日志 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ @Data public class MailLogBaseVO { - @ApiModelProperty(value = "邮箱" , required = false , example = "yudaoyuanma@123.com") - private String from; + @ApiModelProperty(value = "用户编号", example = "30883") + private Long userId; - @ApiModelProperty(value = "模版编号" , required = false , example = "templeId") - private String templateId; + @ApiModelProperty(value = "用户类型", example = "2", notes = "参见 UserTypeEnum 枚举") + private Byte userType; - @ApiModelProperty(value = "模版code" , required = false , example = "templeCode") + @ApiModelProperty(value = "接收邮箱地址", required = true, example = "76854@qq.com") + @NotNull(message = "接收邮箱地址不能为空") + private String toMail; + + @ApiModelProperty(value = "邮箱账号编号", required = true, example = "18107") + @NotNull(message = "邮箱账号编号不能为空") + private Long accountId; + + @ApiModelProperty(value = "发送邮箱地址", required = true, example = "85757@qq.com") + @NotNull(message = "发送邮箱地址不能为空") + private String fromMail; + + @ApiModelProperty(value = "模板编号", required = true, example = "5678") + @NotNull(message = "模板编号不能为空") + private Long templateId; + + @ApiModelProperty(value = "模板编码", required = true, example = "test_01") + @NotNull(message = "模板编码不能为空") private String templateCode; - @ApiModelProperty(value = "标题" , required = false , example = "芋道源码") - private String title; + @ApiModelProperty(value = "模版发送人名称", example = "李四") + private String templateNickname; - @ApiModelProperty(value = "内容" , required = false , example = "遇到源码") - private String content; + @ApiModelProperty(value = "邮件标题", required = true, example = "测试标题") + @NotNull(message = "邮件标题不能为空") + private String templateTitle; - @ApiModelProperty(value = "收件人" , required = false , example = "yudaoyuanma@456.com") - private String to; + @ApiModelProperty(value = "邮件内容", required = true, example = "测试内容") + @NotNull(message = "邮件内容不能为空") + private String templateContent; + @ApiModelProperty(value = "邮件参数", required = true) + @NotNull(message = "邮件参数不能为空") + private Map templateParams; + + @ApiModelProperty(value = "发送状态", required = true, example = "1", notes = "参见 MailSendStatusEnum 枚举") + @NotNull(message = "发送状态不能为空") + private Byte sendStatus; + + @ApiModelProperty(value = "发送时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "发送时间" , required = false , example = "2022-03-26 03:45:20") - private Timestamp sendTime; + private LocalDateTime sendTime; - @ApiModelProperty(value = "发送状态" , required = false , example = "1") - private Boolean sendStatus; + @ApiModelProperty(value = "发送返回的消息 ID", example = "28568") + private String sendMessageId; - @ApiModelProperty(value = "发送结果" , required = false , example = "yudaoyuanma@123.com") - private String sendResult; + @ApiModelProperty(value = "发送异常") + private String sendException; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogExcelVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogExcelVO.java deleted file mode 100644 index d341ce678..000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogExcelVO.java +++ /dev/null @@ -1,42 +0,0 @@ -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log; - -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.annotations.ApiModel; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.sql.Timestamp; -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel("管理后台 - 邮箱日志导出 Request VO") -@Data -public class MailLogExcelVO { - - @ExcelProperty(value = "邮箱" ) - private String from; - - @ExcelProperty(value = "模版编号" ) - private String templeCode; - - @ExcelProperty(value = "标题") - private String title; - - @ExcelProperty(value = "内容") - private String content; - - @ExcelProperty(value = "收件人" ) - private String to; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ExcelProperty(value = "发送时间" ) - private Date sendTime; - - @ExcelProperty(value = "发送状态") - private Integer sendStatus; - - @ExcelProperty(value = "发送结果") - private String sendResult; - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogExportReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogExportReqVO.java deleted file mode 100644 index 7f737ae4b..000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogExportReqVO.java +++ /dev/null @@ -1,9 +0,0 @@ -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log; - -import io.swagger.annotations.ApiModel; -import lombok.Data; - -@ApiModel("管理后台 - 邮箱日志导出 Request VO") -@Data -public class MailLogExportReqVO extends MailLogPageReqVO { -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogPageReqVO.java index 680fe6d1f..77b632e02 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogPageReqVO.java @@ -9,6 +9,7 @@ import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; import java.sql.Timestamp; +import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -18,33 +19,26 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ToString(callSuper = true) public class MailLogPageReqVO extends PageParam { - // TODO @wangjingyi:required 为 false 时,它是默认值,所以不用谢 DONE + @ApiModelProperty(value = "用户编号", example = "30883") + private Long userId; - @ApiModelProperty(value = "邮箱" , example = "yudaoyuanma@123.com") - private String from; + @ApiModelProperty(value = "用户类型", example = "2", notes = "参见 UserTypeEnum 枚举") + private Byte userType; - @ApiModelProperty(value = "模版编号" , required = false , example = "templeId") - private String templateId; + @ApiModelProperty(value = "接收邮箱地址", example = "76854@qq.com", notes = "模糊匹配") + private String toMail; - @ApiModelProperty(value = "模版code" , required = false , example = "templeCode") - private String templateCode; + @ApiModelProperty(value = "邮箱账号编号", example = "18107") + private Long accountId; - @ApiModelProperty(value = "标题" , required = false , example = "芋道源码") - private String title; + @ApiModelProperty(value = "模板编号", example = "5678") + private Long templateId; - @ApiModelProperty(value = "内容" , required = false , example = "遇到源码") - private String content; - - @ApiModelProperty(value = "收件人" , required = false , example = "yudaoyuanma@456.com") - private String to; + @ApiModelProperty(value = "发送状态", example = "1", notes = "参见 MailSendStatusEnum 枚举") + private Integer sendStatus; + @ApiModelProperty(value = "发送时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "发送时间" , required = false , example = "2022-03-26 03:45:20") - private Timestamp sendTime; + private LocalDateTime[] sendTime; - @ApiModelProperty(value = "发送状态" , required = false , example = "1") - private Boolean sendStatus; - - @ApiModelProperty(value = "发送结果" , required = false , example = "yudaoyuanma@123.com") - private String sendResult; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogRespVO.java old mode 100644 new mode 100755 index 024e075f4..b0e10355a --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogRespVO.java @@ -1,44 +1,19 @@ package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; +import lombok.*; +import java.time.LocalDateTime; +import io.swagger.annotations.*; -import java.sql.Timestamp; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel("管理后台 - 邮箱日志返回 Request VO") +@ApiModel("管理后台 - 邮件日志 Response VO") @Data -public class MailLogRespVO { +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MailLogRespVO extends MailLogBaseVO { - @ApiModelProperty(value = "邮箱" , required = false , example = "yudaoyuanma@123.com") - private String from; + @ApiModelProperty(value = "编号", required = true, example = "31020") + private Long id; - @ApiModelProperty(value = "模版编号" , required = false , example = "templeId") - private String templateId; - - @ApiModelProperty(value = "模版code" , required = false , example = "templeCode") - private String templateCode; - - @ApiModelProperty(value = "标题" , required = false , example = "芋道源码") - private String title; - - @ApiModelProperty(value = "内容" , required = false , example = "遇到源码") - private String content; - - @ApiModelProperty(value = "收件人" , required = false , example = "yudaoyuanma@456.com") - private String to; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "发送时间" , required = false , example = "2022-03-26 03:45:20") - private Timestamp sendTime; - - @ApiModelProperty(value = "发送状态" , required = false , example = "1") - private Integer sendStatus; - - @ApiModelProperty(value = "发送结果" , required = false , example = "yudaoyuanma@123.com") - private String sendResult; + @ApiModelProperty(value = "创建时间", required = true) + private LocalDateTime createTime; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailAccountConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailAccountConvert.java index 4c3fec628..d05726167 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailAccountConvert.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailAccountConvert.java @@ -1,18 +1,16 @@ package cn.iocoder.yudao.module.system.convert.mail; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.mail.MailAccount; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountBaseVO; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountRespVO; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountSimpleRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; -import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import java.util.HashMap; import java.util.List; -import java.util.Map; @Mapper public interface MailAccountConvert { @@ -27,25 +25,11 @@ public interface MailAccountConvert { List convertList02(List list); - // TODO 芋艿:改下 - default MailAccount convertAccount(MailSendMessage bean) { - return new MailAccount() - .setHost(bean.getHost()) - .setPort(bean.getPort()) - .setAuth(true) - .setFrom(bean.getMail()) - .setUser(bean.getUsername()) - .setPass(bean.getPassword()) - .setSslEnable(bean.getSslEnable()); - } - - // TODO 芋艿:改下 - default Map convertToMap(MailAccountDO mailAccountDO , String content) { - Map map = new HashMap<>(); - map.put("from_address" , mailAccountDO.getMail()); - map.put("username" , mailAccountDO.getUsername()); - map.put("content" , content); - return map; + default MailAccount convert(MailAccountDO account, String nickname) { + String from = StrUtil.isNotEmpty(nickname) ? nickname + " <" + account.getMail() + ">" : account.getMail(); + return new MailAccount().setFrom(from).setAuth(true) + .setUser(account.getUsername()).setPass(account.getPassword()) + .setHost(account.getHost()).setPort(account.getPort()).setSslEnable(account.getSslEnable()); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailLogConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailLogConvert.java index 417550886..f4a729c5c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailLogConvert.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailLogConvert.java @@ -1,19 +1,16 @@ package cn.iocoder.yudao.module.system.convert.mail; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogExcelVO; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import java.util.List; - @Mapper public interface MailLogConvert { + MailLogConvert INSTANCE = Mappers.getMapper(MailLogConvert.class); PageResult convertPage(PageResult pageResult); - List convertList(List list); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java index 97a9a2105..e2b2c3cc9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java @@ -114,8 +114,8 @@ public class MailLogDO extends BaseDO implements Serializable { */ private String sendMessageId; /** - * 发送结果 + * 发送异常 */ - private String sendResult; + private String sendException; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailLogMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailLogMapper.java index a8b8ccf61..38be2dbb3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailLogMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailLogMapper.java @@ -2,41 +2,25 @@ package cn.iocoder.yudao.module.system.dal.mysql.mail; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogExportReqVO; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO; import org.apache.ibatis.annotations.Mapper; -import java.util.List; @Mapper public interface MailLogMapper extends BaseMapperX { - default PageResult selectPage(MailLogPageReqVO pageVO){ - return selectPage(pageVO , new QueryWrapperX() - .eqIfPresent("from", pageVO.getFrom()) - .eqIfPresent("templeCode", pageVO.getTemplateCode()) - .likeIfPresent("title" , pageVO.getTitle()) - .likeIfPresent("content" , pageVO.getContent()) - .eqIfPresent("to", pageVO.getTo()) - .eqIfPresent("sendTime" , pageVO.getSendTime()) - .eqIfPresent("sendStatus" , pageVO.getSendStatus()) - .eqIfPresent("sendResult" , pageVO.getSendResult()) - .orderByDesc("sendTime") - ); - }; + default PageResult selectPage(MailLogPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MailLogDO::getUserId, reqVO.getUserId()) + .eqIfPresent(MailLogDO::getUserType, reqVO.getUserType()) + .likeIfPresent(MailLogDO::getToMail, reqVO.getToMail()) + .eqIfPresent(MailLogDO::getAccountId, reqVO.getAccountId()) + .likeIfPresent(MailLogDO::getFromMail, reqVO.getFromMail()) + .eqIfPresent(MailLogDO::getTemplateId, reqVO.getTemplateId()) + .eqIfPresent(MailLogDO::getSendStatus, reqVO.getSendStatus()) + .betweenIfPresent(MailLogDO::getSendTime, reqVO.getSendTime()) + .orderByDesc(MailLogDO::getId)); + } - default List selectList(MailLogExportReqVO exportReqVO){ - return selectList(new QueryWrapperX() - .eqIfPresent("from", exportReqVO.getFrom()) - .eqIfPresent("templeCode", exportReqVO.getTemplateCode()) - .likeIfPresent("title" , exportReqVO.getTitle()) - .likeIfPresent("content" , exportReqVO.getContent()) - .eqIfPresent("to", exportReqVO.getTo()) - .eqIfPresent("sendTime" , exportReqVO.getSendTime()) - .eqIfPresent("sendStatus" , exportReqVO.getSendStatus()) - .eqIfPresent("sendResult" , exportReqVO.getSendResult()) - .orderByDesc("sendTime") - ); - }; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogService.java index a92711a17..859b93c75 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogService.java @@ -1,13 +1,11 @@ package cn.iocoder.yudao.module.system.service.mail; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogExportReqVO; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; -import java.util.List; import java.util.Map; /** @@ -26,42 +24,30 @@ public interface MailLogService { */ PageResult getMailLogPage(MailLogPageReqVO pageVO); - /** - * 邮件日志数组信息 - * - * @param exportReqVO 导出筛选请求 - * @return 导出的日志数据 - */ - List getMailLogList(MailLogExportReqVO exportReqVO); - /** * 创建邮件日志 * * @param userId 用户编码 * @param userType 用户类型 - * @param to 收件人 - * @param mailAccountDO 邮件账号信息 + * @param toMail 收件人邮件 + * @param account 邮件账号信息 * @param template 模版信息 * @param templateContent 模版内容 * @param templateParams 模版参数 * @param isSend 是否发送成功 + * @return 日志编号 */ - Long createMailLog(Long userId,Integer userType,String to,MailAccountDO mailAccountDO, MailTemplateDO template , String templateContent, Map templateParams, Boolean isSend); + Long createMailLog(Long userId,Integer userType, String toMail, + MailAccountDO account, MailTemplateDO template , + String templateContent, Map templateParams, Boolean isSend); /** * 更新邮件发送结果 * - * @param logId 发送日志Id - * @param result 发送结果 默认返回messageId + * @param logId 日志编号 + * @param messageId 发送后的消息编号 + * @param exception 发送异常 */ - void updateMailSendResult(Long logId, String result); - - /** - * 更新邮件发送结果 - * - * @param logId 发送日志Id - * @param exception 发送结果 - */ - void updateFailMailSendResult(Long logId, String exception); + void updateMailSendResult(Long logId, String messageId, Exception exception); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImpl.java index 024db9671..997eb3d88 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImpl.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.system.service.mail; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogExportReqVO; import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO; @@ -13,10 +12,11 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.Date; -import java.util.List; import java.util.Map; import java.util.Objects; +import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage; + /** * 邮件日志 Service 实现类 * @@ -35,11 +35,6 @@ public class MailLogServiceImpl implements MailLogService { return mailLogMapper.selectPage(pageVO); } - @Override - public List getMailLogList(MailLogExportReqVO exportReqVO) { - return mailLogMapper.selectList(exportReqVO); - } - @Override public Long createMailLog(Long userId, Integer userType, String toMail, MailAccountDO account, MailTemplateDO template, @@ -61,20 +56,18 @@ public class MailLogServiceImpl implements MailLogService { return logDO.getId(); } - // TODO @wangjingyi:还是加几个字段哈,日志上。sendStatus,成功、失败;messageId 消息标号。sendException 记录发送的异常。这样界面才好筛选邮件的发送结果。DONE @Override - public void updateMailSendResult(Long logId, String result) { - MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); - logDOBuilder.id(logId).sendTime(new Date()).sendResult(result).sendMessageId(result).sendStatus(MailSendStatusEnum.SUCCESS.getStatus()); - MailLogDO mailLogDO = logDOBuilder.build(); - mailLogMapper.updateById(mailLogDO); + public void updateMailSendResult(Long logId, String messageId, Exception exception) { + // 1. 成功 + if (exception == null) { + mailLogMapper.updateById(new MailLogDO().setId(logId).setSendTime(new Date()) + .setSendStatus(MailSendStatusEnum.SUCCESS.getStatus()).setSendMessageId(messageId)); + return; + } + // 2. 失败 + mailLogMapper.updateById(new MailLogDO().setId(logId).setSendTime(new Date()) + .setSendStatus(MailSendStatusEnum.FAILURE.getStatus()).setSendException(getRootCauseMessage(exception))); + } - @Override - public void updateFailMailSendResult(Long logId, String exception) { - MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); - logDOBuilder.id(logId).sendTime(new Date()).sendResult(exception).sendStatus(MailSendStatusEnum.FAILURE.getStatus()); - MailLogDO mailLogDO = logDOBuilder.build(); - mailLogMapper.updateById(mailLogDO); - } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java index 8a8308c09..57fbf5c29 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java @@ -9,14 +9,9 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; -import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; -import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper; import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; import cn.iocoder.yudao.module.system.mq.producer.mail.MailProducer; -import cn.iocoder.yudao.module.system.service.mail.MailLogService; -import cn.iocoder.yudao.module.system.service.mail.MailSendService; -import cn.iocoder.yudao.module.system.service.mail.MailTemplateService; import cn.iocoder.yudao.module.system.service.member.MemberService; import cn.iocoder.yudao.module.system.service.user.AdminUserService; import com.google.common.annotations.VisibleForTesting; @@ -111,15 +106,18 @@ public class MailSendServiceImpl implements MailSendService { @Override public void doSendMail(MailSendMessage message) { - // 装载账号信息 - MailAccount mailAccount = MailAccountConvert.INSTANCE.convertAccount(message); - // 发送邮件 + // 1. 创建发送账号 + MailAccountDO account = checkMailAccountValid(message.getAccountId()); + MailAccount mailAccount = MailAccountConvert.INSTANCE.convert(account, message.getNickname()); + // 2. 发送邮件 try { String messageId = MailUtil.send(mailAccount, message.getMail(), message.getTitle(), message.getContent(),true); - mailLogService.updateMailSendResult(message.getLogId() , messageId); - } catch (Exception e){ - mailLogService.updateFailMailSendResult(message.getLogId() , e.getMessage()); + // 3. 更新结果(成功) + mailLogService.updateMailSendResult(message.getLogId(), messageId, null); + } catch (Exception e) { + // 3. 更新结果(异常) + mailLogService.updateMailSendResult(message.getLogId(), null, e); } } @@ -170,4 +168,5 @@ public class MailSendServiceImpl implements MailSendService { return new KeyValue<>(key, value); }).collect(Collectors.toList()); } + } diff --git a/yudao-ui-admin/src/api/system/mail/log.js b/yudao-ui-admin/src/api/system/mail/log.js new file mode 100755 index 000000000..05215259a --- /dev/null +++ b/yudao-ui-admin/src/api/system/mail/log.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 获得邮件日志 +export function getMailLog(id) { + return request({ + url: '/system/mail-log/get?id=' + id, + method: 'get' + }) +} + +// 获得邮件日志分页 +export function getMailLogPage(query) { + return request({ + url: '/system/mail-log/page', + method: 'get', + params: query + }) +} diff --git a/yudao-ui-admin/src/utils/dict.js b/yudao-ui-admin/src/utils/dict.js index ebee669f8..22c0ef40c 100644 --- a/yudao-ui-admin/src/utils/dict.js +++ b/yudao-ui-admin/src/utils/dict.js @@ -25,6 +25,7 @@ export const DICT_TYPE = { SYSTEM_SMS_RECEIVE_STATUS: 'system_sms_receive_status', SYSTEM_ERROR_CODE_TYPE: 'system_error_code_type', SYSTEM_OAUTH2_GRANT_TYPE: 'system_oauth2_grant_type', + SYSTEM_MAIL_SEND_STATUS: 'system_mail_send_status', // ========== INFRA 模块 ========== INFRA_BOOLEAN_STRING: 'infra_boolean_string', diff --git a/yudao-ui-admin/src/views/system/mail/log/index.vue b/yudao-ui-admin/src/views/system/mail/log/index.vue new file mode 100755 index 000000000..efaac16ff --- /dev/null +++ b/yudao-ui-admin/src/views/system/mail/log/index.vue @@ -0,0 +1,225 @@ + + + diff --git a/yudao-ui-admin/src/views/system/mail/template/index.vue b/yudao-ui-admin/src/views/system/mail/template/index.vue index 690e65fbb..10d71a9bd 100755 --- a/yudao-ui-admin/src/views/system/mail/template/index.vue +++ b/yudao-ui-admin/src/views/system/mail/template/index.vue @@ -44,7 +44,7 @@ - + diff --git a/yudao-ui-admin/src/views/system/sms/smsLog.vue b/yudao-ui-admin/src/views/system/sms/smsLog.vue index 196abd769..f9b2825ba 100644 --- a/yudao-ui-admin/src/views/system/sms/smsLog.vue +++ b/yudao-ui-admin/src/views/system/sms/smsLog.vue @@ -94,7 +94,7 @@