From 1dd5d8f8a616f5cf3caa7828d46989c7d3dcafc4 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Thu, 19 Oct 2023 15:01:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev
---
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java | 197 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 165 insertions(+), 32 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 f0f4147..8d98f1f 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
@@ -1,60 +1,81 @@
package cn.gistack.alerts.push.service.impl;
import cn.gistack.alerts.push.service.IPushService;
+import cn.gistack.alerts.push.utils.GeTuiUtils;
import cn.gistack.alerts.push.vo.PushVO;
import cn.gistack.alerts.push.vo.UniCloudReturnRes;
import cn.gistack.sm.message.entity.MessageRecord;
import cn.gistack.sm.message.feign.IMessageClient;
import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
@Service
@AllArgsConstructor
public class PushServiceImpl implements IPushService {
private static final String PUSH_CLIENT_ID = "push:client:id:";
- private static final String UNI_CLOUD_PUSH_URL = "https://fc-mp-ad1ed7e3-700e-4fca-abae-0d097cc222b5.next.bspapp.com/push";
+ private static final String UNI_CLOUD_PUSH_URL = "https://fc-mp-ff11cc4d-ca8e-4b47-a57f-e26804379530.next.bspapp.com/push";
private BladeRedis bladeRedis;
private IMessageClient messageClient;
+ private GeTuiUtils geTuiUtils;
@Override
- public Boolean saveCId(String userId,String cId) {
- bladeRedis.set(PUSH_CLIENT_ID + userId,cId);
+ public Boolean saveCId(String userId, String cId) {
+ bladeRedis.set(PUSH_CLIENT_ID + userId, cId);
return Boolean.TRUE;
}
@Override
- public UniCloudReturnRes pushMessage(PushVO pushVO) {
+ public Boolean pushMessageList(List<MessageRecord> messageRecordList) {
+ // 加入测试人员
+// addSendMsgTest(messageRecordList);
+ List<String> cIdList = new ArrayList<>();
+ AtomicReference<Boolean> push = new AtomicReference<>(false);
+ //相同的消息推送给多用户
+ messageRecordList.forEach(messageRecord -> {
+ //获取用户cId
+ String clientId = getClientIdByUserId(messageRecord.getRecipient());
+ if (null!=clientId && !clientId.equals("")) {
+ cIdList.add(clientId);
+ PushVO pushVO = new PushVO();
+ pushVO.setCIds(cIdList);
+ pushVO.setTitle(messageRecord.getTheme());
+ pushVO.setContent(messageRecord.getContent());
- RestTemplate template = new RestTemplate();
- Map<String, Object> params = new LinkedHashMap<>();
-
- params.put("push_clientid",pushVO.getCIds());
- params.put("title",pushVO.getTitle());
- params.put("content",pushVO.getContent());
- UniCloudReturnRes uniCloudReturnRes = template.getForObject(UNI_CLOUD_PUSH_URL,UniCloudReturnRes.class,params);
- return uniCloudReturnRes;
+ HashMap<String, Object> payload = new HashMap<>();
+ payload.put("title",messageRecord.getTheme());
+ payload.put("content", messageRecord.getContent());
+ payload.put("payload", "test");
+ pushVO.setPayload(payload);
+ push.set(pushMessage(pushVO));
+ }
+ });
+ return push.get();
}
- @Override
- public Boolean pushMessageList(List<MessageRecord> messageRecordList) {
- PushVO pushVO = new PushVO();
- messageRecordList.forEach(messageRecord -> {
- String clientId = getClientIdByUserId(messageRecord.getRecipient());
-
- pushVO.getCIds().add(clientId);
- pushVO.setTitle(messageRecord.getTheme());
- pushVO.setContent(messageRecord.getContent());
-
- });
- UniCloudReturnRes uniCloudReturnRes = pushMessage(pushVO);
- return uniCloudReturnRes.getErrCode().equals(0)?true:false;
+ /**
+ * 新增测试信息
+ *
+ * @param messageRecordList
+ */
+ private void addSendMsgTest(List<MessageRecord> messageRecordList) {
+ MessageRecord messageRecord = new MessageRecord();
+ messageRecord.setRecipient("1654164141753593858");
+ messageRecord.setContent(messageRecordList.get(0).getContent());
+ messageRecord.setTheme(messageRecordList.get(0).getTheme());
+ messageRecord.setSender(AuthUtil.getUserId().toString());
+ messageRecord.setSource("智能告警");
+ messageRecord.setStatus(0);
+ // 加入集合
+ messageRecordList.add(messageRecord);
}
@Override
@@ -69,10 +90,11 @@
List<MessageRecord> notReadList = messageClient.getNotReadList(userId);
PushVO pushVO = new PushVO();
+ List<String> cIdList = new ArrayList<>();
//设置cId
- pushVO.getCIds().add(getClientIdByUserId(userId));
-
+ cIdList.add(getClientIdByUserId(userId));
+ pushVO.setCIds(cIdList);
//设置标题和内容
notReadList.forEach(messageRecord -> {
pushVO.setTitle(messageRecord.getTheme());
@@ -84,12 +106,123 @@
return true;
}
+ @Override
+ public Boolean pushMessageByUserId(PushVO pushVO) {
+
+ if (Func.isEmpty(pushVO.getUserId())) {
+ throw new ServiceException("请填写用户id!");
+ }
+
+ String clientIdByUserId = getClientIdByUserId(pushVO.getUserId());
+ List<String> cIdList = new ArrayList<>();
+ cIdList.add(clientIdByUserId);
+ pushVO.setCIds(cIdList);
+
+ HashMap<String, Object> payload = new HashMap<>();
+ payload.put("title", pushVO.getTitle());
+ payload.put("content", pushVO.getContent());
+ payload.put("payload", "test");
+ pushVO.setPayload(payload);
+
+
+ return pushMessage(pushVO);
+ }
+
+ @Override
+ public Boolean geTuiPushMessage(PushVO pushVO) {
+ List<String> cIdList = new ArrayList<>();
+ cIdList.add(getClientIdByUserId(pushVO.getUserId()));
+// return geTuiUtils.pushMsg(cIdList, pushVO.getTitle(), pushVO.getContent());
+ return geTuiUtils.myPushMessage(cIdList, pushVO.getTitle(), pushVO.getContent());
+ }
+
+ @Override
+ public Boolean pushMessageByUserList(PushVO pushVO) {
+
+ if (Func.isEmpty(pushVO.getUserId())) {
+ throw new ServiceException("请填写用户id!");
+ }
+
+ //获取userIdList
+ List<String> userIdList = Arrays.asList(pushVO.getUserId().split(","));
+ List<MessageRecord> messageRecordList = new ArrayList<>();
+
+ userIdList.forEach(userId->{
+ MessageRecord messageRecord = new MessageRecord();
+
+ messageRecord.setContent(pushVO.getContent());
+ messageRecord.setTheme(pushVO.getTitle());
+ messageRecord.setRecipient(userId);
+
+ messageRecordList.add(messageRecord);
+ });
+
+ Boolean aBoolean = pushMessageList(messageRecordList);
+
+ return aBoolean;
+ }
+
/**
* 根据用户id从redis中获取cid
+ *
* @param userId
* @return
*/
- public String getClientIdByUserId(String userId){
- return bladeRedis.get(PUSH_CLIENT_ID+userId);
+ public String getClientIdByUserId(String userId) {
+ if (Func.isEmpty(userId)) {
+ throw new ServiceException("请填写用户id!");
+ }
+ return bladeRedis.get(PUSH_CLIENT_ID + userId);
+ }
+
+ /**
+ * 2.0云函数消息推送
+ *
+ * @param pushVO
+ * @return
+ */
+ public Boolean pushMessage(PushVO pushVO) {
+ RestTemplate template = new RestTemplate();
+ Map<String, Object> params = new LinkedHashMap<>();
+ //用户cId,可数组,可字符串
+ params.put("pushClientid", pushVO.getCIds());
+ //标题
+ params.put("title", pushVO.getTitle());
+ //内容
+ params.put("content", pushVO.getContent());
+
+ params.put("requestId", UUID.randomUUID());
+
+ params.put("payload", pushVO.getPayload());
+ 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