fix:1.优化SQL 2.缓存Email Sender
This commit is contained in:
parent
aa82d70c40
commit
1cdc481f18
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 >= #{startDate}
|
AND l.alarm_start_date >= #{params.startDate}
|
||||||
</if>
|
</if>
|
||||||
<if test="endDate != null and endDate != ''">
|
<if test="params.endDate != null and params.endDate != ''">
|
||||||
AND l.alarm_start_date <= #{endDate}
|
AND l.alarm_start_date <= #{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
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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));*/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user