Просмотр исходного кода

feat:邮件模板配置管理功能开发

chenjianhua 1 месяц назад
Родитель
Сommit
e417a5b609

+ 25 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/EmailTemplateMapper.java

@@ -0,0 +1,25 @@
+package com.simuwang.base.mapper.daq;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.EmailTemplateDO;
+import com.simuwang.base.pojo.dto.query.EmailTemplatePageQuery;
+import com.simuwang.base.pojo.vo.StatusVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface EmailTemplateMapper extends BaseMapper<EmailTemplateDO> {
+    List<EmailTemplateDO> searchEmailTemplateList(EmailTemplatePageQuery emailTemplatePageQuery);
+
+    Long countEmailTemplateList(EmailTemplatePageQuery emailTemplatePageQuery);
+
+    EmailTemplateDO selectByCode(String templateCode);
+
+    EmailTemplateDO searchTemplateById(Integer id);
+
+    void updateOpenStatus(@Param("item") StatusVO statusVO,@Param("userId") Integer userId);
+
+    void deleteTemplateList(@Param("idList")List<Integer> idList,@Param("userId") Integer userId);
+}

+ 82 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/EmailTemplateDO.java

@@ -0,0 +1,82 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.pojo.vo.EmailTemplateVO;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("email_template")
+public class EmailTemplateDO {
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO,value = "id")
+    private Integer id;
+    /**
+     * 模板编码
+     */
+    @TableField("template_code")
+    private String templateCode;
+    /**
+     * 邮件标题
+     */
+    @TableField("email_title")
+    private String emailTitle;
+    /**
+     * 邮件正文
+     */
+    @TableField("email_body")
+    private String emailBody;
+
+    /**
+     * 开启状态1-开启,0-关闭
+     */
+    @TableField("open_status")
+    private Integer openStatus;
+    /**
+     * 有效标识,1-有效,0-无效
+     */
+    @TableField("isvalid")
+    private Integer isvalid;
+    /**
+     * 创建人ID
+     */
+    @TableField("creatorid")
+    private Integer creatorId;
+    /**
+     * 修改人ID
+     */
+    @TableField("updaterid")
+    private Integer updaterId;
+    /**
+     * 创建时间
+     */
+    @TableField("createtime")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @TableField("updatetime")
+    private Date updateTime;
+
+    public EmailTemplateVO toVO(){
+        EmailTemplateVO vo = new EmailTemplateVO();
+        vo.setId(id);
+        vo.setTemplateCode(templateCode);
+        vo.setEmailBody(this.emailBody);
+        vo.setEmailTitle(emailTitle);
+        vo.setOpenStatus(openStatus);
+        vo.setIsvalid(isvalid);
+        vo.setCreateTime(DateUtils.format(createTime, "yyyy-MM-dd HH:mm:ss"));
+        vo.setCreatorId(creatorId);
+        vo.setUpdateTime(DateUtils.format(updateTime, "yyyy-MM-dd HH:mm:ss"));
+        vo.setUpdaterId(updaterId);
+        return vo;
+    }
+}

+ 36 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/EmailTemplatePageQuery.java

@@ -0,0 +1,36 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.query.PageQuery;
+
+/**
+ * FileName: EmailTemplatePageQuery
+ * Author:   chenjianhua
+ * Date:     2024/9/25 18:48
+ * Description: ${DESCRIPTION}
+ */
+public class EmailTemplatePageQuery extends PageQuery {
+    /**
+     * 模版名称
+     */
+    private String emailTitle;
+    /**
+     * 模板类型:1-excel类型,2-正文类型
+     */
+    private Integer openStatus;
+
+    public String getEmailTitle() {
+        return emailTitle;
+    }
+
+    public void setEmailTitle(String emailTitle) {
+        this.emailTitle = emailTitle;
+    }
+
+    public Integer getOpenStatus() {
+        return openStatus;
+    }
+
+    public void setOpenStatus(Integer openStatus) {
+        this.openStatus = openStatus;
+    }
+}

+ 50 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/EmailTemplateVO.java

@@ -0,0 +1,50 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class EmailTemplateVO {
+    /**
+     * 主键ID
+     */
+    private Integer id;
+    /**
+     * 模板编码
+     */
+    private String templateCode;
+    /**
+     * 邮件标题
+     */
+    private String emailTitle;
+    /**
+     * 邮件正文
+     */
+    private String emailBody;
+
+    /**
+     * 开启状态1-开启,0-关闭
+     */
+    private Integer openStatus;
+    /**
+     * 有效标识,1-有效,0-无效
+     */
+    private Integer isvalid;
+    /**
+     * 创建人ID
+     */
+    private Integer creatorId;
+    /**
+     * 修改人ID
+     */
+    private Integer updaterId;
+    /**
+     * 创建时间
+     */
+    private String createTime;
+    /**
+     * 修改时间
+     */
+    private String updateTime;
+}

+ 1 - 1
service-base/src/main/resources/mapper/daq/EmailTemplateInfoMapper.xml

@@ -70,7 +70,7 @@
         select id,name,type,direction,start_index,end_index,description,status,isvalid,creatorid,createtime,updaterid,updatetime
         from email_template_info where isvalid=1 and id=#{id}
     </select>
-    <select id="searchTemplateByName" resultType="com.simuwang.base.pojo.dos.EmailTemplateInfoDO">
+    <select id="searchTemplateByName" resultMap="BaseResultMap">
         select id,name,type,direction,start_index,end_index,description,status,isvalid,creatorid,createtime,updaterid,updatetime
         from email_template_info where isvalid=1 and name=#{name} limit 1
     </select>

+ 71 - 0
service-base/src/main/resources/mapper/daq/EmailTemplateMapper.xml

@@ -0,0 +1,71 @@
+<?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="com.simuwang.base.mapper.daq.EmailTemplateMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.EmailTemplateDO">
+        <id column="id" property="id"/>
+        <result column="template_code" property="templateCode"/>
+        <result column="email_title" property="emailTitle"/>
+        <result column="email_body" property="emailBody"/>
+        <result column="open_status" property="openStatus"/>
+        <result column="isvalid" property="isvalid"/>
+        <result column="creatorid" property="creatorId"/>
+        <result column="createtime" property="createTime"/>
+        <result column="updaterid" property="updaterId"/>
+        <result column="updatetime" property="updateTime"/>
+    </resultMap>
+    <insert id="saveTemplateInfo"  useGeneratedKeys="true" keyProperty="id">
+        insert into email_template(template_code,email_title,email_body,open_status,isvalid,creatorid,createtime,updaterid,updatetime)
+        values
+            (#{templateCode},#{emailTitle},#{emailBody},#{openStatus},#{isvalid},#{creatorId},#{createTime},#{updaterId},#{updateTime})
+    </insert>
+    <update id="deleteTemplateList">
+        update email_template set isvalid=0,updatetime=now(),updaterid=#{userId} where isvalid=1
+        and id in
+        <foreach item="id" collection="idList" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    <update id="updateTemplateInfo">
+        update email_template set template_code=#{templateCode},email_title=#{emailTitle},email_body=#{emailBody},open_status=#{openStatus},updatetime=#{updateTime},updaterid=#{updaterId}
+        where id=#{id} and isvalid=1
+    </update>
+    <update id="updateOpenStatus">
+        update email_template set open_status =#{item.status},updatetime=now(),updaterid=#{userId} where id=#{item.id}
+    </update>
+    <select id="searchEmailTemplateList" resultMap="BaseResultMap">
+        select id,template_code,email_title,email_body,open_status,isvalid,creatorid,createtime,updaterid,updatetime
+        from email_template where isvalid=1
+        <if test="emailTitle != null and emailTitle !=''">
+            and email_title like concat('%',#{emailTitle},'%')
+        </if>
+        <if test="openStatus != null">
+            and open_status =#{openStatus}
+        </if>
+        order by updatetime desc
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countEmailTemplateList" resultType="java.lang.Long">
+        select count(1)
+        from email_template where isvalid=1
+        <if test="emailTitle != null and emailTitle !=''">
+            and email_title like concat('%',#{emailTitle},'%')
+        </if>
+        <if test="openStatus != null">
+            and open_status =#{openStatus}
+        </if>
+    </select>
+    <select id="searchTemplateById" resultMap="BaseResultMap">
+        select id,template_code,email_title,email_body,open_status,isvalid,creatorid,createtime,updaterid,updatetime
+        from email_template where isvalid=1 and id=#{id}
+    </select>
+    <select id="searchTemplateByName" resultMap="BaseResultMap">
+        select id,template_code,email_title,email_body,open_status,isvalid,creatorid,createtime,updaterid,updatetime
+        from email_template where isvalid=1 and email_title=#{emailTitle} limit 1
+    </select>
+    <select id="selectByCode" resultMap="BaseResultMap">
+        select id,template_code,email_title,email_body,open_status,isvalid,creatorid,createtime,updaterid,updatetime
+        from email_template where isvalid=1 and template_code=#{templateCode}
+    </select>
+
+
+</mapper>

+ 102 - 0
service-manage/src/main/java/com/simuwang/manage/api/emailTemplate/EmailTemplateController.java

@@ -0,0 +1,102 @@
+package com.simuwang.manage.api.emailTemplate;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.EmailTemplatePageQuery;
+import com.simuwang.base.pojo.vo.*;
+import com.simuwang.logging.SystemLog;
+import com.simuwang.manage.service.EmailTemplateService;
+import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@SystemLog(value = "邮件模版管理")
+@RestController
+@RequestMapping("/v1/email/template")
+public class EmailTemplateController {
+    @Autowired
+    private EmailTemplateService emailTemplateService;
+
+    /**
+     * 邮件模版列表查询
+     * @param emailTemplatePageQuery
+     * @return
+     */
+    @SystemLog(value = "邮件模版列表查询")
+    @RequestMapping("search-email-template-list")
+    public MybatisPage<EmailTemplateVO> searchEmailTemplateList(EmailTemplatePageQuery emailTemplatePageQuery){
+        return emailTemplateService.searchEmailTemplateList(emailTemplatePageQuery);
+    }
+
+
+    /**
+     * 批量删除模版
+     * @param idListVO
+     * @return
+     */
+    @SystemLog(value = "批量删除模版",type = SystemLog.Type.DELETE)
+    @RequestMapping("delete-email-template-list")
+    public boolean deleteEmailTemplateList(@RequestBody IdListVO idListVO){
+        emailTemplateService.deleteEmailTemplateList(idListVO);
+        return true;
+    }
+
+    /**
+     * 开启关闭状态
+     * @param statusVO
+     * @return
+     */
+    @SystemLog(value = "开启关闭状态", type = SystemLog.Type.UPDATE)
+    @PostMapping("control-template-status")
+    public ResultVo controlEmailTemplateConfig(@RequestBody StatusVO statusVO){
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        try{
+            emailTemplateService.controlEmailTemplateConfig(statusVO);
+            vo.setData(true);
+        }catch (Exception e){
+            vo.setCode(ResultCode.SAVE_FAILED.getCode());
+            vo.setMsg(e.getMessage());
+            vo.setData(false);
+        }
+        return vo;
+    }
+
+    /**
+     * 保存模版信息
+     * @param emailTemplateVO
+     * @return
+     */
+    @SystemLog(value = "保存模版信息",type = SystemLog.Type.INSERT)
+    @RequestMapping("save-email-template")
+    public ResultVo saveEmailTemplate(@RequestBody EmailTemplateVO emailTemplateVO){
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        if(!emailTemplateService.checkEmailTemplateUnique(emailTemplateVO)){
+            vo.setMsg("已存在相同的邮件模版编码,不能重复添加");
+            vo.setData(false);
+            return vo;
+        }
+        emailTemplateService.saveEmailTemplate(emailTemplateVO);
+        vo.setData(true);
+        return vo;
+    }
+
+    /**
+     * 模版编辑查询
+     * @param idVO
+     * @return
+     */
+    @SystemLog(value = "模版编辑查询")
+    @GetMapping("search-email-template-info")
+    public ResultVo searchEmailTemplate(IdVO idVO){
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        try{
+            EmailTemplateVO emailTemplateVO = emailTemplateService.searchEmailTemplate(idVO.getId());
+            vo.setData(emailTemplateVO);
+        }catch (Exception e){
+            vo.setCode(ResultCode.SAVE_FAILED.getCode());
+            vo.setData(false);
+        }
+        return vo;
+    }
+
+}

+ 21 - 0
service-manage/src/main/java/com/simuwang/manage/service/EmailTemplateService.java

@@ -0,0 +1,21 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.EmailTemplatePageQuery;
+import com.simuwang.base.pojo.vo.EmailTemplateVO;
+import com.simuwang.base.pojo.vo.IdListVO;
+import com.simuwang.base.pojo.vo.StatusVO;
+
+public interface EmailTemplateService {
+    MybatisPage<EmailTemplateVO> searchEmailTemplateList(EmailTemplatePageQuery emailTemplatePageQuery);
+
+    EmailTemplateVO searchEmailTemplate(Integer id);
+
+    void saveEmailTemplate(EmailTemplateVO emailTemplateVO);
+
+    boolean checkEmailTemplateUnique(EmailTemplateVO emailTemplateVO);
+
+    void controlEmailTemplateConfig(StatusVO statusVO);
+
+    void deleteEmailTemplateList(IdListVO idListVO);
+}

+ 77 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/EmailTemplateServiceImpl.java

@@ -0,0 +1,77 @@
+package com.simuwang.manage.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.mapper.daq.EmailTemplateMapper;
+import com.simuwang.base.pojo.dos.EmailTemplateDO;
+import com.simuwang.base.pojo.dto.query.EmailTemplatePageQuery;
+import com.simuwang.base.pojo.vo.EmailTemplateVO;
+import com.simuwang.base.pojo.vo.IdListVO;
+import com.simuwang.base.pojo.vo.StatusVO;
+import com.simuwang.manage.service.EmailTemplateService;
+import com.simuwang.shiro.utils.UserUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class EmailTemplateServiceImpl implements EmailTemplateService {
+    @Autowired
+    private EmailTemplateMapper emailTemplateMapper;
+
+    @Override
+    public MybatisPage<EmailTemplateVO> searchEmailTemplateList(EmailTemplatePageQuery emailTemplatePageQuery) {
+        List<EmailTemplateDO> emailTemplateDOList = emailTemplateMapper.searchEmailTemplateList(emailTemplatePageQuery);
+        List<EmailTemplateVO> emailTemplateVOList = emailTemplateDOList.stream().map(EmailTemplateDO::toVO).collect(Collectors.toUnmodifiableList());
+        Long total = emailTemplateMapper.countEmailTemplateList(emailTemplatePageQuery);
+        return MybatisPage.of(total, emailTemplateVOList);
+    }
+
+    @Override
+    public EmailTemplateVO searchEmailTemplate(Integer id) {
+        EmailTemplateDO emailTemplateDO = emailTemplateMapper.searchTemplateById(id);
+        return emailTemplateDO==null?null:emailTemplateDO.toVO();
+    }
+
+    @Override
+    public void saveEmailTemplate(EmailTemplateVO emailTemplateVO) {
+        EmailTemplateDO emailTemplateDO = new EmailTemplateDO();
+        BeanUtil.copyProperties(emailTemplateVO, emailTemplateDO);
+        emailTemplateDO.setIsvalid(1);
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        emailTemplateDO.setCreatorId(userId);
+        emailTemplateDO.setUpdaterId(userId);
+        emailTemplateDO.setCreateTime(new Date());
+        emailTemplateDO.setUpdateTime(new Date());
+        emailTemplateMapper.insertOrUpdate(emailTemplateDO);
+    }
+
+    @Override
+    public boolean checkEmailTemplateUnique(EmailTemplateVO emailTemplateVO) {
+        String templateCode = emailTemplateVO.getTemplateCode();
+        EmailTemplateDO emailTemplateDO = emailTemplateMapper.selectByCode(templateCode);
+        if(emailTemplateDO==null){
+            return true;
+        }
+        if(emailTemplateVO.getId() != null && emailTemplateDO.getId().intValue() != emailTemplateVO.getId().intValue()){
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public void controlEmailTemplateConfig(StatusVO statusVO) {
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        emailTemplateMapper.updateOpenStatus(statusVO,userId);
+    }
+
+    @Override
+    public void deleteEmailTemplateList(IdListVO idListVO) {
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        List<Integer> idList = idListVO.getIdList();
+        emailTemplateMapper.deleteTemplateList(idList,userId);
+    }
+}