|
@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.dao.SysMessageDao;
|
|
import com.ym.mec.biz.dal.dao.WaitSendMessageDao;
|
|
import com.ym.mec.biz.dal.dao.WaitSendMessageDao;
|
|
import com.ym.mec.biz.dal.dto.Mapper;
|
|
import com.ym.mec.biz.dal.dto.Mapper;
|
|
import com.ym.mec.biz.dal.dto.SysMessageDto;
|
|
import com.ym.mec.biz.dal.dto.SysMessageDto;
|
|
|
|
+import com.ym.mec.biz.dal.entity.SysEmail;
|
|
import com.ym.mec.biz.dal.entity.SysMessage;
|
|
import com.ym.mec.biz.dal.entity.SysMessage;
|
|
import com.ym.mec.biz.dal.entity.SysMessageConfig;
|
|
import com.ym.mec.biz.dal.entity.SysMessageConfig;
|
|
import com.ym.mec.biz.dal.entity.WaitSendMessage;
|
|
import com.ym.mec.biz.dal.entity.WaitSendMessage;
|
|
@@ -24,6 +25,7 @@ import com.ym.mec.common.entity.ImTxtMessage;
|
|
import com.ym.mec.common.exception.BizException;
|
|
import com.ym.mec.common.exception.BizException;
|
|
import com.ym.mec.common.page.PageInfo;
|
|
import com.ym.mec.common.page.PageInfo;
|
|
import com.ym.mec.common.page.QueryInfo;
|
|
import com.ym.mec.common.page.QueryInfo;
|
|
|
|
+import com.ym.mec.common.page.WrapperUtil;
|
|
import com.ym.mec.common.redis.service.RedisCache;
|
|
import com.ym.mec.common.redis.service.RedisCache;
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
import com.ym.mec.im.ImFeignService;
|
|
import com.ym.mec.im.ImFeignService;
|
|
@@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.Map.Entry;
|
|
import java.util.Map.Entry;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
|
|
import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
|
|
|
|
|
|
@@ -64,6 +67,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
@Autowired
|
|
@Autowired
|
|
private SysUserFeignService sysUserFeignService;
|
|
private SysUserFeignService sysUserFeignService;
|
|
|
|
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
private WaitSendMessageDao waitSendMessageDao;
|
|
private WaitSendMessageDao waitSendMessageDao;
|
|
|
|
|
|
@@ -76,6 +80,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
@Autowired
|
|
@Autowired
|
|
private RedisCache<String, Object> redisCache;
|
|
private RedisCache<String, Object> redisCache;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private SysEmailServiceImpl sysEmailService;
|
|
|
|
+
|
|
// 验证码有效期
|
|
// 验证码有效期
|
|
public static final int CODE_EXPIRE = 60 * 5;
|
|
public static final int CODE_EXPIRE = 60 * 5;
|
|
|
|
|
|
@@ -305,6 +312,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
if (receivers == null || receivers.size() == 0) {
|
|
if (receivers == null || receivers.size() == 0) {
|
|
throw new BizException("接收地址不能为空");
|
|
throw new BizException("接收地址不能为空");
|
|
}
|
|
}
|
|
|
|
+ // email data from database load, 使用接收者 tenantId, 假设发送者和接收者为同一机构
|
|
|
|
+ Integer tenantId = getTenantIdByUser(null, String.valueOf(receivers.keySet().stream().findFirst()));
|
|
|
|
+ loadEmailInfo(messageSender, tenantId);
|
|
if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
|
|
if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
|
|
//如果不是缴费信息
|
|
//如果不是缴费信息
|
|
if(type != STUDENT_PUSH_VIP_BUY){
|
|
if(type != STUDENT_PUSH_VIP_BUY){
|
|
@@ -367,6 +377,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
url, messageConfig.getGroup(),jpushType);
|
|
url, messageConfig.getGroup(),jpushType);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Async
|
|
@Async
|
|
public void batchPushMessage(MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
public void batchPushMessage(MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
@@ -432,11 +444,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Async
|
|
@Async
|
|
- public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
|
|
|
|
- String url, String group,String jpushType) {
|
|
|
|
|
|
+ public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus, String url, String group,String jpushType) {
|
|
if (StringUtils.isBlank(receiver)) {
|
|
if (StringUtils.isBlank(receiver)) {
|
|
throw new BizException("接收地址不能为空");
|
|
throw new BizException("接收地址不能为空");
|
|
}
|
|
}
|
|
|
|
+ // email data from database load
|
|
|
|
+ Integer tenantId = getTenantIdByUser(userId, receiver);
|
|
|
|
+ loadEmailInfo(messageSender, tenantId);
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
SendStatusEnum status = SendStatusEnum.WAIT;
|
|
SendStatusEnum status = SendStatusEnum.WAIT;
|
|
String errorMsg = null;
|
|
String errorMsg = null;
|
|
@@ -466,6 +480,35 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null,jpushType);
|
|
addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null,jpushType);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private Integer getTenantIdByUser(Integer userId, String receiver) throws BizException {
|
|
|
|
+ SysUser user;
|
|
|
|
+ if (userId == null) {
|
|
|
|
+ user = sysUserFeignService.queryUserByMobile(receiver);
|
|
|
|
+ if (user != null) {
|
|
|
|
+ return user.getTenantId();
|
|
|
|
+ } // user query null using receiver query
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ user = sysUserFeignService.queryUserByMobile(receiver);
|
|
|
|
+ if (user != null) {
|
|
|
|
+ return user.getTenantId();
|
|
|
|
+ } else {
|
|
|
|
+ throw new BizException("找不到发送者用户 id: " + userId.toString() + " 接收者 " + receiver);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void loadEmailInfo(MessageSender messageSender, Integer tenantId) {
|
|
|
|
+ if (Objects.equals(messageSender.getSendMode(), "EMAIL")) {
|
|
|
|
+ SysEmail email1 = sysEmailService.getOne(new WrapperUtil<SysEmail>().hasEq("tenant_id_", tenantId).queryWrapper());
|
|
|
|
+ messageSenderPluginContext.sysEmail.setHostName(email1.getHostName());
|
|
|
|
+ messageSenderPluginContext.sysEmail.setSmtpPort(email1.getSmtpPort());
|
|
|
|
+ messageSenderPluginContext.sysEmail.setUserName(email1.getUserName());
|
|
|
|
+ messageSenderPluginContext.sysEmail.setPassword(email1.getPassword());
|
|
|
|
+ messageSenderPluginContext.sysEmail.setFromName(email1.getFromName());
|
|
|
|
+ messageSenderPluginContext.sysEmail.setFrom(email1.getFrom());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver) {
|
|
public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver) {
|
|
String key1 = getVerificationCode1CacheKey(messageType, receiver);
|
|
String key1 = getVerificationCode1CacheKey(messageType, receiver);
|