ezhizao_zx 3 maanden geleden
bovenliggende
commit
7f78fc36f4

+ 19 - 4
src/main/java/cn/ezhizao/framework/task/RyTask.java

@@ -7,6 +7,8 @@ import cn.ezhizao.framework.qrCode.QrCodeService;
 import cn.ezhizao.framework.web.domain.Server;
 import cn.ezhizao.project.business.carrier.domain.BizCarrier;
 import cn.ezhizao.project.business.carrier.service.IBizCarrierService;
+import cn.ezhizao.project.business.email.domain.BizEmail;
+import cn.ezhizao.project.business.email.service.IBizEmailService;
 import cn.ezhizao.project.business.equipment.domain.BizEquipmentDetail;
 import cn.ezhizao.project.business.equipment.service.IBizEquipmentDetailService;
 import cn.ezhizao.project.business.message.domain.BizMessage;
@@ -20,6 +22,7 @@ import cn.hutool.core.date.DateTime;
 import com.alibaba.nacos.api.config.ConfigService;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
@@ -142,10 +145,12 @@ public class RyTask {
         WebSocketUser.sendEmptyMessage(messages.stream().map(BizMessage::getToUserId).collect(Collectors.toList()));
     }
 
-    @Resource
+    @Autowired
     EmailService emailService;
     @Resource
     ISysConfigService sysConfigService;
+    @Resource
+    IBizEmailService bizEmailService;
 
     public void checkRemainStorage() throws Exception {
         // 获取存储余量
@@ -161,26 +166,36 @@ public class RyTask {
         System.out.println("磁盘空间剩余:" + server.getSysFiles().get(0).getFree());
         System.out.println("磁盘空间使用比例:" + server.getSysFiles().get(0).getUsage());
         System.out.println("预警比例:" + config);
+        List<BizEmail> bizEmails = bizEmailService.query().eq("type", 1).eq("is_stop", 0).list();
         try {
             if (config != null && Double.parseDouble(config) > 0) {
                 BigDecimal storageAlarm = BigDecimal.valueOf(Double.parseDouble(config));
                 BigDecimal usage = BigDecimal.valueOf(100).subtract(BigDecimal.valueOf(server.getSysFiles().get(0).getUsage()));
 //                BigDecimal storageAlarmSpace = totalSpace.multiply(storageAlarm);
                 if (usage.compareTo(storageAlarm.multiply(BigDecimal.valueOf(100))) < 0) {
-                    emailService.sendEmail("linliaoyouyin@163.com", "存储空间预警", "服务器存储剩余空间" + server.getSysFiles().get(0).getFree());
+                    bizEmails.forEach(l -> {
+                        emailService.sendEmail(l.getEmailAddress(), "存储空间预警", "服务器存储剩余空间" + server.getSysFiles().get(0).getFree());
+                    });
+//                    emailService.sendEmail("linliaoyouyin@163.com", "存储空间预警", "服务器存储剩余空间" + server.getSysFiles().get(0).getFree());
 //                    emailService.sendEmail("zhanghongsen@cdms-china.com", "存储空间预警", "服务器存储剩余空间" + server.getSysFiles().get(0).getFree());
 //                    emailService.sendEmail("bgs-yjl@cdms-china.com", "存储空间预警", "服务器存储剩余空间" + server.getSysFiles().get(0).getFree());
                 }
             } else {
                 // 发送邮件通知管理员
-                emailService.sendEmail("linliaoyouyin@163.com", "存储余量预警值参数错误", "存储余量预警值设置为" + config + "小于0或大于1");
+                bizEmails.forEach(l -> {
+                    emailService.sendEmail(l.getEmailAddress(), "存储空间预警", "存储余量预警值设置为" + config + "小于0或大于1");
+                });
+//                emailService.sendEmail("linliaoyouyin@163.com", "存储余量预警值参数错误", "存储余量预警值设置为" + config + "小于0或大于1");
 //                emailService.sendEmail("zhanghongsen@cdms-china.com", "存储余量预警值参数错误", "存储余量预警值设置为" + config + "小于0或大于1");
 //                emailService.sendEmail("bgs-yjl@cdms-china.com", "存储余量预警值参数错误", "存储余量预警值设置为" + config + "小于0或大于1");
             }
         } catch (NumberFormatException e) {
             // 发送邮件通知管理员
             String text = "存储余量预警值设置为" + (config == null || config.isEmpty() ? "空" : config) + "为非数字,设置错误。请重新设置。";
-            emailService.sendEmail("linliaoyouyin@163.com", "存储余量预警值参数错误", text);
+            bizEmails.forEach(l -> {
+                emailService.sendEmail(l.getEmailAddress(), "存储余量预警值参数错误", text);
+            });
+//            emailService.sendEmail("linliaoyouyin@163.com", "存储余量预警值参数错误", text);
 //            emailService.sendEmail("zhanghongsen@cdms-china.com", "存储余量预警值参数错误", text);
 //            emailService.sendEmail("bgs-yjl@cdms-china.com", "存储余量预警值参数错误", text);
         }

+ 109 - 0
src/main/java/cn/ezhizao/project/business/email/controller/BizEmailController.java

@@ -0,0 +1,109 @@
+package cn.ezhizao.project.business.email.controller;
+
+import java.util.List;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.framework.aspectj.lang.annotation.Log;
+import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
+import cn.ezhizao.framework.web.controller.BaseController;
+import cn.ezhizao.framework.web.domain.AjaxResult;
+import cn.ezhizao.framework.web.page.TableDataInfo;
+import cn.ezhizao.project.business.email.domain.BizEmail;
+import cn.ezhizao.project.business.email.service.IBizEmailService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 提醒邮件配置文件Controller
+ *
+ * @author ezhizao
+ * @date 2025-03-12
+ */
+@RestController
+@RequestMapping("/business/email")
+public class BizEmailController extends BaseController
+{
+    @Resource
+    private IBizEmailService bizEmailService;
+
+    /**
+     * 查询提醒邮件配置文件列表
+     */
+    @PreAuthorize("@ss.hasPermi('business:email:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BizEmail bizEmail) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizEmail);
+        startPage();
+        List<BizEmail> list = bizEmailService.getList(bizEmail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出提醒邮件配置文件列表
+     */
+    @PreAuthorize("@ss.hasPermi('business:email:export')")
+    @Log(title = "提醒邮件配置文件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BizEmail bizEmail) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizEmail);
+        List<BizEmail> list = bizEmailService.getList(bizEmail);
+        ExcelUtil<BizEmail> util = new ExcelUtil<BizEmail>(BizEmail.class);
+        util.exportExcel(response, list, "提醒邮件配置文件数据");
+    }
+
+    /**
+     * 获取提醒邮件配置文件详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:email:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bizEmailService.getById(id));
+    }
+
+    /**
+     * 新增提醒邮件配置文件
+     */
+    @PreAuthorize("@ss.hasPermi('business:email:add')")
+    @Log(title = "提醒邮件配置文件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BizEmail bizEmail) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizEmail);
+        return toAjax(bizEmailService.save(bizEmail));
+    }
+
+    /**
+     * 修改提醒邮件配置文件
+     */
+    @PreAuthorize("@ss.hasPermi('business:email:edit')")
+    @Log(title = "提醒邮件配置文件", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BizEmail bizEmail) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizEmail);
+        return toAjax(bizEmailService.updateById(bizEmail));
+    }
+
+    /**
+     * 删除提醒邮件配置文件
+     */
+    @PreAuthorize("@ss.hasPermi('business:email:remove')")
+    @Log(title = "提醒邮件配置文件", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids)
+    {
+        return toAjax(bizEmailService.removeBatchByIds(ids));
+    }
+}

+ 65 - 0
src/main/java/cn/ezhizao/project/business/email/domain/BizEmail.java

@@ -0,0 +1,65 @@
+package cn.ezhizao.project.business.email.domain;
+
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 提醒邮件配置文件对象 biz_email
+ *
+ * @author ezhizao
+ * @date 2025-03-12
+ */
+@Data
+@TableName(value = "biz_email")
+public class BizEmail extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** from - 0, to - 1 */
+    @Excel(name = "from - 0, to - 1")
+    @ApiModelProperty(value = "from - 0, to - 1")
+    private Integer type;
+
+    /** 默认0,已停用 1 */
+    @Excel(name = "默认0,已停用 1")
+    @ApiModelProperty(value = "默认0,已停用 1")
+    private Integer isStop;
+
+    /** 地址 */
+    @Excel(name = "地址")
+    @ApiModelProperty(value = "地址")
+    private String emailAddress;
+
+    /** 授权码 可以是密码 */
+    @Excel(name = "授权码 可以是密码")
+    @ApiModelProperty(value = "授权码 可以是密码")
+    private String authCode;
+
+    /** 端口 */
+    @Excel(name = "端口")
+    @ApiModelProperty(value = "端口")
+    private String port;
+
+    /** 发送协议 不同的协议使用不同的端口,只有发送方需要填写 */
+    @Excel(name = "发送协议 不同的协议使用不同的端口,只有发送方需要填写")
+    @ApiModelProperty(value = "发送协议 不同的协议使用不同的端口,只有发送方需要填写")
+    private String protocol;
+
+    /** 协议服务地址 */
+    @Excel(name = "协议服务地址")
+    @ApiModelProperty(value = "协议服务地址")
+    private String host;
+
+    /** 是否使用ssl 1是 0否 */
+    @Excel(name = "是否使用ssl 1是 0否")
+    @ApiModelProperty(value = "是否使用ssl 1是 0否")
+    private Integer isSsl;
+
+    @TableField(exist = false)
+    private Long tenantId;
+
+}

+ 29 - 0
src/main/java/cn/ezhizao/project/business/email/mapper/BizEmailMapper.java

@@ -0,0 +1,29 @@
+package cn.ezhizao.project.business.email.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.ezhizao.project.business.email.domain.BizEmail;
+
+/**
+ * 提醒邮件配置文件Mapper接口
+ *
+ * @author ezhizao
+ * @date 2025-03-12
+ */
+public interface BizEmailMapper extends BaseMapper<BizEmail>
+{
+    /**
+     * 查询提醒邮件配置文件列表
+     *
+     * @param bizEmail 提醒邮件配置文件
+     * @return 提醒邮件配置文件集合
+     */
+    public List<BizEmail> getList(BizEmail bizEmail);
+
+    /**
+     * 物理删除
+     * @param bizEmail
+     * @return 删除结果
+    */
+    public int physicalDelete(BizEmail bizEmail);
+}

+ 30 - 0
src/main/java/cn/ezhizao/project/business/email/service/IBizEmailService.java

@@ -0,0 +1,30 @@
+package cn.ezhizao.project.business.email.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.ezhizao.project.business.email.domain.BizEmail;
+
+/**
+ * 提醒邮件配置文件Service接口
+ *
+ * @author ezhizao
+ * @date 2025-03-12
+ */
+public interface IBizEmailService extends IService<BizEmail>
+{
+    /**
+     * 查询提醒邮件配置文件列表
+     *
+     * @param bizEmail 提醒邮件配置文件
+     * @return 提醒邮件配置文件集合
+     */
+    public List<BizEmail> getList(BizEmail bizEmail);
+
+    /**
+     * 物理删除
+     * @param bizEmail
+     * @return 删除结果
+     */
+    public int physicalDelete(BizEmail bizEmail);
+
+}

+ 43 - 0
src/main/java/cn/ezhizao/project/business/email/service/impl/BizEmailServiceImpl.java

@@ -0,0 +1,43 @@
+package cn.ezhizao.project.business.email.service.impl;
+
+import java.util.List;
+import javax.annotation.Resource;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import cn.ezhizao.project.business.email.mapper.BizEmailMapper;
+import cn.ezhizao.project.business.email.domain.BizEmail;
+import cn.ezhizao.project.business.email.service.IBizEmailService;
+
+/**
+ * 提醒邮件配置文件Service业务层处理
+ *
+ * @author ezhizao
+ * @date 2025-03-12
+ */
+@Service
+public class BizEmailServiceImpl  extends ServiceImpl<BizEmailMapper, BizEmail> implements IBizEmailService
+{
+    @Resource
+    private BizEmailMapper bizEmailMapper;
+
+    /**
+     * 查询提醒邮件配置文件列表
+     *
+     * @param bizEmail 提醒邮件配置文件
+     * @return 提醒邮件配置文件
+     */
+    @Override
+    public List<BizEmail> getList(BizEmail bizEmail)
+    {
+        return bizEmailMapper.getList(bizEmail);
+    }
+
+    /**
+     * 物理删除
+     * @param bizEmail
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizEmail bizEmail){ return bizEmailMapper.physicalDelete(bizEmail); };
+
+}

+ 57 - 6
src/main/java/cn/ezhizao/project/tool/email/service/EmailService.java

@@ -1,24 +1,75 @@
 package cn.ezhizao.project.tool.email.service;
 
+import cn.ezhizao.project.business.email.domain.BizEmail;
+import cn.ezhizao.project.business.email.mapper.BizEmailMapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.mail.SimpleMailMessage;
 import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
 
 @Service
 public class EmailService {
     @Value("${spring.mail.username}")
     private String from;
+    private JavaMailSenderImpl javaMailSenderImpl;
+//    @Autowired
+    private final BizEmailMapper bizEmailMapper;
     @Resource
     private JavaMailSender javaMailSender;
+
+    @Autowired
+    public EmailService(BizEmailMapper bizEmailMapper) {
+        this.bizEmailMapper = bizEmailMapper;
+        setEmailSender();
+    }
+
+    public void setEmailSender() {
+        QueryWrapper<BizEmail> emailQuery = new QueryWrapper<>();
+        emailQuery.eq("type", 0);
+        emailQuery.eq("is_stop", 0);
+        List<BizEmail> emailList = bizEmailMapper.selectList(emailQuery);
+        if (emailList.size() > 0) {
+            javaMailSenderImpl = new JavaMailSenderImpl();
+            javaMailSenderImpl.setHost(emailList.get(0).getHost());
+            javaMailSenderImpl.setPort(Integer.parseInt(emailList.get(0).getPort()));
+            javaMailSenderImpl.setUsername(emailList.get(0).getEmailAddress());
+            javaMailSenderImpl.setPassword(emailList.get(0).getAuthCode());
+            javaMailSenderImpl.setProtocol(emailList.get(0).getProtocol());
+            if (emailList.get(0).getIsSsl().equals(1)) {
+                Properties properties = javaMailSenderImpl.getJavaMailProperties();
+                properties.put("mail.smtp.auth", "true");
+                properties.put("mail.smtp.starttls.enable", "true");
+                properties.put("mail.smtp.ssl.enable", "true");
+                properties.put("mail.smtp.ssl.socketFactory", "com.sun.mail.util.MailSSLSocketFactory");
+                properties.put("mail.smtp.ssl.fallback", "false");
+            }
+        }
+    }
+
     public void sendEmail(String to, String subject, String text) {
-        SimpleMailMessage message = new SimpleMailMessage();
-        message.setTo(to);
-        message.setSubject(subject);
-        message.setText(text);
-        message.setFrom(from);
-        javaMailSender.send(message);
+        try {
+            SimpleMailMessage message = new SimpleMailMessage();
+            message.setTo(to);
+            message.setSubject(subject);
+            message.setText(text);
+//        message.setFrom(from);
+            message.setFrom(Objects.requireNonNull(javaMailSenderImpl.getUsername()));
+            javaMailSenderImpl.send(message);
+        } catch (Exception e) {
+            SimpleMailMessage error = new SimpleMailMessage();
+            error.setTo(to);
+            error.setSubject(subject);
+            error.setText(text);
+            error.setFrom(from);
+            javaMailSender.send(error);
+        }
     }
 }

+ 36 - 0
src/main/resources/mybatis/business/email/BizEmailMapper.xml

@@ -0,0 +1,36 @@
+<?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="cn.ezhizao.project.business.email.mapper.BizEmailMapper">
+
+    <resultMap type="cn.ezhizao.project.business.email.domain.BizEmail" id="BizEmailResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+
+    <select id="getList" parameterType="BizEmail" resultMap="BizEmailResult">
+        SELECT * FROM biz_email
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="type != null "> AND type = #{type}</if>
+            <if test="isStop != null "> AND is_stop = #{isStop}</if>
+            <if test="emailAddress != null  and emailAddress != ''"> AND email_address = #{emailAddress}</if>
+            <if test="authCode != null  and authCode != ''"> AND auth_code = #{authCode}</if>
+            <if test="port != null  and port != ''"> AND port = #{port}</if>
+            <if test="protocol != null  and protocol != ''"> AND protocol = #{protocol}</if>
+            <if test="host != null  and host != ''"> AND host = #{host}</if>
+            <if test="isSsl != null "> AND is_ssl = #{isSsl}</if>
+        </trim>
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_email
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>