From 6d32f3ba247c42c675bd09b1b7aa9a37c926f65e Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 15 Aug 2023 15:20:03 +0800
Subject: [PATCH] uni-push分组

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java |   53 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
index 77d0cd8..3389cd7 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
@@ -36,7 +36,6 @@
 	public Boolean pushMessageList(List<MessageRecord> messageRecordList) {
 		// 加入测试人员
 		addSendMsgTest(messageRecordList);
-		PushVO pushVO = new PushVO();
 		List<String> cIdList = new ArrayList<>();
 		//相同的消息推送给多用户
 		messageRecordList.forEach(messageRecord -> {
@@ -45,17 +44,24 @@
 			cIdList.add(clientId);
 		});
 
+		//uni-push 一次推送最多500名用户,所以分批推送
+		List<List<String>> groupList = groupListByQuantity(cIdList, 400);
+		groupList.forEach(item->{
+			PushVO pushVO = new PushVO();
 
-		pushVO.setCIds(cIdList);
-		pushVO.setTitle(messageRecordList.get(0).getTheme());
-		pushVO.setContent(messageRecordList.get(0).getContent());
+			pushVO.setCIds(cIdList);
+			pushVO.setTitle(messageRecordList.get(0).getTheme());
+			pushVO.setContent(messageRecordList.get(0).getContent());
 
-		HashMap<String,Object> payload = new HashMap<>();
-		payload.put("title",messageRecordList.get(0).getTheme());
-		payload.put("content",messageRecordList.get(0).getContent());
-		payload.put("payload","test");
-		pushVO.setPayload(payload);
-		return pushMessage(pushVO);
+			HashMap<String,Object> payload = new HashMap<>();
+			payload.put("title",messageRecordList.get(0).getTheme());
+			payload.put("content",messageRecordList.get(0).getContent());
+			payload.put("payload","test");
+			pushVO.setPayload(payload);
+			 pushMessage(pushVO);
+
+		});
+		return true;
 	}
 
 	/**
@@ -164,9 +170,34 @@
 		params.put("requestId", UUID.randomUUID());
 
 		params.put("payload",pushVO.getPayload());
-//		UniCloudReturnRes uniCloudReturnRes = template.getForObject(UNI_CLOUD_PUSH_URL,UniCloudReturnRes.class,params);
 		UniCloudReturnRes uniCloudReturnRes = template.postForObject(UNI_CLOUD_PUSH_URL, params, UniCloudReturnRes.class);
 		return uniCloudReturnRes.getErrCode().equals("0") ? true : false;
 
 	}
+
+	/**
+	 * 对集合按指定数量进行分组
+	 * @param list 分组的集合
+	 * @param quantity 数量
+	 * @param <T>
+	 * @return
+	 */
+	public  <T> List<List<T>> groupListByQuantity(List list, int quantity) {
+		if (list == null || list.size() == 0) {
+			return list;
+		}
+
+		if (quantity <= 0) {
+			new IllegalArgumentException("Wrong quantity.");
+		}
+
+		List wrapList = new ArrayList();
+		int count = 0;
+		while (count < list.size()) {
+			wrapList.add(list.subList(count, (count + quantity) > list.size() ? list.size() : count + quantity));
+			count += quantity;
+		}
+
+		return wrapList;
+	}
 }

--
Gitblit v1.9.3