fix:缓存可用发件邮箱
This commit is contained in:
parent
f31f163d5c
commit
a5412c684e
|
@ -76,10 +76,9 @@ public class StatusAspect {
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAlarmItemService alarmItemService;
|
private IAlarmItemService alarmItemService;
|
||||||
|
|
||||||
// 新增|修改邮箱服务器信息后 异步更新其状态信息
|
// 新增邮箱服务器信息后 异步更新其状态信息
|
||||||
@Async
|
@Async
|
||||||
@AfterReturning("execution(* org.jeecg.modules.service.impl.SysEmailServiceImpl.update(..)) || " +
|
@AfterReturning("execution(* org.jeecg.modules.service.impl.SysEmailServiceImpl.create(..))")
|
||||||
"execution(* org.jeecg.modules.service.impl.SysEmailServiceImpl.create(..))")
|
|
||||||
public void updateEamilStatus(JoinPoint point){
|
public void updateEamilStatus(JoinPoint point){
|
||||||
Object[] args = point.getArgs();
|
Object[] args = point.getArgs();
|
||||||
if (ArrayUtil.length(args) == 0) return;
|
if (ArrayUtil.length(args) == 0) return;
|
||||||
|
@ -87,6 +86,18 @@ public class StatusAspect {
|
||||||
emailService.status2Redis(email);
|
emailService.status2Redis(email);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 修改邮箱服务器信息后 异步更新其状态信息
|
||||||
|
// 并更新一个可用的发件服务器缓存到Reids
|
||||||
|
@Async
|
||||||
|
@AfterReturning("execution(* org.jeecg.modules.service.impl.SysEmailServiceImpl.update(..))")
|
||||||
|
public void updateEamil(JoinPoint point){
|
||||||
|
emailService.sender2Redis();
|
||||||
|
Object[] args = point.getArgs();
|
||||||
|
if (ArrayUtil.length(args) == 0) return;
|
||||||
|
SysEmail email = (SysEmail) args[0];
|
||||||
|
emailService.status2Redis(email);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 新增|修改数据源信息后 异步更新其状态信息
|
* 新增|修改数据源信息后 异步更新其状态信息
|
||||||
* */
|
* */
|
||||||
|
|
|
@ -33,4 +33,6 @@ public interface ISysEmailService extends IService<SysEmail> {
|
||||||
void status2Redis(SysEmail email);
|
void status2Redis(SysEmail email);
|
||||||
|
|
||||||
String getNameById(String id);
|
String getNameById(String id);
|
||||||
|
|
||||||
|
SysEmail sender2Redis();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.netease.qiye.qiyeopenplatform.sdk.QiyeOpenPlatSDK;
|
import com.netease.qiye.qiyeopenplatform.sdk.QiyeOpenPlatSDK;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jeecg.common.api.QueryRequest;
|
import org.jeecg.common.api.QueryRequest;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.constant.*;
|
import org.jeecg.common.constant.*;
|
||||||
|
@ -45,6 +46,7 @@ import java.util.stream.Collectors;
|
||||||
import static org.jeecg.modules.base.enums.Enabled.ENABLED;
|
import static org.jeecg.modules.base.enums.Enabled.ENABLED;
|
||||||
import static org.jeecg.modules.base.enums.Qiye.IS;
|
import static org.jeecg.modules.base.enums.Qiye.IS;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service("sysEmailService")
|
@Service("sysEmailService")
|
||||||
public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> implements ISysEmailService {
|
public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> implements ISysEmailService {
|
||||||
|
|
||||||
|
@ -152,11 +154,8 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
|
||||||
}
|
}
|
||||||
sysEmail.setIsQiye(isQiye(username));
|
sysEmail.setIsQiye(isQiye(username));
|
||||||
boolean success = updateById(sysEmail);
|
boolean success = updateById(sysEmail);
|
||||||
if (success) {
|
if (success)
|
||||||
// 更新邮箱发件服务器到Redis
|
|
||||||
// updateSender();
|
|
||||||
return Result.OK(Prompt.UPDATE_SUCC);
|
return Result.OK(Prompt.UPDATE_SUCC);
|
||||||
}
|
|
||||||
return Result.error(Prompt.UPDATE_ERR);
|
return Result.error(Prompt.UPDATE_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,7 +196,7 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
|
||||||
if (redisUtil.hasKey(key))
|
if (redisUtil.hasKey(key))
|
||||||
return Result.OK(redisUtil.get(key));
|
return Result.OK(redisUtil.get(key));
|
||||||
|
|
||||||
SysEmail sysEmail = updateSender();
|
SysEmail sysEmail = this.sender2Redis();
|
||||||
return Result.OK(sysEmail);
|
return Result.OK(sysEmail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,6 +261,22 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
|
||||||
return getById(id).getName();
|
return getById(id).getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysEmail sender2Redis() {
|
||||||
|
String key = RedisConstant.EMAIL_SENDER;
|
||||||
|
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);
|
||||||
|
Optional<SysEmail> first = emails.stream().findFirst();
|
||||||
|
if(!first.isPresent())
|
||||||
|
return null;
|
||||||
|
SysEmail sender = first.get();
|
||||||
|
redisUtil.set(key, sender);
|
||||||
|
log.info("缓存了可用的发件邮箱到Redis: {}", sender.getUsername());
|
||||||
|
return sender;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 删除指定id的邮箱服务器的状态值
|
* 删除指定id的邮箱服务器的状态值
|
||||||
* */
|
* */
|
||||||
|
@ -282,16 +297,4 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailMapper, SysEmail> i
|
||||||
boolean contains = CollUtil.contains(domains, domain);
|
boolean contains = CollUtil.contains(domains, domain);
|
||||||
return contains ? Qiye.IS.getValue() : Qiye.NOT.getValue();
|
return contains ? Qiye.IS.getValue() : Qiye.NOT.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private SysEmail updateSender(){
|
|
||||||
String key = RedisConstant.EMAIL_SENDER;
|
|
||||||
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 sysEmail;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.jeecg.modules.message.handle.impl;
|
package org.jeecg.modules.message.handle.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.sun.mail.smtp.SMTPAddressFailedException;
|
import com.sun.mail.smtp.SMTPAddressFailedException;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -39,10 +40,12 @@ public class EmailPushMsgHandle implements ISendMsgHandle {
|
||||||
@Override
|
@Override
|
||||||
public void sendMessage(MessageDTO messageDTO) {
|
public void sendMessage(MessageDTO messageDTO) {
|
||||||
// 获取邮件发送服务器信息
|
// 获取邮件发送服务器信息
|
||||||
SysEmail sysEmail = abnormalAlarmClient.getSender().getResult();
|
SysEmail sender = abnormalAlarmClient.getSender().getResult();
|
||||||
|
if(ObjectUtil.isNull(sender))
|
||||||
|
log.error("没有可用的发件邮箱服务");
|
||||||
// 初始化邮件服务
|
// 初始化邮件服务
|
||||||
EmailServiceManager emailService = getInstance();
|
EmailServiceManager emailService = getInstance();
|
||||||
emailService.init(sysEmail);
|
emailService.init(sender);
|
||||||
// 单独给每个用户发送邮件
|
// 单独给每个用户发送邮件
|
||||||
/*String toUser = messageDTO.getToUser();
|
/*String toUser = messageDTO.getToUser();
|
||||||
List<String> toUsers = StrUtil.splitTrim(toUser, ",");*/
|
List<String> toUsers = StrUtil.splitTrim(toUser, ",");*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user