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