fix:1.优化SQL 2.缓存Email Sender

This commit is contained in:
nieziyan 2023-11-28 10:27:18 +08:00
parent aa82d70c40
commit 1cdc481f18
9 changed files with 39 additions and 49 deletions

View File

@ -32,4 +32,6 @@ public interface RedisConstant {
String DATABASE_STATUS = "Database_Status"; String DATABASE_STATUS = "Database_Status";
String EMAIL_STATUS = "Email_Status"; String EMAIL_STATUS = "Email_Status";
String EMAIL_SENDER = "Email_Sender";
} }

View File

@ -59,7 +59,7 @@ public class SysEmailController {
@GetMapping("getSender") @GetMapping("getSender")
@ApiOperation(value = "获取发件邮箱服务器", notes = "获取发件邮箱服务器") @ApiOperation(value = "获取发件邮箱服务器", notes = "获取发件邮箱服务器")
public Result<SysEmail> getSender(){ public Result<?> getSender(){
return sysEmailService.getSender(); return sysEmailService.getSender();
} }

View File

@ -1,6 +1,7 @@
package org.jeecg.modules.mapper; package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.base.dto.EmailDto; import org.jeecg.modules.base.dto.EmailDto;
@ -13,9 +14,9 @@ import java.util.Map;
@Mapper @Mapper
public interface SysEmailMapper extends BaseMapper<SysEmail> { 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, List<IdCount> counts(@Param("emailIds") List<String> emailIds,
@Param("startDate") String startDate, @Param("startDate") String startDate,

View File

@ -13,23 +13,20 @@
INNER JOIN alarm_rule r ON r.source_id = e.id INNER JOIN alarm_rule r ON r.source_id = e.id
INNER JOIN alarm_log l ON l.rule_id = r.id INNER JOIN alarm_log l ON l.rule_id = r.id
<where> <where>
<if test="sourceId != null and sourceId.size() > 0"> <if test="params.sourceId != null and params.sourceId.size() > 0">
e.id IN 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} #{item}
</foreach> </foreach>
</if> </if>
<if test="startDate != null and startDate != ''"> <if test="params.startDate != null and params.startDate != ''">
AND l.alarm_start_date &gt;= #{startDate} AND l.alarm_start_date &gt;= #{params.startDate}
</if> </if>
<if test="endDate != null and endDate != ''"> <if test="params.endDate != null and params.endDate != ''">
AND l.alarm_start_date &lt;= #{endDate} AND l.alarm_start_date &lt;= #{params.endDate}
</if> </if>
</where> </where>
ORDER BY alarm_start_date DESC ORDER BY alarm_start_date DESC
<if test="pageFlag == null">
LIMIT #{pageSize} OFFSET #{pageStart}
</if>
</select> </select>
<select id="findPage" resultType="org.jeecg.modules.base.dto.EmailDto"> <select id="findPage" resultType="org.jeecg.modules.base.dto.EmailDto">
SELECT SELECT
@ -42,12 +39,9 @@
sys_email e sys_email e
LEFT JOIN alarm_rule r ON e.ID = r.source_id LEFT JOIN alarm_rule r ON e.ID = r.source_id
LEFT JOIN alarm_log l ON r.ID = l.rule_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 GROUP BY e.ID, e.NAME, e.email_server_address
ORDER BY e.enabled DESC,e.NAME ASC ORDER BY e.enabled DESC, e.NAME ASC
<if test="pageFlag == null">
LIMIT #{pageSize} OFFSET #{pageStart}
</if>
</select> </select>
<select id="counts" resultType="org.jeecg.modules.base.dto.IdCount"> <select id="counts" resultType="org.jeecg.modules.base.dto.IdCount">
SELECT SELECT

View File

@ -23,7 +23,7 @@ public interface ISysEmailService extends IService<SysEmail> {
Result<?> findAlarmHistory(SourceVo sourceVo); Result<?> findAlarmHistory(SourceVo sourceVo);
Result<SysEmail> getSender(); Result<?> getSender();
List<SourceDto> listAll(); List<SourceDto> listAll();

View File

@ -102,14 +102,14 @@ public class SysEmailLogServiceImpl extends ServiceImpl<SysEmailLogMapper, SysEm
// 获取已登录的SDK实例 // 获取已登录的SDK实例
QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance(); QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance();
AccountInfo mailAccountInfo = Account.getMailAccountInfo(platSDK, rParam); AccountInfo mailAccountInfo = Account.getMailAccountInfo(platSDK, rParam);
Integer unreadMsg = MailBox.unreadMsg(platSDK, rParam);
Integer usedQuota = mailAccountInfo.getUsedQuota(); Integer usedQuota = mailAccountInfo.getUsedQuota();
Integer maxQuota = mailAccountInfo.getMaxQuota(); Integer unreadMsg = MailBox.unreadMsg(platSDK, rParam);
maxQuota = ObjectUtil.isNull(maxQuota) ? 0 : maxQuota; // Integer maxQuota = mailAccountInfo.getMaxQuota();
map.put("total", maxQuota < 0 ? maxQuota + "(No Limit)" : m2G(maxQuota)); // maxQuota = ObjectUtil.isNull(maxQuota) ? 0 : maxQuota;
map.put("residue", m2G(usedQuota)); // 邮箱空间使用量 单位G // map.put("total", maxQuota < 0 ? maxQuota + "(No Limit)" : m2G(maxQuota));
map.put("usage", m2G(usedQuota)); // 邮箱空间使用量 单位G
map.put("unreadMsg", unreadMsg); // 未读邮件数量 map.put("unreadMsg", unreadMsg); // 未读邮件数量
map.put("usage","74.3%"); // map.put("usage","74.3%");
return map; return map;
} }

View File

@ -54,10 +54,7 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
public Result<?> findPage(QueryRequest query) { public Result<?> findPage(QueryRequest query) {
Integer pageNo = query.getPageNo(); Integer pageNo = query.getPageNo();
Integer pageSize = query.getPageSize(); Integer pageSize = query.getPageSize();
Integer pageStart = (pageNo - 1) * pageSize;
Map<String,Object> params = new HashMap<>(); Map<String,Object> params = new HashMap<>();
params.put("pageSize",pageSize);
params.put("pageStart",pageStart);
DateTimeFormatter formatter = DateTimeFormatter DateTimeFormatter formatter = DateTimeFormatter
.ofPattern(DateConstant.DATE); .ofPattern(DateConstant.DATE);
String date = LocalDate.now().format(formatter); String date = LocalDate.now().format(formatter);
@ -66,7 +63,8 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
params.put("startDate",startDate); params.put("startDate",startDate);
params.put("endDate",endDate); 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() List<String> emailIds = emailDtos.stream()
.map(EmailDto::getId).collect(Collectors.toList()); .map(EmailDto::getId).collect(Collectors.toList());
@ -98,10 +96,6 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
.setYesterday(yestMap.getOrDefault(id, 0)) .setYesterday(yestMap.getOrDefault(id, 0))
.setWeekly(weekMap.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); page.setRecords(emailDtos);
return Result.OK(page); return Result.OK(page);
} }
@ -178,29 +172,29 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
sourceVo.setEndDate(endDate + DateConstant.TIME_END); sourceVo.setEndDate(endDate + DateConstant.TIME_END);
Integer pageNo = sourceVo.getPageNo(); Integer pageNo = sourceVo.getPageNo();
Integer pageSize = sourceVo.getPageSize(); Integer pageSize = sourceVo.getPageSize();
Integer pageStart = (pageNo - 1) * pageSize;
sourceVo.setPageStart(pageStart);
Map<String, Object> params = BeanUtil.beanToMap(sourceVo); Map<String, Object> params = BeanUtil.beanToMap(sourceVo);
List<AlarmHistory> alarmHistories = baseMapper.findAlarmHistory(params); Page<AlarmHistory> page = new Page<>(pageNo, pageSize);
// 获取数据总条数(经过查询条件过滤后的) page = baseMapper.findAlarmHistory(page, params);
params.put("pageFlag","noPage");
int total = baseMapper.findAlarmHistory(params).size();
Page<AlarmHistory> page = new Page<>(pageNo,pageSize,total);
// 当前页数据
page.setRecords(alarmHistories);
return Result.OK(page); return Result.OK(page);
} }
/** /**
* 获取邮件发送服务器信息 * 获取邮件发送服务器信息
* 使用较为频繁 放到Redis缓存
*/ */
@Override @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<>(); LambdaQueryWrapper<SysEmail> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysEmail::getEmilType, SysMailType.SEND_EMAIL.getEmailType()); wrapper.eq(SysEmail::getEmilType, SysMailType.SEND_EMAIL.getEmailType());
wrapper.eq(SysEmail::getEnabled, ENABLED.getValue()); wrapper.eq(SysEmail::getEnabled, ENABLED.getValue());
List<SysEmail> emails = this.list(wrapper); List<SysEmail> emails = this.list(wrapper);
SysEmail sysEmail = emails.stream().findFirst().get(); SysEmail sysEmail = emails.stream().findFirst().get();
if (ObjectUtil.isNotNull(sysEmail))
redisUtil.set(key, sysEmail);
return Result.OK(sysEmail); return Result.OK(sysEmail);
} }
@ -272,10 +266,11 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
} }
public static void main(String[] args) { public static void main(String[] args) {
QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance(); /*QiyeOpenPlatSDK platSDK = InstanceSDK.getInstance();
RParam rParam = new RParam(); RParam rParam = new RParam();
rParam.setDomain("ndc.org.cn"); rParam.setDomain("ndc.org.cn");
rParam.setAccount_name("cnndc.rn.dr"); rParam.setAccount_name("cnndc.rn.dr");
System.out.println(MailBox.unreadMsg(platSDK, rParam)); System.out.println(MailBox.unreadMsg(platSDK, rParam));*/
} }
} }

View File

@ -71,8 +71,9 @@ public class DatabaseJob extends Monitor implements Job{
// 根据sourceId查询Database信息 // 根据sourceId查询Database信息
String sourceId = alarmRule.getSourceId(); String sourceId = alarmRule.getSourceId();
SysDatabase database = getAlarmClient().getDatabase(sourceId); // 查询数据库信息 该SQL占用较多PG的连接
if (ObjectUtil.isNull(database)) continue; /*SysDatabase database = getAlarmClient().getDatabase(sourceId);
if (ObjectUtil.isNull(database)) continue;*/
// 根据监控项id选择要查询的监控项信息 // 根据监控项id选择要查询的监控项信息
Item item = Item.of(itemId); Item item = Item.of(itemId);

View File

@ -55,10 +55,7 @@ public class EmailJob extends Monitor implements Job{
if (blank1 || blank2 || hasKey) continue; if (blank1 || blank2 || hasKey) continue;
// 根据sourceId查询Email信息
String sourceId = alarmRule.getSourceId(); String sourceId = alarmRule.getSourceId();
/*SysDatabase database = getAlarmClient().getDatabase(sourceId);
if (ObjectUtil.isNull(database)) continue;*/
// 根据监控项id选择要查询的监控项信息 // 根据监控项id选择要查询的监控项信息
Item item = Item.of(itemId); Item item = Item.of(itemId);