From 1cdc481f18d89529b319206a5cd140a8bd3d2363 Mon Sep 17 00:00:00 2001
From: nieziyan <nzyone@qq.com>
Date: Tue, 28 Nov 2023 10:27:18 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A1.=E4=BC=98=E5=8C=96SQL=202.?=
 =?UTF-8?q?=E7=BC=93=E5=AD=98Email=20Sender?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../jeecg/common/constant/RedisConstant.java  |  2 ++
 .../controller/SysEmailController.java        |  2 +-
 .../jeecg/modules/mapper/SysEmailMapper.java  |  5 +--
 .../modules/mapper/xml/SysEmailMapper.xml     | 22 +++++-------
 .../modules/service/ISysEmailService.java     |  2 +-
 .../service/impl/SysEmailLogServiceImpl.java  | 12 +++----
 .../service/impl/SysEmailServiceImpl.java     | 35 ++++++++-----------
 .../jeecg/modules/quartz/job/DatabaseJob.java |  5 +--
 .../jeecg/modules/quartz/job/EmailJob.java    |  3 --
 9 files changed, 39 insertions(+), 49 deletions(-)

diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java
index c8ec69fc..74d99d7e 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java
@@ -32,4 +32,6 @@ public interface RedisConstant {
     String DATABASE_STATUS = "Database_Status";
 
     String EMAIL_STATUS = "Email_Status";
+
+    String EMAIL_SENDER = "Email_Sender";
 }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailController.java
index 19e73d01..eaa01c94 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailController.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SysEmailController.java
@@ -59,7 +59,7 @@ public class SysEmailController {
 
     @GetMapping("getSender")
     @ApiOperation(value = "获取发件邮箱服务器", notes = "获取发件邮箱服务器")
-    public Result<SysEmail> getSender(){
+    public Result<?> getSender(){
         return sysEmailService.getSender();
     }
 
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/SysEmailMapper.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/SysEmailMapper.java
index 9f5a8c80..f977c546 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/SysEmailMapper.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/SysEmailMapper.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.base.dto.EmailDto;
@@ -13,9 +14,9 @@ import java.util.Map;
 @Mapper
 public interface SysEmailMapper extends BaseMapper<SysEmail> {
 
-    List<AlarmHistory> findAlarmHistory(Map<String,Object> params);
+    Page<AlarmHistory> findAlarmHistory(Page<?> page, Map<String,Object> params);
 
-    List<EmailDto> findPage(Map<String,Object> params);
+    Page<EmailDto> findPage(Page<?> page, Map<String,Object> params);
 
     List<IdCount> counts(@Param("emailIds") List<String> emailIds,
                          @Param("startDate") String startDate,
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/SysEmailMapper.xml b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/SysEmailMapper.xml
index e01d53f9..af998d05 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/SysEmailMapper.xml
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/mapper/xml/SysEmailMapper.xml
@@ -13,23 +13,20 @@
         INNER JOIN alarm_rule r ON r.source_id = e.id
         INNER JOIN alarm_log l ON l.rule_id = r.id
         <where>
-            <if test="sourceId != null and sourceId.size() > 0">
+            <if test="params.sourceId != null and params.sourceId.size() > 0">
                 e.id IN
-                <foreach collection="sourceId" index="index" open="(" close=")" item="item" separator=",">
+                <foreach collection="params.sourceId" index="index" open="(" close=")" item="item" separator=",">
                     #{item}
                 </foreach>
             </if>
-            <if test="startDate != null and startDate != ''">
-                AND l.alarm_start_date &gt;= #{startDate}
+            <if test="params.startDate != null and params.startDate != ''">
+                AND l.alarm_start_date &gt;= #{params.startDate}
             </if>
-            <if test="endDate != null and endDate != ''">
-                AND l.alarm_start_date &lt;= #{endDate}
+            <if test="params.endDate != null and params.endDate != ''">
+                AND l.alarm_start_date &lt;= #{params.endDate}
             </if>
         </where>
         ORDER BY alarm_start_date DESC
-        <if test="pageFlag == null">
-            LIMIT #{pageSize} OFFSET #{pageStart}
-        </if>
     </select>
     <select id="findPage" resultType="org.jeecg.modules.base.dto.EmailDto">
         SELECT
@@ -42,12 +39,9 @@
             sys_email e
         LEFT JOIN alarm_rule r ON e.ID = r.source_id
         LEFT JOIN alarm_log l ON r.ID = l.rule_id
-        AND l.alarm_start_date BETWEEN #{startDate} AND #{endDate}
+        AND l.alarm_start_date BETWEEN #{params.startDate} AND #{params.endDate}
         GROUP BY e.ID, e.NAME, e.email_server_address
-        ORDER BY e.enabled DESC,e.NAME ASC
-        <if test="pageFlag == null">
-            LIMIT #{pageSize} OFFSET #{pageStart}
-        </if>
+        ORDER BY e.enabled DESC, e.NAME ASC
     </select>
     <select id="counts" resultType="org.jeecg.modules.base.dto.IdCount">
         SELECT
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailService.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailService.java
index 570a6ee3..a9e0d553 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailService.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/ISysEmailService.java
@@ -23,7 +23,7 @@ public interface ISysEmailService extends IService<SysEmail> {
 
     Result<?> findAlarmHistory(SourceVo sourceVo);
 
-    Result<SysEmail> getSender();
+    Result<?> getSender();
 
     List<SourceDto> listAll();
 
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java
index 9501e91f..3cff4b19 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailLogServiceImpl.java
@@ -102,14 +102,14 @@ public class SysEmailLogServiceImpl extends ServiceImpl<SysEmailLogMapper, SysEm
         // 获取已登录的SDK实例
         QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance();
         AccountInfo mailAccountInfo = Account.getMailAccountInfo(platSDK, rParam);
-        Integer unreadMsg = MailBox.unreadMsg(platSDK, rParam);
         Integer usedQuota = mailAccountInfo.getUsedQuota();
-        Integer maxQuota = mailAccountInfo.getMaxQuota();
-        maxQuota = ObjectUtil.isNull(maxQuota) ? 0 : maxQuota;
-        map.put("total", maxQuota < 0 ? maxQuota + "(No Limit)" : m2G(maxQuota));
-        map.put("residue", m2G(usedQuota)); // 邮箱空间使用量 单位G
+        Integer unreadMsg = MailBox.unreadMsg(platSDK, rParam);
+        // Integer maxQuota = mailAccountInfo.getMaxQuota();
+        // maxQuota = ObjectUtil.isNull(maxQuota) ? 0 : maxQuota;
+        // map.put("total", maxQuota < 0 ? maxQuota + "(No Limit)" : m2G(maxQuota));
+        map.put("usage", m2G(usedQuota)); // 邮箱空间使用量 单位G
         map.put("unreadMsg", unreadMsg); // 未读邮件数量
-        map.put("usage","74.3%");
+        // map.put("usage","74.3%");
         return map;
     }
 
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailServiceImpl.java
index 3feea63f..84e60bc2 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailServiceImpl.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysEmailServiceImpl.java
@@ -54,10 +54,7 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
     public Result<?> findPage(QueryRequest query) {
         Integer pageNo = query.getPageNo();
         Integer pageSize = query.getPageSize();
-        Integer pageStart = (pageNo - 1) * pageSize;
         Map<String,Object> params = new HashMap<>();
-        params.put("pageSize",pageSize);
-        params.put("pageStart",pageStart);
         DateTimeFormatter formatter = DateTimeFormatter
                 .ofPattern(DateConstant.DATE);
         String date = LocalDate.now().format(formatter);
@@ -66,7 +63,8 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
         params.put("startDate",startDate);
         params.put("endDate",endDate);
 
-        List<EmailDto> emailDtos = baseMapper.findPage(params);
+        Page<EmailDto> page = new Page<>(pageNo, pageSize);
+        List<EmailDto> emailDtos = baseMapper.findPage(page, params).getRecords();
         // 查询当日 昨日 最近一周邮件接受量
         List<String> emailIds = emailDtos.stream()
                 .map(EmailDto::getId).collect(Collectors.toList());
@@ -98,10 +96,6 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
                     .setYesterday(yestMap.getOrDefault(id, 0))
                     .setWeekly(weekMap.getOrDefault(id, 0));
         }
-        // 不分页 查询记录总数
-        params.put("pageFlag","noPage");
-        long total = baseMapper.findPage(params).size();
-        Page<EmailDto> page = new Page<>(pageNo, pageSize, total);
         page.setRecords(emailDtos);
         return Result.OK(page);
     }
@@ -178,29 +172,29 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
             sourceVo.setEndDate(endDate + DateConstant.TIME_END);
         Integer pageNo = sourceVo.getPageNo();
         Integer pageSize = sourceVo.getPageSize();
-        Integer pageStart = (pageNo - 1) * pageSize;
-        sourceVo.setPageStart(pageStart);
         Map<String, Object> params = BeanUtil.beanToMap(sourceVo);
-        List<AlarmHistory> alarmHistories = baseMapper.findAlarmHistory(params);
-        // 获取数据总条数(经过查询条件过滤后的)
-        params.put("pageFlag","noPage");
-        int total = baseMapper.findAlarmHistory(params).size();
-        Page<AlarmHistory> page = new Page<>(pageNo,pageSize,total);
-        // 当前页数据
-        page.setRecords(alarmHistories);
+        Page<AlarmHistory> page = new Page<>(pageNo, pageSize);
+        page = baseMapper.findAlarmHistory(page, params);
         return Result.OK(page);
     }
 
     /**
      * 获取邮件发送服务器信息
+     * 使用较为频繁 放到Redis缓存
      */
     @Override
-    public Result<SysEmail> getSender() {
+    public Result<?> getSender() {
+        String key = RedisConstant.EMAIL_SENDER;
+        if (redisUtil.hasKey(key))
+            return Result.OK(redisUtil.get(key));
+
         LambdaQueryWrapper<SysEmail> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysEmail::getEmilType, SysMailType.SEND_EMAIL.getEmailType());
         wrapper.eq(SysEmail::getEnabled, ENABLED.getValue());
         List<SysEmail> emails = this.list(wrapper);
         SysEmail sysEmail = emails.stream().findFirst().get();
+        if (ObjectUtil.isNotNull(sysEmail))
+            redisUtil.set(key, sysEmail);
         return Result.OK(sysEmail);
     }
 
@@ -272,10 +266,11 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
     }
 
     public static void main(String[] args) {
-        QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance();
+        /*QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance();
         RParam rParam = new RParam();
         rParam.setDomain("ndc.org.cn");
         rParam.setAccount_name("cnndc.rn.dr");
-        System.out.println(MailBox.unreadMsg(platSDK, rParam));
+        System.out.println(MailBox.unreadMsg(platSDK, rParam));*/
+
     }
 }
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java
index eb3ae00e..b8b7c6f9 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java
@@ -71,8 +71,9 @@ public class DatabaseJob extends Monitor implements Job{
 
                 // 根据sourceId查询Database信息
                 String sourceId = alarmRule.getSourceId();
-                SysDatabase database = getAlarmClient().getDatabase(sourceId);
-                if (ObjectUtil.isNull(database)) continue;
+                // 查询数据库信息 该SQL占用较多PG的连接
+                /*SysDatabase database = getAlarmClient().getDatabase(sourceId);
+                if (ObjectUtil.isNull(database)) continue;*/
 
                 // 根据监控项id选择要查询的监控项信息
                 Item item = Item.of(itemId);
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/EmailJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/EmailJob.java
index 05a7135b..a2d6bdad 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/EmailJob.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/EmailJob.java
@@ -55,10 +55,7 @@ public class EmailJob extends Monitor implements Job{
 
                 if (blank1 || blank2 || hasKey) continue;
 
-                // 根据sourceId查询Email信息
                 String sourceId = alarmRule.getSourceId();
-                /*SysDatabase database = getAlarmClient().getDatabase(sourceId);
-                if (ObjectUtil.isNull(database)) continue;*/
 
                 // 根据监控项id选择要查询的监控项信息
                 Item item = Item.of(itemId);