浏览代码

极光推送新增自定义消息

zouxuan 4 年之前
父节点
当前提交
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,
 			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 消息发送者

+ 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 {
 				if (debugMode == true
 						|| 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;
 				} else {
 					status = SendStatusEnum.FAILED;
@@ -365,6 +365,69 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@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,
 			String url, String group,String jpushType) {
 		if (StringUtils.isBlank(receiver)) {
@@ -377,7 +440,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(messageSender, receiver, title, content, url,jpushType,"text")) {
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 					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 是否发送成功
 	 * @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 是否发送成功
 	 * @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 是否发送成功
 	 * @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);
 
-		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 是否发送成功
 	 * @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);
 
-		return messageSenderPlugin.batchSend(subject, content, receivers, url, jpushType);
+		return messageSenderPlugin.batchSend(subject, content, receivers, url, jpushType,contentType);
 	}
 
 	@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
-	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 {
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			reqParams.put("SpCode", appId);
@@ -92,7 +92,7 @@ public class AwSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@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("");
 		for (int i = 0; i < receivers.length - 1; i++) {
 			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 消息内容
 	 * @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();
 		JSONArray platform = new JSONArray();// 平台
 		platform.add("android");
@@ -96,7 +96,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 		JSONObject message = new JSONObject();// 通知消息内容
 		message.put("title", alert);
 		message.put("msg_content", content);
-		message.put("content_type", "text");
+		message.put("content_type",contentType);
 
 		JSONObject options = new JSONObject();// 设置参数
 		options.put("time_to_live", this.time_to_live);
@@ -117,7 +117,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	 * @param alert 推送消息
 	 * @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 = "";
 		switch (type){
 			case "STUDENT":
@@ -131,7 +131,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 				break;
 		}
 		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
-	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 result = this.push(alias, subject, content, url,type);
+		String result = this.push(alias, subject, content, url,type,contentType);
 		JSONObject json = JSONObject.parseObject(result);
 		if (json.containsKey("error")) {
 			JSONObject jsonObject = json.getJSONObject("error");
@@ -189,8 +189,8 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	}
 
 	@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);
 		if (json.containsKey("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
-	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>();
 		reqParams.put("username", username);
 		reqParams.put("pwd", pwd);
@@ -58,7 +58,7 @@ public class MOxintongSMSPlugin implements MessageSenderPlugin, InitializingBean
 	}
 
 	@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();
 		for (int i = 0; i < receivers.length - 1; i++) {
 			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
-	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 {
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			reqParams.put("account", account);
@@ -93,7 +93,7 @@ public class ShiyuanSMSPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@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("");
 		for (int i = 0; i < receivers.length - 1; i++) {
 			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
-	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");
 		JSONObject json = JSONObject.parseObject(result);
 		if ("SUCCESS".equals(json.get("code"))) {
@@ -70,7 +70,7 @@ public class YimeiSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@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 result = getParam(subject, content, join, host + "/simpleinter/sendSMS");
 		logger.info("调用短信接口返回:{}", result);