| 
					
				 | 
			
			
				@@ -1,21 +1,5 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Map.Entry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Random; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.commons.lang.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.ym.mec.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.SysMessageDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,6 +17,15 @@ import com.ym.mec.common.service.impl.BaseServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.message.MessageSenderPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.string.MessageFormatter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang.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 java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -85,7 +78,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(Set<String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			String errorMsg, Integer readStatus, String memo, String group) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		SysMessage message = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Date date = new Date(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -93,23 +86,17 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<SysMessage> messages = new ArrayList<SysMessage>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Integer userId = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String receiver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (Entry<Integer, String> entry : receivers.entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			userId = entry.getKey(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			receiver = entry.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (String phone : receivers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			message = new SysMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (userId == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				SysUser user = sysUserFeignService.queryUserByMobile(receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (user != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					userId = user.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUser user = sysUserFeignService.queryUserByMobile(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (user != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				userId = user.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			message.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			message.setContent(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			message.setCreateOn(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			message.setModifyOn(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			message.setReceiver(receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			message.setReceiver(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (triggerTime == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				triggerTime = date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -135,8 +122,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Map<Integer, String> receivers, Date triggerTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			Integer readStatus, String memo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Set<String> receivers, Date triggerTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									Integer readStatus, String memo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (receivers == null || receivers.size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("消息接收人不能为空"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -144,8 +131,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (StringUtils.isBlank(content)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("消息内容不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String[] tos = receivers.values().toArray(new String[receivers.size()]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (tos != null && tos.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (receivers != null && receivers.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			SendStatusEnum status = SendStatusEnum.WAIT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -154,7 +140,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				// 立即发送 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (triggerTime == null || date.after(triggerTime)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					status = SendStatusEnum.SENDING; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (debugMode == true || messageSenderPluginContext.batchSend(messageSender, subject, content, tos, memo)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (debugMode == true || messageSenderPluginContext.batchSend(messageSender, subject, content, receivers.toArray(new String[receivers.size()]), memo)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						status = SendStatusEnum.SUCCESSED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						status = SendStatusEnum.FAILED; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -179,13 +165,13 @@ 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(MessageSender messageSender, MessageTypeEnum type, Set<String> receivers, Date triggerTime, Integer readStatus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			String url, Object... args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (receivers == null || receivers.size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("接收地址不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String[] tos = receivers.values().toArray(new String[receivers.size()]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//		String[] tos = receivers.values().toArray(new String[receivers.size()]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (messageConfig == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("消息类型错误"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -199,7 +185,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (debugMode == true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								MessageFormatter.arrayFormat(messageConfig.getContent(), args),receivers.toArray(new String[receivers.size()]) , url)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					status = SendStatusEnum.SUCCESSED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					status = SendStatusEnum.FAILED; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -251,8 +237,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} else if (messageSender.getSendMode().equals("EMAIL")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			mode = MessageSendMode.EMAIL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer, String> receivers = new HashMap<Integer, String>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		receivers.put(userId, receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Set<String> receivers = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		receivers.add(receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -268,8 +254,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (debugMode == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			code = getRandomCode(messageType, receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer, String> receivers = new HashMap<Integer, String>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		receivers.put(userId, receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Set<String> receivers = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		receivers.add(receiver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		batchSendMessage(messageSender, messageType, receivers, null, 1, "", code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		redisCache.put(key, code, CODE_EXPIRE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		redisCache.put(key1, code, CODE_INTERVAL_TIME); 
			 |