Kaynağa Gözat

feat(message): message-通知ok

huey 1 yıl önce
ebeveyn
işleme
48de741905

+ 24 - 0
src/main/java/com/dragon/tj/portal/common/enums/message/MsgRecordTypeEnum.java

@@ -0,0 +1,24 @@
+package com.dragon.tj.portal.common.enums.message;
+
+/**
+* @author huey China.
+* @Description : 1 信息 2 消息通知
+* @Date Created in
+*/
+public enum MsgRecordTypeEnum {
+
+    MESSAGE(1, "信息"),
+    NOTICE(2, "消息通知");
+
+    private final Integer value;
+    private final String name;
+
+    MsgRecordTypeEnum(Integer value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+
+    public Integer value() {
+        return this.value;
+    }
+}

+ 0 - 14
src/main/java/com/dragon/tj/portal/component/message/KafkaInitialConfiguration.java

@@ -52,18 +52,4 @@ public class KafkaInitialConfiguration {
         return infoBase;
     }
 
-//    @Bean
-//    public NewTopic initialTopic() {
-//
-//        return new NewTopic(sseTopic, 1, (short) 1);
-//
-//    }
-//
-//    // 如果要修改分区数,只需修改配置值重启项目即可
-//    // 修改分区数并不会导致数据的丢失,但是分区数只能增大不能减小
-//    @Bean
-//    public NewTopic updateTopic() {
-//        return new NewTopic(sseTopic, 1, (short) 1);
-//
-//    }
 }

+ 0 - 1
src/main/java/com/dragon/tj/portal/component/message/MessageConsumer.java

@@ -39,7 +39,6 @@ public class MessageConsumer {
      * @param msg
      * @param ack
      */
-//    @KafkaListener(topics = {"sseTopic"}, clientIdPrefix = "${spring.application.name}", id = "openapi-be-sse-connection-", idIsGroup = false, groupId = "openapi-be-sse-connection-" + "#{T(java.util.UUID).randomUUID()}")
     @KafkaListener(topics = KafkaInitialConfiguration.sseTopic)
     public void sseConnectionProcess(String msg, Acknowledgment ack) {
         log.info("get kafka msg from topic:{}, msg:{}", KafkaInitialConfiguration.sseTopic, msg);

+ 1 - 12
src/main/java/com/dragon/tj/portal/component/message/SseController.java

@@ -47,18 +47,7 @@ public class SseController {
         return emitter;
     }
 
-    /**
-     * @author huey China.
-     * @Description : 信息发送
-     * @Date Created in 2023/7/11 15:14
-     */
-    @PostMapping("/publish")
-    public R publish(@Validated @RequestBody MessageInfoReq messageInfoReq) {
-        log.info("sseController req param is {}", JSON.toJSONString(messageInfoReq));
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        log.info("sseController current people is {}", JSON.toJSONString(loginUser));
-        return messageInfoService.push(messageInfoReq, loginUser);
-    }
+
 
 
 }

+ 16 - 0
src/main/java/com/dragon/tj/portal/controller/MessageCenterController.java

@@ -2,7 +2,10 @@ package com.dragon.tj.portal.controller;
 
 
 import com.alibaba.fastjson.JSON;
+import com.dragon.tj.portal.auth.model.LoginUser;
+import com.dragon.tj.portal.auth.util.SecurityUtils;
 import com.dragon.tj.portal.common.base.R;
+import com.dragon.tj.portal.common.dto.message.MessageInfoReq;
 import com.dragon.tj.portal.common.dto.message.MessageInfoSend;
 import com.dragon.tj.portal.component.message.KafkaInitialConfiguration;
 import com.dragon.tj.portal.component.message.MessageProducer;
@@ -34,6 +37,18 @@ public class MessageCenterController {
     @Autowired
     private MessageProducer producer;
 
+    /**
+     * @author huey China.
+     * @Description : 信息发送
+     * @Date Created in 2023/7/11 15:14
+     */
+    @PostMapping("/publish")
+    public R publish(@Validated @RequestBody MessageInfoReq messageInfoReq) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        log.info("api/message/publish-req-is {}-{}",JSON.toJSONString(loginUser), JSON.toJSONString(messageInfoReq));
+        return messageInfoService.push(messageInfoReq, loginUser);
+    }
+
     /**
      * @author huey China.
      * @Description : 消息提醒发送
@@ -45,5 +60,6 @@ public class MessageCenterController {
         return R.ok();
     }
 
+
 }
 

+ 0 - 21
src/main/java/com/dragon/tj/portal/controller/NoticeInfoController.java

@@ -1,21 +0,0 @@
-package com.dragon.tj.portal.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 消息表 前端控制器
- * </p>
- *
- * @author huey
- * @since 2023-07-11
- */
-@RestController
-@RequestMapping("/noticeInfo")
-public class NoticeInfoController {
-
-}
-

+ 33 - 10
src/main/java/com/dragon/tj/portal/service/impl/MessageInfoServiceImpl.java

@@ -2,22 +2,21 @@ package com.dragon.tj.portal.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dragon.tj.portal.auth.model.LoginUser;
 import com.dragon.tj.portal.auth.web.service.SysDeptService;
 import com.dragon.tj.portal.common.base.R;
 import com.dragon.tj.portal.common.constants.BusinessConstants;
-import com.dragon.tj.portal.common.convert.mesage.MessageReqConvert;
 import com.dragon.tj.portal.common.convert.mesage.MessageInfoVOConvert;
+import com.dragon.tj.portal.common.convert.mesage.MessageReqConvert;
 import com.dragon.tj.portal.common.dto.message.MessageInfoReq;
 import com.dragon.tj.portal.common.dto.message.MessageInfoSend;
 import com.dragon.tj.portal.common.enums.message.MessageInfoErrorEnums;
-import com.dragon.tj.portal.common.enums.message.ScopeEnums;
+import com.dragon.tj.portal.common.enums.message.MsgRecordTypeEnum;
 import com.dragon.tj.portal.common.enums.message.ReadStatusEnum;
+import com.dragon.tj.portal.common.enums.message.ScopeEnums;
 import com.dragon.tj.portal.common.vo.message.MessageInfoParam;
 import com.dragon.tj.portal.common.vo.message.MessageInfoVO;
 import com.dragon.tj.portal.common.vo.message.MessagePageParam;
@@ -26,14 +25,19 @@ import com.dragon.tj.portal.component.message.KafkaInitialConfiguration;
 import com.dragon.tj.portal.component.message.MessageProducer;
 import com.dragon.tj.portal.entity.MessageInfo;
 import com.dragon.tj.portal.entity.MessageInfoScope;
+import com.dragon.tj.portal.entity.MsgRecord;
 import com.dragon.tj.portal.mapper.MessageInfoMapper;
 import com.dragon.tj.portal.service.MessageInfoScopeService;
 import com.dragon.tj.portal.service.MessageInfoService;
+import com.dragon.tj.portal.service.MsgRecordService;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Set;
 
@@ -45,6 +49,7 @@ import java.util.Set;
  * @author huey
  * @since 2023-06-15
  */
+@Slf4j
 @Service
 public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, MessageInfo> implements MessageInfoService {
 
@@ -63,6 +68,9 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
     @Autowired
     private MessageInfoVOConvert messageInfoVOConvert;
 
+    @Autowired
+    private MsgRecordService msgRecordService;
+
     @Override
     public R push(MessageInfoReq messageInfoReq, LoginUser loginUser) {
         return R.ok(this.doMessage(messageInfoReq, loginUser));
@@ -94,7 +102,7 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
     @Override
     public boolean reads(List<Long> ids) {
         List<MessageInfo> list = Lists.newArrayList();
-        ids.forEach(e->{
+        ids.forEach(e -> {
             MessageInfo messageInfo = new MessageInfo();
             messageInfo.setReadStatus(ReadStatusEnum.YES.value());
             messageInfo.setId(e);
@@ -125,11 +133,21 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
         if (CollUtil.isNotEmpty(messageClientIds)) {
             MessageInfoSend messageInfoSend = this.doSaveMessageInfo(messageInfoReq, messageClientIds, loginUser);
             isSend = producer.send(KafkaInitialConfiguration.sseTopic, JSON.toJSONString(messageInfoSend));
+            if (isSend) {
+                MsgRecord msgRecord = new MsgRecord();
+                msgRecord.setCreateBy("admin");
+                msgRecord.setCreateTime(LocalDateTime.now());
+                msgRecord.setReqContent(JSON.toJSONString(messageInfoSend));
+                msgRecord.setType(MsgRecordTypeEnum.MESSAGE.value());
+                msgRecordService.save(msgRecord);
+            }
         }
         return isSend;
     }
 
-    private MessageInfoSend doSaveMessageInfo(MessageInfoReq messageInfoReq, Set<String> messageClientIds, LoginUser loginUser) {
+    @Transactional(rollbackFor = Exception.class)
+    public MessageInfoSend doSaveMessageInfo(MessageInfoReq messageInfoReq, Set<String> messageClientIds, LoginUser loginUser) {
+        log.info("doSaveMessageInfo-start-{}-{}",loginUser.getIdCard(),messageClientIds);
         Integer messageType = messageInfoReq.getMessageType();
         ScopeEnums scopeEnums = ScopeEnums.ofMessageType(messageType);
         List<MessageInfoScope> insertList = Lists.newArrayList();
@@ -138,7 +156,8 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
         messageInfoSend.setClientIds(messageClientIds);
         messageClientIds.forEach(e -> {
             MessageInfoScope messageInfoScope = new MessageInfoScope();
-            messageInfoScope.setScopeId(e);
+            messageInfoScope.setScopeId(loginUser.getOrgCode());
+            messageInfoScope.setMemberId(e);
             messageInfoScope.setScopeType(scopeEnums.value());
             //messageInfoScope.setScopeLevel("");
             insertList.add(messageInfoScope);
@@ -167,6 +186,7 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
                 log.warn("消息中心 存储失败 {}");
             }
         }
+        log.info("doSaveMessageInfo-end-{}-{}",loginUser.getIdCard(),messageClientIds);
         return messageInfoSend;
     }
 
@@ -201,7 +221,7 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
      */
     private boolean doMessage(MessageInfoReq messageInfoReq, LoginUser loginUser) {
 
-        this.validate(messageInfoReq);
+        this.validate(messageInfoReq, loginUser.getIdCard());
         return this.transferIds(messageInfoReq, loginUser);
     }
 
@@ -210,11 +230,14 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
      * @Description : md5 验证消息唯一性
      * @Date Created in 2023/6/16 16:15
      */
-    private void validate(MessageInfoReq messageInfoReq) {
-//        String correctHash = DigestUtils.md5Hex("currentId" + messageInfoReq.getT());
+    private void validate(MessageInfoReq messageInfoReq, String idCard) {
+        log.info("validate-start-{}", idCard);
+//        String correctHash = DigestUtils.md5Hex(idCard + messageInfoReq.getT());
 //        if (!correctHash.equalsIgnoreCase(messageInfoReq.getK())) {
 //            return;
 //        }
+        log.info("validate-end-{}", idCard);
+
     }
 
 }