|  | @@ -1,6 +1,22 @@
 | 
	
		
			
				|  |  |  package com.keao.edu.auth.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.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.keao.edu.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.keao.edu.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.keao.edu.auth.service.SysMessageConfigService;
 | 
	
	
		
			
				|  | @@ -19,18 +35,10 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 | 
	
		
			
				|  |  |  import com.keao.edu.im.api.client.ImFeignService;
 | 
	
		
			
				|  |  |  import com.keao.edu.im.api.entity.ImPrivateMessage;
 | 
	
		
			
				|  |  |  import com.keao.edu.im.api.entity.ImTxtMessage;
 | 
	
		
			
				|  |  | +import com.keao.edu.thirdparty.message.MessageSenderPlugin;
 | 
	
		
			
				|  |  |  import com.keao.edu.thirdparty.message.MessageSenderPluginContext;
 | 
	
		
			
				|  |  | -import com.keao.edu.thirdparty.message.MessageSenderPluginContext.MessageSender;
 | 
	
		
			
				|  |  | +import com.keao.edu.thirdparty.message.provider.YimeiSmsPlugin;
 | 
	
		
			
				|  |  |  import com.keao.edu.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 java.util.*;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
 | 
	
	
		
			
				|  | @@ -232,7 +240,7 @@ 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,
 | 
	
		
			
				|  |  | +	public boolean batchSendMessage(MessageSenderPlugin senderPlugin, String subject, String content, Map<Integer, String> receivers, Date triggerTime,
 | 
	
		
			
				|  |  |  									Integer readStatus, String memo, String group, String jpushType) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if (receivers == null || receivers.size() == 0) {
 | 
	
	
		
			
				|  | @@ -251,7 +259,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,jpushType)) {
 | 
	
		
			
				|  |  | +					if (debugMode == true || messageSenderPluginContext.batchSend(YimeiSmsPlugin.PLUGIN_NAME, subject, content, tos, memo,jpushType)) {
 | 
	
		
			
				|  |  |  						status = SendStatusEnum.SUCCESSED;
 | 
	
		
			
				|  |  |  					} else {
 | 
	
		
			
				|  |  |  						status = SendStatusEnum.FAILED;
 | 
	
	
		
			
				|  | @@ -263,9 +271,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  				LOGGER.warn("消息发送失败", e);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			MessageSendMode mode = MessageSendMode.SMS;
 | 
	
		
			
				|  |  | -			if (messageSender.getSendMode().equals("PUSH")) {
 | 
	
		
			
				|  |  | +			if (senderPlugin.getSendMode().equals("PUSH")) {
 | 
	
		
			
				|  |  |  				mode = MessageSendMode.PUSH;
 | 
	
		
			
				|  |  | -			} else if (messageSender.getSendMode().equals("EMAIL")) {
 | 
	
		
			
				|  |  | +			} else if (senderPlugin.getSendMode().equals("EMAIL")) {
 | 
	
		
			
				|  |  |  				mode = MessageSendMode.EMAIL;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			return addMessage(receivers, subject, content, triggerTime, mode, status, errorMsg, readStatus, memo, null) > 0;
 | 
	
	
		
			
				|  | @@ -276,7 +284,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(MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
 | 
	
		
			
				|  |  |  								 String url, String jpushType, Object... args) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if (receivers == null || receivers.size() == 0) {
 | 
	
	
		
			
				|  | @@ -292,12 +300,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  		Date date = new Date();
 | 
	
		
			
				|  |  |  		SendStatusEnum status = SendStatusEnum.WAIT;
 | 
	
		
			
				|  |  |  		String errorMsg = null;
 | 
	
		
			
				|  |  | +		String pluginName = YimeiSmsPlugin.PLUGIN_NAME;
 | 
	
		
			
				|  |  |  		// 立即发送
 | 
	
		
			
				|  |  |  		if (triggerTime == null || date.after(triggerTime)) {
 | 
	
		
			
				|  |  |  			status = SendStatusEnum.SENDING;
 | 
	
		
			
				|  |  |  			try {
 | 
	
		
			
				|  |  |  				if (debugMode == true
 | 
	
		
			
				|  |  | -						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
 | 
	
		
			
				|  |  | +						|| messageSenderPluginContext.batchSend(pluginName, messageConfig.getDescription(),
 | 
	
		
			
				|  |  |  								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType)) {
 | 
	
		
			
				|  |  |  					status = SendStatusEnum.SUCCESSED;
 | 
	
		
			
				|  |  |  				} else {
 | 
	
	
		
			
				|  | @@ -309,10 +318,11 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  				LOGGER.warn("消息发送失败", e);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		MessageSenderPlugin senderPlugin = messageSenderPluginContext.getMessageSenderPlugin(pluginName);
 | 
	
		
			
				|  |  |  		MessageSendMode mode = MessageSendMode.SMS;
 | 
	
		
			
				|  |  | -		if (messageSender.getSendMode().equals("PUSH")) {
 | 
	
		
			
				|  |  | +		if (senderPlugin.getSendMode().equals("PUSH")) {
 | 
	
		
			
				|  |  |  			mode = MessageSendMode.PUSH;
 | 
	
		
			
				|  |  | -		} else if (messageSender.getSendMode().equals("EMAIL")) {
 | 
	
		
			
				|  |  | +		} else if (senderPlugin.getSendMode().equals("EMAIL")) {
 | 
	
		
			
				|  |  |  			mode = MessageSendMode.EMAIL;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		addMessage(receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
 | 
	
	
		
			
				|  | @@ -321,7 +331,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Async
 | 
	
		
			
				|  |  | -	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
 | 
	
		
			
				|  |  | +	public void sendMessage(MessageSenderPlugin senderPlugin, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
 | 
	
		
			
				|  |  |  			String url, String group,String jpushType) {
 | 
	
		
			
				|  |  |  		if (StringUtils.isBlank(receiver)) {
 | 
	
		
			
				|  |  |  			throw new BizException("接收地址不能为空");
 | 
	
	
		
			
				|  | @@ -333,7 +343,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  		if (triggerTime == null || date.after(triggerTime)) {
 | 
	
		
			
				|  |  |  			status = SendStatusEnum.SENDING;
 | 
	
		
			
				|  |  |  			try {
 | 
	
		
			
				|  |  | -				if (debugMode == true || messageSenderPluginContext.send(messageSender, receiver, title, content, url,jpushType)) {
 | 
	
		
			
				|  |  | +				if (debugMode == true || messageSenderPluginContext.send(YimeiSmsPlugin.PLUGIN_NAME, receiver, title, content, url,jpushType)) {
 | 
	
		
			
				|  |  |  					status = SendStatusEnum.SUCCESSED;
 | 
	
		
			
				|  |  |  				} else {
 | 
	
		
			
				|  |  |  					status = SendStatusEnum.FAILED;
 | 
	
	
		
			
				|  | @@ -345,9 +355,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		MessageSendMode mode = MessageSendMode.SMS;
 | 
	
		
			
				|  |  | -		if (messageSender.getSendMode().equals("PUSH")) {
 | 
	
		
			
				|  |  | +		if (senderPlugin.getSendMode().equals("PUSH")) {
 | 
	
		
			
				|  |  |  			mode = MessageSendMode.PUSH;
 | 
	
		
			
				|  |  | -		} else if (messageSender.getSendMode().equals("EMAIL")) {
 | 
	
		
			
				|  |  | +		} else if (senderPlugin.getSendMode().equals("EMAIL")) {
 | 
	
		
			
				|  |  |  			mode = MessageSendMode.EMAIL;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		Map<Integer, String> receivers = new HashMap<Integer, String>();
 | 
	
	
		
			
				|  | @@ -356,7 +366,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | -	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver) {
 | 
	
		
			
				|  |  | +	public boolean sendSecurityCode(Integer userId, MessageTypeEnum messageType, String receiver) {
 | 
	
		
			
				|  |  |  		String key1 = getVerificationCode1CacheKey(messageType, receiver);
 | 
	
		
			
				|  |  |  		if (redisCache.get(key1) != null) {
 | 
	
		
			
				|  |  |  			throw new BizException("请勿频繁操作,获取验证码间隔时间为60秒");
 | 
	
	
		
			
				|  | @@ -369,7 +379,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		Map<Integer, String> receivers = new HashMap<>(1);
 | 
	
		
			
				|  |  |  		receivers.put(userId, receiver);
 | 
	
		
			
				|  |  | -		batchSendMessage(messageSender, messageType, receivers, null, 1, "","", code);
 | 
	
		
			
				|  |  | +		batchSendMessage(messageType, receivers, null, 1, "","", code);
 | 
	
		
			
				|  |  |  		redisCache.put(key, code + "", CODE_EXPIRE);
 | 
	
		
			
				|  |  |  		redisCache.put(key1, code + "", CODE_INTERVAL_TIME);
 | 
	
		
			
				|  |  |  		return true;
 |