Explorar o código

1.发送消息,跳转url支持多个
2.查询消息跳转url解析为对应客户端类型跳转url

yzc %!s(int64=2) %!d(string=hai) anos
pai
achega
278dbeed5a

+ 6 - 1
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java

@@ -42,10 +42,15 @@ public class SckwMessage {
     private Map<String, Object> params;
 
     /**
-     * 消息跳转url
+     * 消息跳转url(废弃)
      */
     private String msgUrl;
 
+    /**
+     * 消息跳转urls(key为app、pc,value为对应的跳转地址)
+     */
+    private Map<String, String> msgUrls;
+
     /**
      * 推送设备类型
      */

+ 19 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java

@@ -1,5 +1,6 @@
 package com.sckw.message.service;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -122,12 +123,17 @@ public class MessageService {
         if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyList();
         }
+        String clientType = LoginUserHolder.getClientType();
         List<Long> userIds = list.stream().map(MessageListDTO::getCreateBy).toList();
         Map<Long, UserCacheResDto> map = remoteSystemService.queryUserCacheMapByIds(userIds);
         List<KwmMessageListResVO> result = new ArrayList<>(list.size());
         list.forEach(e -> {
             UserCacheResDto user = map.get(e.getCreateBy());
             KwmMessageListResVO res = BeanUtils.copyProperties(e, KwmMessageListResVO.class);
+            if (Objects.nonNull(e.getUrl())) {
+                Map<String, Object> urlMap = JSONObject.parse(e.getUrl());
+                res.setUrl(Objects.isNull(urlMap.get(clientType)) ? null : urlMap.get(clientType).toString());
+            }
             res.setStatusLabel(MsgStatusEnum.getNameByCode(res.getStatus()));
             res.setCategoryLabel(DictEnum.getLabel(DictTypeEnum.MSG_CATEGORY.getType(), e.getCategory()));
             if (Objects.nonNull(user)) {
@@ -207,6 +213,11 @@ public class MessageService {
         }
         KwmMessageUser kwmMessageUser = msgList.get(0);
         KwmMessage message = kwmMessageService.getById(kwmMessageUser.getMsgId());
+        if (Objects.nonNull(message.getUrl())) {
+            String clientType = LoginUserHolder.getClientType();
+            Map<String, Object> urlMap = JSONObject.parse(message.getUrl());
+            message.setUrl(Objects.isNull(urlMap.get(clientType)) ? null : urlMap.get(clientType).toString());
+        }
         //更新用户消息为已读状态
         kwmMessageUserService.readByMsgIds(ids);
         return message;
@@ -268,11 +279,17 @@ public class MessageService {
         if (CollectionUtils.isEmpty(result)) {
             return Collections.emptyList();
         }
+        String clientType = LoginUserHolder.getClientType();
         result.forEach(e -> {
             dto.setStatus(e.getStatus()).setType(e.getType());
             UserMsgCenterLatestMsgDTO msg = kwmMessageUserService.getLatestMsg(dto);
-            e.setId(msg.getId()).setTitle(msg.getTitle()).setContent(msg.getContent())
-                    .setUrl(msg.getUrl()).setCreateTime(msg.getCreateTime());
+            if (Objects.nonNull(msg.getUrl())) {
+                Map<String, Object> urlMap = JSONObject.parse(msg.getUrl());
+                e.setUrl(Objects.isNull(urlMap.get(clientType)) ? null : urlMap.get(clientType).toString());
+            }
+            e.setId(msg.getId()).setTitle(msg.getTitle())
+                    .setContent(msg.getContent())
+                    .setCreateTime(msg.getCreateTime());
         });
         return result;
     }

+ 3 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @desc: message消息处理service
@@ -61,8 +62,8 @@ public class SckwMessageHandlerService {
                 .title(messageEnum.getTitle())
                 .content(content)
                 .clientType(messageEnum.getPushType())
-                .url(sckwMessage.getMsgUrl())
-                .params(JSON.toJSONString(sckwMessage.getParams()))
+                .url(Objects.isNull(sckwMessage.getMsgUrls()) ? null : JSON.toJSONString(sckwMessage.getMsgUrls()))
+                .params(Objects.isNull(sckwMessage.getParams()) ? null : JSON.toJSONString(sckwMessage.getParams()))
                 .build();
         kwmMessage.setCreateBy(createBy);
         kwmMessage.setUpdateBy(createBy);