Kaynağa Gözat

update:邮件

yonge 3 yıl önce
ebeveyn
işleme
a7e24e5d46

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -51,6 +51,21 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 
 	/**
 	 * 发送消息
+	 * @param senderTenantId 消息发送者所在的机构编号
+	 * @param messageSender 消息发送者
+	 * @param messageType 消息类型
+	 * @param receivers 消息接收者(Key:用户编号  value:消息接收对象)
+	 * @param triggerTime 触发时间
+	 * @param readStatus 阅读状态(0-未读  1-已读)
+	 * @param url 超链接地址
+	 * @param args 参数
+	 * @return
+	 */
+	public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum messageType, Map<Integer, String> receivers, Date triggerTime,
+			Integer readStatus, String url,String jpushType, Object... args);
+
+	/**
+	 * 发送消息
 	 * @param messageSender 消息发送者
 	 * @param messageType 消息类型
 	 * @param receivers 消息接收者(Key:用户编号  value:消息接收对象)

+ 41 - 27
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -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) {