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 >= #{startDate} + <if test="params.startDate != null and params.startDate != ''"> + AND l.alarm_start_date >= #{params.startDate} </if> - <if test="endDate != null and endDate != ''"> - AND l.alarm_start_date <= #{endDate} + <if test="params.endDate != null and params.endDate != ''"> + AND l.alarm_start_date <= #{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);