From e46f74096736c408328cf588e55ea2152f436de4 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Mon, 04 Mar 2024 16:00:00 +0800
Subject: [PATCH] 邮箱管理

---
 src/main/java/org/springblade/modules/email/service/IEmailAccountService.java                  |    4 
 src/main/java/org/springblade/modules/email/service/impl/EmailTemplateServiceImpl.java         |   71 ++++++
 src/main/java/org/springblade/modules/email/controller/EmailTemplateController.java            |  126 +++++++++++
 src/main/java/org/springblade/modules/email/wrapper/EmailWrapper.java                          |   23 -
 src/main/java/org/springblade/modules/email/service/IEmailTemplateService.java                 |   60 +++++
 src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java          |   22 +
 src/main/java/org/springblade/modules/email/dto/EmailTemplateDTO.java                          |   34 +++
 src/main/java/org/springblade/modules/email/wrapper/EmailTemplateWrapper.java                  |   50 ++++
 src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java |   27 +
 src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.xml                     |   57 +++++
 src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.java                    |   59 +++++
 src/main/java/org/springblade/modules/email/vo/EmailVO.java                                    |    6 
 src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java                    |    6 
 src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java                    |   79 +++++++
 src/main/java/org/springblade/modules/email/vo/EmailTemplateVO.java                            |   35 +++
 15 files changed, 623 insertions(+), 36 deletions(-)

diff --git a/src/main/java/org/springblade/modules/email/controller/EmailTemplateController.java b/src/main/java/org/springblade/modules/email/controller/EmailTemplateController.java
new file mode 100644
index 0000000..4e4a6c4
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/controller/EmailTemplateController.java
@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import org.springblade.modules.email.vo.EmailTemplateVO;
+import org.springblade.modules.email.wrapper.EmailTemplateWrapper;
+import org.springblade.modules.email.service.IEmailTemplateService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 邮件模版表 控制器
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("blade-email/emailTemplate")
+@Api(value = "邮件模版表", tags = "邮件模版表接口")
+public class EmailTemplateController extends BladeController {
+
+	private final IEmailTemplateService emailTemplateService;
+
+	/**
+	 * 邮件模版表 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入emailTemplate")
+	public R<EmailTemplateVO> detail(EmailTemplateEntity emailTemplate) {
+		EmailTemplateEntity detail = emailTemplateService.getOne(Condition.getQueryWrapper(emailTemplate));
+		return R.data(EmailTemplateWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 邮件模版表 分页
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入emailTemplate")
+	public R<IPage<EmailTemplateVO>> list(EmailTemplateEntity emailTemplate, Query query) {
+		IPage<EmailTemplateEntity> pages = emailTemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(emailTemplate));
+		return R.data(EmailTemplateWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 邮件模版表 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入emailTemplate")
+	public R<IPage<EmailTemplateVO>> page(EmailTemplateVO emailTemplate, Query query) {
+		IPage<EmailTemplateVO> pages = emailTemplateService.selectEmailTemplatePage(Condition.getPage(query), emailTemplate);
+		return R.data(pages);
+	}
+
+	/**
+	 * 邮件模版表 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入emailTemplate")
+	public R save(@Valid @RequestBody EmailTemplateEntity emailTemplate) {
+		return R.status(emailTemplateService.save(emailTemplate));
+	}
+
+	/**
+	 * 邮件模版表 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入emailTemplate")
+	public R update(@Valid @RequestBody EmailTemplateEntity emailTemplate) {
+		return R.status(emailTemplateService.updateById(emailTemplate));
+	}
+
+	/**
+	 * 邮件模版表 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入emailTemplate")
+	public R submit(@Valid @RequestBody EmailTemplateEntity emailTemplate) {
+		return R.status(emailTemplateService.saveOrUpdate(emailTemplate));
+	}
+
+	/**
+	 * 邮件模版表 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(emailTemplateService.removeBatchByIds(Func.toLongList(ids)));
+	}
+
+
+}
diff --git a/src/main/java/org/springblade/modules/email/dto/EmailTemplateDTO.java b/src/main/java/org/springblade/modules/email/dto/EmailTemplateDTO.java
new file mode 100644
index 0000000..2677b0a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/dto/EmailTemplateDTO.java
@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.dto;
+
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 邮件模版表 数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class EmailTemplateDTO extends EmailTemplateEntity {
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java b/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java
new file mode 100644
index 0000000..02a20e0
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java
@@ -0,0 +1,79 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 邮件模版表 实体类
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+@Data
+@TableName("blade_email_template")
+@ApiModel(value = "EmailTemplate对象", description = "邮件模版表")
+public class EmailTemplateEntity{
+
+	private static final long serialVersionUID = 1L;
+
+
+	/** id */
+	@ApiModelProperty(value = "主键ID", example = "")
+	private Integer id;
+
+	/** 标题 */
+	@ApiModelProperty(value = "标题", example = "")
+	@TableField("title")
+	private String title;
+
+	/** 邮件内容 */
+	@ApiModelProperty(value = "邮件内容", example = "")
+	@TableField("content")
+	private String content;
+
+	/** 创建时间 */
+	@ApiModelProperty(value = "创建时间", example = "")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	@TableField("create_time")
+	private Date createTime;
+
+	/** 更新时间 */
+	@ApiModelProperty(value = "更新时间", example = "")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	@TableField("update_time")
+	private Date updateTime;
+
+	/** 是否已删除 */
+	@ApiModelProperty(value = "是否已删除", example = "")
+	@TableField("is_delete")
+	private Integer isDelete;
+
+	/** 创建人 */
+	@ApiModelProperty(value = "创建人", example = "")
+	@TableField("create_by")
+	private Long createBy;
+}
diff --git a/src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.java b/src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.java
new file mode 100644
index 0000000..29b0647
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.java
@@ -0,0 +1,59 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.mapper;
+
+import org.springblade.modules.email.dto.EmailTemplateDTO;
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import org.springblade.modules.email.vo.EmailTemplateVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 邮件模版表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+public interface EmailTemplateMapper extends BaseMapper<EmailTemplateEntity> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param emailTemplate
+	 * @return
+	 */
+	List<EmailTemplateVO> selectEmailTemplatePage(IPage page, EmailTemplateVO emailTemplate);
+
+
+	/**
+	 * 查询
+	 *
+	 * @param id ID
+	 * @return
+	 */
+	public EmailTemplateDTO selectBladeEmailTemplateById(Integer id);
+
+	/**
+	 * 查询列表
+	 *
+	 * @param bladeEmailTemplateDTO
+	 * @return 集合
+	 */
+	public List<EmailTemplateDTO> selectBladeEmailTemplateList(EmailTemplateDTO bladeEmailTemplateDTO);
+}
diff --git a/src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.xml b/src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.xml
new file mode 100644
index 0000000..e02c508
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/mapper/EmailTemplateMapper.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.email.mapper.EmailTemplateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="emailTemplateResultMap" type="org.springblade.modules.email.entity.EmailTemplateEntity">
+    </resultMap>
+
+
+    <select id="selectEmailTemplatePage" resultMap="emailTemplateResultMap">
+        select * from blade_email_template where is_deleted = 0
+    </select>
+
+    <resultMap type="org.springblade.modules.email.dto.EmailTemplateDTO" id="BladeEmailTemplateDTOResult">
+        <result property="id"    column="id"    />
+        <result property="title"    column="title"    />
+        <result property="content"    column="content"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="isDelete"    column="is_delete"    />
+        <result property="createBy"    column="create_by"    />
+    </resultMap>
+
+    <sql id="selectBladeEmailTemplate">
+        select
+            id,
+            title,
+            content,
+            create_time,
+            update_time,
+            is_delete,
+            create_by
+        from
+            blade_email_template
+    </sql>
+
+    <select id="selectBladeEmailTemplateById" parameterType="int" resultMap="BladeEmailTemplateDTOResult">
+        <include refid="selectBladeEmailTemplate"/>
+        where
+        id = #{id}
+    </select>
+
+    <select id="selectBladeEmailTemplateList" parameterType="org.springblade.modules.email.dto.EmailTemplateDTO" resultMap="BladeEmailTemplateDTOResult">
+        <include refid="selectBladeEmailTemplate"/>
+        <where>
+            <if test="id != null "> and id = #{id}</if>
+            <if test="title != null  and title != ''"> and title = #{title}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="createTime != null "> and create_time = #{createTime}</if>
+            <if test="updateTime != null "> and update_time = #{updateTime}</if>
+            <if test="isDelete != null "> and is_delete = #{isDelete}</if>
+            <if test="createBy != null "> and create_by = #{createBy}</if>
+        </where>
+    </select>
+
+
+</mapper>
diff --git a/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java b/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java
index 536253a..d7bb95f 100644
--- a/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java
+++ b/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java
@@ -8,7 +8,7 @@
 public interface IEmailAccountService {
 
 	/**用于注册成功后发送邮件 @param account 账号信息*/
-	void senderEmail(EmailAccount account);
+	Boolean senderEmail(EmailAccount account);
 
-    void sendMessageUserEmail(String title, String content, List<MessageUser> messageUserList);
+	Boolean sendMessageUserEmail(String title, String content, List<MessageUser> messageUserList);
 }
diff --git a/src/main/java/org/springblade/modules/email/service/IEmailTemplateService.java b/src/main/java/org/springblade/modules/email/service/IEmailTemplateService.java
new file mode 100644
index 0000000..142069d
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/service/IEmailTemplateService.java
@@ -0,0 +1,60 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.modules.email.dto.EmailTemplateDTO;
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import org.springblade.modules.email.vo.EmailTemplateVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 邮件模版表 服务类
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+public interface IEmailTemplateService extends IService<EmailTemplateEntity> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param emailTemplate
+	 * @return
+	 */
+	IPage<EmailTemplateVO> selectEmailTemplatePage(IPage<EmailTemplateVO> page, EmailTemplateVO emailTemplate);
+	/**
+	 * 查询
+	 *
+	 * @param id ID
+	 * @return
+	 */
+	public EmailTemplateDTO selectBladeEmailTemplateById(Integer id);
+
+	/**
+	 * 查询列表
+	 *
+	 * @param bladeEmailTemplateDTO
+	 * @return 集合
+	 */
+	public List<EmailTemplateDTO> selectBladeEmailTemplateList(EmailTemplateDTO bladeEmailTemplateDTO);
+
+}
diff --git a/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java b/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
index 37b6db1..1bf4c3f 100644
--- a/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
+++ b/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
@@ -1,6 +1,9 @@
 package org.springblade.modules.email.service.impl;
 
+import com.xxl.job.core.util.DateUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.modules.email.config.MailProperties;
 import org.springblade.modules.email.config.MailSenderConfig;
@@ -16,12 +19,15 @@
 import javax.annotation.Resource;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
+import java.io.File;
 import java.util.List;
 import java.util.stream.Collectors;
 
 @Service
 @Slf4j
 public class EmailAccountServiceImpl implements IEmailAccountService {
+
+	private static Logger logger = LoggerFactory.getLogger(EmailAccountServiceImpl.class);
 
 	@Autowired
 	MailSenderConfig senderConfig;
@@ -30,11 +36,10 @@
 	MailProperties mailProperties;
 
 
-
 	@Override
-	public void senderEmail(EmailAccount account) {
+	public Boolean senderEmail(EmailAccount account) {
 
-		if (account.getEmails().size()>0){
+		if (account.getEmails().size() > 0) {
 			log.info(Thread.currentThread().getName());
 			JavaMailSenderImpl javaMailSender = senderConfig.getSender();
 			//一个复杂的邮件
@@ -46,22 +51,25 @@
 				//主题(标题)
 				helper.setSubject(account.getSubject());
 
-				helper.setText(account.getContent(),true);
+				helper.setText(account.getContent(), true);
 
 				helper.setTo(account.getEmails().toArray(new String[account.getEmails().size()]));
 
 				helper.setFrom(javaMailSender.getUsername());
 
 				javaMailSender.send(message);
+				return true;
 
 			} catch (MessagingException e) {
-				e.printStackTrace();
+				logger.error("邮件发送失败!", e);
+				return false;
 			}
 		}
+		return false;
 	}
 
 	@Override
-	public void sendMessageUserEmail(String title, String content, List<MessageUser> messageUserList) {
+	public Boolean sendMessageUserEmail(String title, String content, List<MessageUser> messageUserList) {
 
 		List<String> emails = messageUserList.stream().filter(e -> StringUtil.isNotBlank(e.getEmail())).map(MessageUser::getEmail).collect(Collectors.toList());
 
@@ -71,6 +79,6 @@
 		emailAccount.setSubject(title);
 		emailAccount.setContent(content);
 
-		senderEmail(emailAccount);
+		return  senderEmail(emailAccount);
 	}
 }
diff --git a/src/main/java/org/springblade/modules/email/service/impl/EmailTemplateServiceImpl.java b/src/main/java/org/springblade/modules/email/service/impl/EmailTemplateServiceImpl.java
new file mode 100644
index 0000000..76a7a9a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/service/impl/EmailTemplateServiceImpl.java
@@ -0,0 +1,71 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.modules.email.dto.EmailTemplateDTO;
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import org.springblade.modules.email.vo.EmailTemplateVO;
+import org.springblade.modules.email.mapper.EmailTemplateMapper;
+import org.springblade.modules.email.service.IEmailTemplateService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 邮件模版表 服务实现类
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+@Service
+public class EmailTemplateServiceImpl extends ServiceImpl<EmailTemplateMapper, EmailTemplateEntity> implements IEmailTemplateService {
+
+	@Override
+	public IPage<EmailTemplateVO> selectEmailTemplatePage(IPage<EmailTemplateVO> page, EmailTemplateVO emailTemplate) {
+		return page.setRecords(baseMapper.selectEmailTemplatePage(page, emailTemplate));
+	}
+
+	/**
+	 * 查询
+	 *
+	 * @param id ID
+	 * @return
+	 */
+	@Override
+	public EmailTemplateDTO selectBladeEmailTemplateById(Integer id)
+	{
+		return this.baseMapper.selectBladeEmailTemplateById(id);
+	}
+
+	/**
+	 * 查询列表
+	 *
+	 * @param bladeEmailTemplateDTO
+	 * @return 集合
+	 */
+	@Override
+	public List<EmailTemplateDTO> selectBladeEmailTemplateList(EmailTemplateDTO bladeEmailTemplateDTO)
+	{
+		return this.baseMapper.selectBladeEmailTemplateList(bladeEmailTemplateDTO);
+	}
+
+
+
+}
diff --git a/src/main/java/org/springblade/modules/email/vo/EmailTemplateVO.java b/src/main/java/org/springblade/modules/email/vo/EmailTemplateVO.java
new file mode 100644
index 0000000..aa10266
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/vo/EmailTemplateVO.java
@@ -0,0 +1,35 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.vo;
+
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 邮件模版表 视图实体类
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class EmailTemplateVO extends EmailTemplateEntity {
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/src/main/java/org/springblade/modules/email/vo/EmailVO.java b/src/main/java/org/springblade/modules/email/vo/EmailVO.java
index efb6495..cad0b24 100644
--- a/src/main/java/org/springblade/modules/email/vo/EmailVO.java
+++ b/src/main/java/org/springblade/modules/email/vo/EmailVO.java
@@ -22,16 +22,14 @@
 import lombok.EqualsAndHashCode;
 
 /**
- * 邮件配置 视图实体类
+ * 邮件模版表 视图实体类
  *
  * @author BladeX
- * @since 2024-01-18
+ * @since 2024-03-04
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class EmailVO extends EmailEntity {
 	private static final long serialVersionUID = 1L;
-
-	private String statusName;
 
 }
diff --git a/src/main/java/org/springblade/modules/email/wrapper/EmailTemplateWrapper.java b/src/main/java/org/springblade/modules/email/wrapper/EmailTemplateWrapper.java
new file mode 100644
index 0000000..56f5aae
--- /dev/null
+++ b/src/main/java/org/springblade/modules/email/wrapper/EmailTemplateWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.email.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.email.entity.EmailTemplateEntity;
+import org.springblade.modules.email.vo.EmailTemplateVO;
+import java.util.Objects;
+
+/**
+ * 邮件模版表 包装类,返回视图层所需的字段
+ *
+ * @author BladeX
+ * @since 2024-03-04
+ */
+public class EmailTemplateWrapper extends BaseEntityWrapper<EmailTemplateEntity, EmailTemplateVO>  {
+
+	public static EmailTemplateWrapper build() {
+		return new EmailTemplateWrapper();
+ 	}
+
+	@Override
+	public EmailTemplateVO entityVO(EmailTemplateEntity emailTemplate) {
+		EmailTemplateVO emailTemplateVO = Objects.requireNonNull(BeanUtil.copy(emailTemplate, EmailTemplateVO.class));
+
+		//User createUser = UserCache.getUser(emailTemplate.getCreateUser());
+		//User updateUser = UserCache.getUser(emailTemplate.getUpdateUser());
+		//emailTemplateVO.setCreateUserName(createUser.getName());
+		//emailTemplateVO.setUpdateUserName(updateUser.getName());
+
+		return emailTemplateVO;
+	}
+
+
+}
diff --git a/src/main/java/org/springblade/modules/email/wrapper/EmailWrapper.java b/src/main/java/org/springblade/modules/email/wrapper/EmailWrapper.java
index 6ed1295..69121d5 100644
--- a/src/main/java/org/springblade/modules/email/wrapper/EmailWrapper.java
+++ b/src/main/java/org/springblade/modules/email/wrapper/EmailWrapper.java
@@ -16,8 +16,6 @@
  */
 package org.springblade.modules.email.wrapper;
 
-import org.springblade.common.cache.DictCache;
-import org.springblade.common.enums.DictEnum;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.modules.email.entity.EmailEntity;
@@ -25,10 +23,10 @@
 import java.util.Objects;
 
 /**
- * 邮件配置 包装类,返回视图层所需的字段
+ * 邮件模版表 包装类,返回视图层所需的字段
  *
  * @author BladeX
- * @since 2024-01-18
+ * @since 2024-03-04
  */
 public class EmailWrapper extends BaseEntityWrapper<EmailEntity, EmailVO>  {
 
@@ -37,16 +35,15 @@
  	}
 
 	@Override
-	public EmailVO entityVO(EmailEntity email) {
-		EmailVO emailVO = Objects.requireNonNull(BeanUtil.copy(email, EmailVO.class));
+	public EmailVO entityVO(EmailEntity emailTemplate) {
+		EmailVO emailTemplateVO = Objects.requireNonNull(BeanUtil.copy(emailTemplate, EmailVO.class));
 
-		//User createUser = UserCache.getUser(email.getCreateUser());
-		//User updateUser = UserCache.getUser(email.getUpdateUser());
-		//emailVO.setCreateUserName(createUser.getName());
-		//emailVO.setUpdateUserName(updateUser.getName());
-		String statusName = DictCache.getValue(DictEnum.YES_NO, email.getStatus());
-		emailVO.setStatusName(statusName);
-		return emailVO;
+		//User createUser = UserCache.getUser(emailTemplate.getCreateUser());
+		//User updateUser = UserCache.getUser(emailTemplate.getUpdateUser());
+		//emailTemplateVO.setCreateUserName(createUser.getName());
+		//emailTemplateVO.setUpdateUserName(updateUser.getName());
+
+		return emailTemplateVO;
 	}
 
 
diff --git a/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java b/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java
index 2dbac16..1ca0bb6 100644
--- a/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java
+++ b/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java
@@ -44,6 +44,12 @@
 	//是否已读(1、已读;2、未读)
 	private String isRead;
 
+	// 1:待发送,2.:发送成功 3:发送失败
+	private String sendStatus;
+
+	// 重试次数
+	private String retryNumber;
+
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@ApiModelProperty("创建时间")
diff --git a/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java b/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
index 5badb91..9d1d35a 100644
--- a/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
@@ -19,7 +19,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.modules.email.service.IEmailAccountService;
 import org.springblade.modules.email.service.IEmailService;
 import org.springblade.modules.messageRecord.entity.MessageRecord;
@@ -37,6 +39,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 消息记录表 服务实现类
@@ -83,12 +86,13 @@
 			messageUser.setType(messageRecord.getType());
 			messageUser.setCreateTime(DateUtil.now());
 			messageUser.setUpdateTime(DateUtil.now());
-
-			if (messageRecord.getType().indexOf("2") > -1) {
+			messageUser.setSendStatus("1");
+			if (messageRecord.getType().indexOf("1") > -1) {
+				messageUser.setSendStatus("2");
+			} else if (messageRecord.getType().indexOf("2") > -1) {
 				messageUser.setEmail(user.getEmail());
-			}
-
-			if (messageRecord.getType().indexOf("3") > -1) {
+			} else if (messageRecord.getType().indexOf("3") > -1) {
+				messageUser.setSendStatus("2");
 				messageUser.setPhone(user.getPhone());
 			}
 
@@ -97,10 +101,14 @@
 		//在message_user表里存数据
 		boolean saveBatch = messageUserService.saveBatch(messageUserList);
 
-		if (saveBatch&&saveRecord){
+		if (saveBatch && saveRecord) {
 			if (messageRecord.getType().indexOf("2") > -1) {
-				emailAccountService.sendMessageUserEmail(messageRecord.getTitle(), messageRecord.getContent(), messageUserList);
-				return true;
+				Boolean aBoolean = emailAccountService.sendMessageUserEmail(messageRecord.getTitle(), messageRecord.getContent(), messageUserList);
+				// 邮件发送成功,更新邮件状态
+				if (aBoolean) {
+					List<MessageUser> collect = messageUserList.stream().filter(e -> StringUtil.isNotBlank(e.getEmail())).collect(Collectors.toList());
+					messageUserService.updateBatchById(collect);
+				}
 			}
 
 			if (messageRecord.getType().indexOf("3") > -1) {
@@ -120,8 +128,7 @@
 		List<MessageUser> messageUserList = messageUserService.list(new QueryWrapper<MessageUser>().eq("message_record_id", id));
 
 		if (messageRecord.getType().indexOf("2") > -1) {
-			emailAccountService.sendMessageUserEmail(messageRecord.getTitle(), messageRecord.getContent(), messageUserList);
-			return true;
+			return emailAccountService.sendMessageUserEmail(messageRecord.getTitle(), messageRecord.getContent(), messageUserList);
 		}
 
 		if (messageRecord.getType().indexOf("3") > -1) {

--
Gitblit v1.9.3