|
@@ -1,5 +1,26 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Map.Entry;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Random;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
@@ -21,7 +42,6 @@ import com.ym.mec.biz.service.SysMessageConfigService;
|
|
|
import com.ym.mec.biz.service.SysMessageService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.entity.ImGroupMessage;
|
|
|
-import com.ym.mec.common.entity.ImPlayMidiMessage;
|
|
|
import com.ym.mec.common.entity.ImPrivateMessage;
|
|
|
import com.ym.mec.common.entity.ImTxtMessage;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
@@ -38,21 +58,6 @@ import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.string.MessageFormatter;
|
|
|
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
-import org.springframework.scheduling.annotation.Async;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
-import java.util.*;
|
|
|
-import java.util.Map.Entry;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
|
|
|
-
|
|
|
@Service
|
|
|
public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
|
|
|
|
|
@@ -127,7 +132,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
* @param group 消息组
|
|
|
* @return
|
|
|
*/
|
|
|
- private int addMessage(Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
|
|
|
+ private int addMessage(Integer receiverTenantId, Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
|
|
|
String errorMsg, Integer readStatus, String memo, String group,String jpushType) {
|
|
|
SysMessage message = null;
|
|
|
Date date = new Date();
|
|
@@ -147,6 +152,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
userId = user.getId();
|
|
|
}
|
|
|
}
|
|
|
+ message.setTenantId(receiverTenantId);
|
|
|
message.setUserId(userId);
|
|
|
message.setContent(content);
|
|
|
message.setCreateOn(date);
|
|
@@ -301,7 +307,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
|
|
|
@Override
|
|
|
@Async
|
|
|
- public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
|
+ public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
|
String url,String jpushType, Object... args) {
|
|
|
LOGGER.info("batchSendMessage {}, type {}, receivers {} ", messageSender, type, receivers);
|
|
|
if (receivers == null || receivers.size() == 0) {
|
|
@@ -309,12 +315,12 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
return;
|
|
|
}
|
|
|
SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(receivers.keySet().iterator().next());
|
|
|
- TenantContextHolder.setTenantId(simpleUserDto.getTenantId());
|
|
|
+ Integer receiverTenantId = simpleUserDto.getTenantId();
|
|
|
|
|
|
// email data from database load, 使用接收者 tenantId, 假设发送者和接收者为同一机构
|
|
|
if (Objects.equals(messageSender.getSendMode(), "EMAIL")) {
|
|
|
LOGGER.info("batch 发送邮件 {} ", simpleUserDto.getTenantId());
|
|
|
- loadEmailInfo(simpleUserDto.getTenantId());
|
|
|
+ loadEmailInfo(senderTenantId);
|
|
|
debugMode = false;
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
|
|
@@ -377,10 +383,15 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
} else if (messageSender.getSendMode().equals("EMAIL")) {
|
|
|
mode = MessageSendMode.EMAIL;
|
|
|
}
|
|
|
- LOGGER.info("batch 添加消息");
|
|
|
- addMessage(receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
|
|
|
+ addMessage(receiverTenantId, receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
|
|
|
url, messageConfig.getGroup(),jpushType);
|
|
|
- TenantContextHolder.clearTenantId();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Async
|
|
|
+ public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
|
+ String url,String jpushType, Object... args) {
|
|
|
+ batchSendMessage(TenantContextHolder.getTenantId(), messageSender, type, receivers, triggerTime, readStatus, url, jpushType, args);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -391,6 +402,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
if (receivers == null || receivers.size() == 0) {
|
|
|
throw new BizException("接收地址不能为空");
|
|
|
}
|
|
|
+ SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(receivers.keySet().iterator().next());
|
|
|
+ Integer receiverTenantId = simpleUserDto.getTenantId();
|
|
|
+
|
|
|
if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
|
|
|
//如果不是缴费信息
|
|
|
if(type != STUDENT_PUSH_VIP_BUY){
|
|
@@ -443,7 +457,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
LOGGER.warn("消息发送失败", e);
|
|
|
}
|
|
|
}
|
|
|
- addMessage(receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, MessageSendMode.PUSH, status, errorMsg, readStatus,
|
|
|
+ addMessage(receiverTenantId, receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, MessageSendMode.PUSH, status, errorMsg, readStatus,
|
|
|
url, messageConfig.getGroup(),jpushType);
|
|
|
}
|
|
|
|
|
@@ -455,7 +469,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
throw new BizException("接收地址不能为空");
|
|
|
}
|
|
|
SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(userId);
|
|
|
- TenantContextHolder.setTenantId(simpleUserDto.getTenantId());
|
|
|
+ Integer receiverTenantId = simpleUserDto.getTenantId();
|
|
|
+
|
|
|
// email data from database load
|
|
|
if (Objects.equals(messageSender.getSendMode(), "EMAIL")) {
|
|
|
loadEmailInfo(simpleUserDto.getTenantId());
|
|
@@ -489,8 +504,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
}
|
|
|
Map<Integer, String> receivers = new HashMap<Integer, String>();
|
|
|
receivers.put(userId, receiver);
|
|
|
- LOGGER.info("添加消息 {} ", title);
|
|
|
- addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null,jpushType);
|
|
|
+ addMessage(receiverTenantId, receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null,jpushType);
|
|
|
}
|
|
|
|
|
|
private void loadEmailInfo(Integer tenantId) {
|