Browse Source

极光推送新增自定义消息

zouxuan 4 năm trước cách đây
mục cha
commit
dcb02a7672

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

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

+ 65 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -342,7 +342,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			try {
 			try {
 				if (debugMode == true
 				if (debugMode == true
 						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
 						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
-								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType)) {
+								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,"text")) {
 					status = SendStatusEnum.SUCCESSED;
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 				} else {
 					status = SendStatusEnum.FAILED;
 					status = SendStatusEnum.FAILED;
@@ -365,6 +365,69 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 
 	@Override
 	@Override
 	@Async
 	@Async
+	public void batchPushMessage(MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
+			String url,String jpushType,String contentType, Object... args) {
+		if (receivers == null || receivers.size() == 0) {
+			throw new BizException("接收地址不能为空");
+		}
+		if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
+			//如果不是缴费信息
+			if(type != STUDENT_PUSH_VIP_BUY){
+				int hour = DateUtil.getHour(new Date());
+				//如果当前时间在22点之后
+				String messageTime = sysConfigDao.findConfigValue("wait_send_message_time");
+				if(StringUtils.isEmpty(messageTime)){
+					messageTime = "22";
+				}
+				if(hour > Integer.parseInt(messageTime)-1){
+					//保存推送信息
+					WaitSendMessage waitSendMessage = new WaitSendMessage();
+					if(args != null){
+						waitSendMessage.setAgrs(JSON.toJSONString(args));
+					}
+					waitSendMessage.setJpushType(jpushType);
+					waitSendMessage.setMessageSender(MessageSender.JIGUANG.name());
+					waitSendMessage.setMessageType(type.name());
+					waitSendMessage.setReceivers(JSON.toJSONString(receivers));
+					waitSendMessage.setUrl(url);
+					waitSendMessageDao.insert(waitSendMessage);
+					return;
+				}
+			}
+		}
+		String[] tos = receivers.values().toArray(new String[receivers.size()]);
+		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
+		if (messageConfig == null) {
+			throw new BizException("消息类型错误");
+		}else if(messageConfig.getSendFlag() == null || messageConfig.getSendFlag() == 0){
+			return;
+		}
+		Date date = new Date();
+		SendStatusEnum status = SendStatusEnum.WAIT;
+		String errorMsg = null;
+		// 立即发送
+		if (triggerTime == null || date.after(triggerTime)) {
+			status = SendStatusEnum.SENDING;
+			try {
+				if (debugMode == true
+						|| messageSenderPluginContext.batchSend(MessageSender.JIGUANG, messageConfig.getDescription(),
+								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,contentType)) {
+					status = SendStatusEnum.SUCCESSED;
+				} else {
+					status = SendStatusEnum.FAILED;
+				}
+			} catch (Exception e) {
+				status = SendStatusEnum.FAILED;
+				errorMsg = e.getMessage();
+				LOGGER.warn("消息发送失败", e);
+			}
+		}
+		addMessage(receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, MessageSendMode.PUSH, status, errorMsg, readStatus,
+				url, messageConfig.getGroup(),jpushType);
+	}
+
+	@Override
+	@Async
 	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
 	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
 			String url, String group,String jpushType) {
 			String url, String group,String jpushType) {
 		if (StringUtils.isBlank(receiver)) {
 		if (StringUtils.isBlank(receiver)) {
@@ -377,7 +440,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if (triggerTime == null || date.after(triggerTime)) {
 		if (triggerTime == null || date.after(triggerTime)) {
 			status = SendStatusEnum.SENDING;
 			status = SendStatusEnum.SENDING;
 			try {
 			try {
-				if (debugMode == true || messageSenderPluginContext.send(messageSender, receiver, title, content, url,jpushType)) {
+				if (debugMode == true || messageSenderPluginContext.send(messageSender, receiver, title, content, url,jpushType,"text")) {
 					status = SendStatusEnum.SUCCESSED;
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 				} else {
 					status = SendStatusEnum.FAILED;
 					status = SendStatusEnum.FAILED;

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/MessageSenderPlugin.java

@@ -14,7 +14,7 @@ public interface MessageSenderPlugin {
 	 * @return 是否发送成功
 	 * @return 是否发送成功
 	 * @throws IOException
 	 * @throws IOException
 	 */
 	 */
-	public boolean send(String subject, String content, String receiver, String url, String jpushType) throws Exception;
+	public boolean send(String subject, String content, String receiver, String url, String jpushType,String contentType) throws Exception;
 
 
 	/**
 	/**
 	 * 批量发送消息至目的地
 	 * 批量发送消息至目的地
@@ -26,5 +26,5 @@ public interface MessageSenderPlugin {
 	 * @return 是否发送成功
 	 * @return 是否发送成功
 	 * @throws IOException
 	 * @throws IOException
 	 */
 	 */
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType) throws Exception;
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String contentType) throws Exception;
 }
 }

+ 4 - 4
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/MessageSenderPluginContext.java

@@ -69,11 +69,11 @@ public class MessageSenderPluginContext implements ApplicationContextAware {
 	 * @return 是否发送成功
 	 * @return 是否发送成功
 	 * @throws IOException
 	 * @throws IOException
 	 */
 	 */
-	public boolean send(MessageSender messageSender, String subject, String content, String receiver, String url, String jpushType) throws Exception {
+	public boolean send(MessageSender messageSender, String subject, String content, String receiver, String url, String jpushType,String contentType) throws Exception {
 
 
 		messageSenderPlugin = getMessageSenderPlugin(messageSender);
 		messageSenderPlugin = getMessageSenderPlugin(messageSender);
 
 
-		return messageSenderPlugin.send(subject, content, receiver, url, jpushType);
+		return messageSenderPlugin.send(subject, content, receiver, url, jpushType,contentType);
 	}
 	}
 
 
 	/**
 	/**
@@ -86,11 +86,11 @@ public class MessageSenderPluginContext implements ApplicationContextAware {
 	 * @return 是否发送成功
 	 * @return 是否发送成功
 	 * @throws IOException
 	 * @throws IOException
 	 */
 	 */
-	public boolean batchSend(MessageSender messageSender, String subject, String content, String[] receivers, String url, String jpushType) throws Exception {
+	public boolean batchSend(MessageSender messageSender, String subject, String content, String[] receivers, String url, String jpushType,String contentType) throws Exception {
 
 
 		messageSenderPlugin = getMessageSenderPlugin(messageSender);
 		messageSenderPlugin = getMessageSenderPlugin(messageSender);
 
 
-		return messageSenderPlugin.batchSend(subject, content, receivers, url, jpushType);
+		return messageSenderPlugin.batchSend(subject, content, receivers, url, jpushType,contentType);
 	}
 	}
 
 
 	@Override
 	@Override

+ 6 - 6
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/AwSmsPlugin.java

@@ -68,7 +68,7 @@ public class AwSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean send(String subject, String content, String receiver, String url, String jpushType) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url, String jpushType,String contentType) throws IOException {
 		try {
 		try {
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			reqParams.put("SpCode", appId);
 			reqParams.put("SpCode", appId);
@@ -92,7 +92,7 @@ public class AwSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType) throws IOException {
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String contentType) throws IOException {
 		StringBuilder stringBuilder = new StringBuilder("");
 		StringBuilder stringBuilder = new StringBuilder("");
 		for (int i = 0; i < receivers.length - 1; i++) {
 		for (int i = 0; i < receivers.length - 1; i++) {
 			stringBuilder.append(receivers[i]).append(",");
 			stringBuilder.append(receivers[i]).append(",");
@@ -120,8 +120,8 @@ public class AwSmsPlugin implements MessageSenderPlugin, InitializingBean {
 		}
 		}
 	}
 	}
 
 
-	public static void main(String[] args) throws IOException {
-		AwSmsPlugin plugin = new AwSmsPlugin();
-		plugin.send("测试", "您的验证码为274160(5分钟内有效),您正在进行商户认证,请不要向他人透露验证码", "13720176797", "", "");
-	}
+//	public static void main(String[] args) throws IOException {
+//		AwSmsPlugin plugin = new AwSmsPlugin();
+//		plugin.send("测试", "您的验证码为274160(5分钟内有效),您正在进行商户认证,请不要向他人透露验证码", "13720176797", "", "");
+//	}
 }
 }

+ 8 - 8
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/JiguangPushPlugin.java

@@ -58,7 +58,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	 * @param content 消息内容
 	 * @param content 消息内容
 	 * @return json对象
 	 * @return json对象
 	 */
 	 */
-	private JSONObject generateJson(String[] alias, String alert, String content, String url) {
+	private JSONObject generateJson(String[] alias, String alert, String content, String url,String contentType) {
 		JSONObject json = new JSONObject();
 		JSONObject json = new JSONObject();
 		JSONArray platform = new JSONArray();// 平台
 		JSONArray platform = new JSONArray();// 平台
 		platform.add("android");
 		platform.add("android");
@@ -96,7 +96,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 		JSONObject message = new JSONObject();// 通知消息内容
 		JSONObject message = new JSONObject();// 通知消息内容
 		message.put("title", alert);
 		message.put("title", alert);
 		message.put("msg_content", content);
 		message.put("msg_content", content);
-		message.put("content_type", "text");
+		message.put("content_type",contentType);
 
 
 		JSONObject options = new JSONObject();// 设置参数
 		JSONObject options = new JSONObject();// 设置参数
 		options.put("time_to_live", this.time_to_live);
 		options.put("time_to_live", this.time_to_live);
@@ -117,7 +117,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	 * @param alert 推送消息
 	 * @param alert 推送消息
 	 * @param content 推送内容
 	 * @param content 推送内容
 	 */
 	 */
-	private String push(String[] alias, String alert, String content, String url,String type) {
+	private String push(String[] alias, String alert, String content, String url,String type,String contentType) {
 		String base64_auth_string = "";
 		String base64_auth_string = "";
 		switch (type){
 		switch (type){
 			case "STUDENT":
 			case "STUDENT":
@@ -131,7 +131,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 				break;
 				break;
 		}
 		}
 		String authorization = "Basic " + base64_auth_string;
 		String authorization = "Basic " + base64_auth_string;
-		return sendPostRequest(generateJson(alias, alert, content, url).toString(), authorization);
+		return sendPostRequest(generateJson(alias, alert, content, url,contentType).toString(), authorization);
 	}
 	}
 
 
 	/**
 	/**
@@ -177,9 +177,9 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean send(String subject, String content, String receiver, String url, String type) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url, String type,String contentType) throws IOException {
 		String[] alias = { receiver };
 		String[] alias = { receiver };
-		String result = this.push(alias, subject, content, url,type);
+		String result = this.push(alias, subject, content, url,type,contentType);
 		JSONObject json = JSONObject.parseObject(result);
 		JSONObject json = JSONObject.parseObject(result);
 		if (json.containsKey("error")) {
 		if (json.containsKey("error")) {
 			JSONObject jsonObject = json.getJSONObject("error");
 			JSONObject jsonObject = json.getJSONObject("error");
@@ -189,8 +189,8 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String type) throws IOException {
-		String result = this.push(receivers, subject, content, url,type);
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String type,String contentType) throws IOException {
+		String result = this.push(receivers, subject, content, url,type,contentType);
 		JSONObject json = JSONObject.parseObject(result);
 		JSONObject json = JSONObject.parseObject(result);
 		if (json.containsKey("error")) {
 		if (json.containsKey("error")) {
 			JSONObject jsonObject = json.getJSONObject("error");
 			JSONObject jsonObject = json.getJSONObject("error");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/MOxintongSMSPlugin.java

@@ -36,7 +36,7 @@ public class MOxintongSMSPlugin implements MessageSenderPlugin, InitializingBean
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean send(String subject, String content, String receiver, String url, String jpushType) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url, String jpushType,String contentType) throws IOException {
 		Map<String, Object> reqParams = new HashMap<String, Object>();
 		Map<String, Object> reqParams = new HashMap<String, Object>();
 		reqParams.put("username", username);
 		reqParams.put("username", username);
 		reqParams.put("pwd", pwd);
 		reqParams.put("pwd", pwd);
@@ -58,7 +58,7 @@ public class MOxintongSMSPlugin implements MessageSenderPlugin, InitializingBean
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType) throws IOException {
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String contentType) throws IOException {
 		StringBuilder stringBuilder = new StringBuilder();
 		StringBuilder stringBuilder = new StringBuilder();
 		for (int i = 0; i < receivers.length - 1; i++) {
 		for (int i = 0; i < receivers.length - 1; i++) {
 			stringBuilder.append(receivers[i]).append(",");
 			stringBuilder.append(receivers[i]).append(",");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/ShiyuanSMSPlugin.java

@@ -70,7 +70,7 @@ public class ShiyuanSMSPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean send(String subject, String content, String receiver, String url,String jpushType) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url,String jpushType,String contentType) throws IOException {
 		try {
 		try {
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			reqParams.put("account", account);
 			reqParams.put("account", account);
@@ -93,7 +93,7 @@ public class ShiyuanSMSPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType) throws IOException {
+	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType,String contentType) throws IOException {
 		StringBuilder stringBuilder = new StringBuilder("");
 		StringBuilder stringBuilder = new StringBuilder("");
 		for (int i = 0; i < receivers.length - 1; i++) {
 		for (int i = 0; i < receivers.length - 1; i++) {
 			stringBuilder.append(receivers[i]).append(",");
 			stringBuilder.append(receivers[i]).append(",");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/YimeiSmsPlugin.java

@@ -58,7 +58,7 @@ public class YimeiSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean send(String subject, String content, String receiver, String url,String jpushType) throws Exception {
+	public boolean send(String subject, String content, String receiver, String url,String jpushType,String contentType) throws Exception {
 		String result = getParam(subject, content, receiver, host + "/simpleinter/sendSMS");
 		String result = getParam(subject, content, receiver, host + "/simpleinter/sendSMS");
 		JSONObject json = JSONObject.parseObject(result);
 		JSONObject json = JSONObject.parseObject(result);
 		if ("SUCCESS".equals(json.get("code"))) {
 		if ("SUCCESS".equals(json.get("code"))) {
@@ -70,7 +70,7 @@ public class YimeiSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType) throws Exception {
+	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType,String contentType) throws Exception {
 		String join = StringUtils.join(receivers, ",");
 		String join = StringUtils.join(receivers, ",");
 		String result = getParam(subject, content, join, host + "/simpleinter/sendSMS");
 		String result = getParam(subject, content, join, host + "/simpleinter/sendSMS");
 		logger.info("调用短信接口返回:{}", result);
 		logger.info("调用短信接口返回:{}", result);