From d7953d723a0b629fd9adc55ca140a93d27ec1887 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 30 Sep 2025 10:30:24 +0800
Subject: [PATCH] feat(rabbitmq): 新增知识库同步功能

---
 src/main/java/cc/mrbird/febs/ai/service/AiKnowledgeFileService.java          |    2 
 src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java          |    1 
 src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java |   36 ++++-
 src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java           |   16 ++
 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java              |  253 ++++++++++++++++++++++--------------------
 src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java            |    1 
 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java             |   11 +
 7 files changed, 189 insertions(+), 131 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiKnowledgeFileService.java b/src/main/java/cc/mrbird/febs/ai/service/AiKnowledgeFileService.java
index d501086..5c62103 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiKnowledgeFileService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiKnowledgeFileService.java
@@ -12,4 +12,6 @@
     FebsResponse add(AiKnowledgeFile dto);
 
     FebsResponse update(AiKnowledgeFile dto);
+
+    void getAddKnowledge(String id);
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java
index ba6b536..68b811f 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java
@@ -12,6 +12,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -38,6 +39,7 @@
 
     private final AiKnowledgeFileMapper aiKnowledgeFileMapper;
     private final AiCompanyService aiCompanyService;
+    private final AgentProducer agentProducer;
 
     @Override
     public IPage<AiKnowledgeFile> listInPage(AiKnowledgeFile dto, QueryRequest request) {
@@ -62,10 +64,26 @@
         entity.setCreatedTime(new Date());
         this.save(entity);
 
+        agentProducer.sendAddKnowledge( entity.getId());
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
+    public FebsResponse update(AiKnowledgeFile dto) {
+        return null;
+    }
+
+    @Override
+    public void getAddKnowledge(String id) {
+        AiKnowledgeFile aiKnowledgeFile = this.getById(id);
+        if (ObjectUtil.isNull(aiKnowledgeFile)){
+            return;
+        }
+
         String categoryId = null;
         String knowledgeId = null;
-        if (StrUtil.isNotEmpty(entity.getCompanyId())){
-            AiCompany aiCompany = aiCompanyService.getById(entity.getCompanyId());
+        if (StrUtil.isNotEmpty(aiKnowledgeFile.getCompanyId())){
+            AiCompany aiCompany = aiCompanyService.getById(aiKnowledgeFile.getCompanyId());
             if (StrUtil.isNotEmpty(aiCompany.getCategoryId())){
                 categoryId = aiCompany.getCategoryId();
                 knowledgeId = aiCompany.getKnowledgeId();
@@ -75,9 +93,10 @@
             knowledgeId = KnowledgeBaseUtil.DEFAULT_KNOWLEDGE_ID;
         }
 
-        String fileId = KnowledgeBaseUtil.uploadFileToAppData(entity.getSavePath(), categoryId);
+        String fileId = KnowledgeBaseUtil.uploadFileToAppData(aiKnowledgeFile.getSavePath(), categoryId);
         if (StrUtil.isBlank(fileId)){
-            throw new FebsException("初始化应用数据失败");
+            log.info("初始化应用数据失败");
+            return ;
         }
 
         String jobId = KnowledgeBaseUtil.updateKnowledgeBase(fileId, knowledgeId, null);
@@ -85,13 +104,8 @@
                 Wrappers.lambdaUpdate(AiKnowledgeFile.class)
                         .set(AiKnowledgeFile::getFileId, fileId)
                         .set(AiKnowledgeFile::getJobId, jobId)
-                        .eq(AiKnowledgeFile::getId, entity.getId())
-                );
-        return new FebsResponse().success().message("操作成功");
-    }
+                        .eq(AiKnowledgeFile::getId, aiKnowledgeFile.getId())
+        );
 
-    @Override
-    public FebsResponse update(AiKnowledgeFile dto) {
-        return null;
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
index d5a02b7..59168bc 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -270,4 +270,20 @@
         return BindingBuilder.bind(clothesAddCollectQueue()).to(clothesAddCollectExchange()).with(RabbitQueueEnum.CLOTHES_ADD_COLLECT.getRoute());
     }
 
+
+    @Bean
+    public DirectExchange knowledgeAddExchange() {
+        return new DirectExchange(RabbitQueueEnum.KNOWLEDGE_ADD_ALI.getExchange());
+    }
+
+    @Bean
+    public Queue knowledgeAddQueue() {
+        return new Queue(RabbitQueueEnum.KNOWLEDGE_ADD_ALI.getQueue());
+    }
+
+    @Bean
+    public Binding knowledgeAddBind() {
+        return BindingBuilder.bind(knowledgeAddQueue()).to(knowledgeAddExchange()).with(RabbitQueueEnum.KNOWLEDGE_ADD_ALI.getRoute());
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
index e54282e..6f948b0 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -22,4 +22,5 @@
     public static final String CLOTHES_ORDER_CANCEL_DELAY = "queue_order_delay_qay_clothes";
     public static final String CLOTHES_ADD_LIKE = "queue_clothes_add_like";
     public static final String CLOTHES_ADD_COLLECT = "queue_clothes_add_collect";
+    public static final String KNOWLEDGE_ADD_ALI = "queue_knowledge_add_ali";
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index bb898ce..5c9b061 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.rabbit.consumer;
 
+import cc.mrbird.febs.ai.service.AiKnowledgeFileService;
 import cc.mrbird.febs.mall.service.*;
 import cc.mrbird.febs.rabbit.constants.QueueConstants;
 import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum;
@@ -20,7 +21,7 @@
  **/
 @Slf4j
 @Component
-@ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true")
+//@ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true")
 public class AgentConsumer {
 
     @Autowired
@@ -34,130 +35,142 @@
     private IMemberProfitService memberProfitService;
     @Autowired
     private HappyActivityService happyActivityService;
-
-    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
-    public void agentReturn(Message message, Channel channel) {
-        log.info("消费者:{}", new String(message.getBody()));
-    }
-
-    @RabbitListener(queues = QueueConstants.CLOTHES_ORDER_CANCEL_DELAY)
-    public void orderCancelDelayClothes(String id) {
-        try {
-            apiClothesOrderService.orderCancelDelayClothes(Long.parseLong(id));
-        } catch (Exception e) {
-            log.error("订单超时支付异常", e);
-        }
-    }
-
-    @RabbitListener(queues = "queue_order_delay_qay")
-    public void orderCancelDelay(String id) {
-        try {
-            orderInfoService.autoCancelOrder(Long.parseLong(id));
-        } catch (Exception e) {
-            log.error("订单超时支付异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
-    public void agentAutoLevelUp(String id) {
-        log.info("收到代理自动升级消息:{}", id);
-        try {
-            agentService.autoUpAgentLevel(Long.parseLong(id));
-        } catch (Exception e) {
-            log.error("代理自动升级异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
-    public void agentReturnMoney(String orderId) {
-        log.info("收到返利消息:{}", orderId);
-        try {
-            agentService.returnMoneyToAgent(Long.parseLong(orderId));
-        } catch (Exception e) {
-            log.error("返利异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
-    public void orderReturnMoney(String orderId) {
-        log.info("收到订单返利消息:{}", orderId);
-        try {
-            memberProfitService.dynamicProfit(Long.parseLong(orderId));
-        } catch (Exception e) {
-            log.error("订单返利异常:", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.ORDER_COUPON)
-    public void getOrderCoupon(Long orderId) {
-        log.info("收到使用优惠卷消息:{}", orderId);
-        try {
-            memberProfitService.getOrderCoupon(orderId);
-        } catch (Exception e) {
-            log.error("使用优惠卷异常:", e);
-        }
-    }
-
     @Autowired
-    private IVipCommonService vipCommonService;
+    private AiKnowledgeFileService aiKnowledgeFileService;
 
-    @RabbitListener(queues = QueueConstants.GET_SCORE_MSG)
-    public void getScoreMsg(Long orderId) {
-        log.info("收到积分消息:{}", orderId);
-        try {
-            vipCommonService.getScore(orderId);
-        } catch (Exception e) {
-            log.error("获取积分消息异常", e);
-        }
-    }
+//    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
+//    public void agentReturn(Message message, Channel channel) {
+//        log.info("消费者:{}", new String(message.getBody()));
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.CLOTHES_ORDER_CANCEL_DELAY)
+//    public void orderCancelDelayClothes(String id) {
+//        try {
+//            apiClothesOrderService.orderCancelDelayClothes(Long.parseLong(id));
+//        } catch (Exception e) {
+//            log.error("订单超时支付异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = "queue_order_delay_qay")
+//    public void orderCancelDelay(String id) {
+//        try {
+//            orderInfoService.autoCancelOrder(Long.parseLong(id));
+//        } catch (Exception e) {
+//            log.error("订单超时支付异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
+//    public void agentAutoLevelUp(String id) {
+//        log.info("收到代理自动升级消息:{}", id);
+//        try {
+//            agentService.autoUpAgentLevel(Long.parseLong(id));
+//        } catch (Exception e) {
+//            log.error("代理自动升级异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
+//    public void agentReturnMoney(String orderId) {
+//        log.info("收到返利消息:{}", orderId);
+//        try {
+//            agentService.returnMoneyToAgent(Long.parseLong(orderId));
+//        } catch (Exception e) {
+//            log.error("返利异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
+//    public void orderReturnMoney(String orderId) {
+//        log.info("收到订单返利消息:{}", orderId);
+//        try {
+//            memberProfitService.dynamicProfit(Long.parseLong(orderId));
+//        } catch (Exception e) {
+//            log.error("订单返利异常:", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.ORDER_COUPON)
+//    public void getOrderCoupon(Long orderId) {
+//        log.info("收到使用优惠卷消息:{}", orderId);
+//        try {
+//            memberProfitService.getOrderCoupon(orderId);
+//        } catch (Exception e) {
+//            log.error("使用优惠卷异常:", e);
+//        }
+//    }
+//
+//    @Autowired
+//    private IVipCommonService vipCommonService;
+//
+//    @RabbitListener(queues = QueueConstants.GET_SCORE_MSG)
+//    public void getScoreMsg(Long orderId) {
+//        log.info("收到积分消息:{}", orderId);
+//        try {
+//            vipCommonService.getScore(orderId);
+//        } catch (Exception e) {
+//            log.error("获取积分消息异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.VIP_LEVEL_UP)
+//    public void vipLevelUp(Long orderId) {
+//        log.info("收到会员升级消息:{}", orderId);
+//        try {
+//            vipCommonService.levelUp(orderId);
+//        } catch (Exception e) {
+//            log.error("会员升级消息异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.SALE_LEVEL_UP)
+//    public void saleLevelUp(Long orderId) {
+//        log.info("收到团长升级:{}", orderId);
+//        try {
+//            vipCommonService.saleLevelUp(orderId);
+//        } catch (Exception e) {
+//            log.error("团长升级消息异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.ACTIVITY_ORDER_ITEM_CHECK)
+//    public void checkActivityItem(Long orderId) {
+//        log.info("收到核销活动门票:{}", orderId);
+//        try {
+//            happyActivityService.checkActivityItem(orderId);
+//        } catch (Exception e) {
+//            log.error("核销活动门票异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.CLOTHES_ADD_LIKE)
+//    public void getAddLike(Long socialId) {
+//        log.info("点赞:{}", socialId);
+//        try {
+//            happyActivityService.getAddLike(socialId);
+//        } catch (Exception e) {
+//            log.error("点赞异常", e);
+//        }
+//    }
+//
+//    @RabbitListener(queues = QueueConstants.CLOTHES_ADD_COLLECT)
+//    public void getAddCollect(Long socialId) {
+//        log.info("收藏:{}", socialId);
+//        try {
+//            happyActivityService.getAddCollect(socialId);
+//        } catch (Exception e) {
+//            log.error("收藏异常", e);
+//        }
+//    }
 
-    @RabbitListener(queues = QueueConstants.VIP_LEVEL_UP)
-    public void vipLevelUp(Long orderId) {
-        log.info("收到会员升级消息:{}", orderId);
+    @RabbitListener(queues = QueueConstants.KNOWLEDGE_ADD_ALI)
+    public void getAddKnowledge(String id) {
+        log.info("知识库:{}", id);
         try {
-            vipCommonService.levelUp(orderId);
+            aiKnowledgeFileService.getAddKnowledge(id);
         } catch (Exception e) {
-            log.error("会员升级消息异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.SALE_LEVEL_UP)
-    public void saleLevelUp(Long orderId) {
-        log.info("收到团长升级:{}", orderId);
-        try {
-            vipCommonService.saleLevelUp(orderId);
-        } catch (Exception e) {
-            log.error("团长升级消息异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.ACTIVITY_ORDER_ITEM_CHECK)
-    public void checkActivityItem(Long orderId) {
-        log.info("收到核销活动门票:{}", orderId);
-        try {
-            happyActivityService.checkActivityItem(orderId);
-        } catch (Exception e) {
-            log.error("核销活动门票异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.CLOTHES_ADD_LIKE)
-    public void getAddLike(Long socialId) {
-        log.info("点赞:{}", socialId);
-        try {
-            happyActivityService.getAddLike(socialId);
-        } catch (Exception e) {
-            log.error("点赞异常", e);
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.CLOTHES_ADD_COLLECT)
-    public void getAddCollect(Long socialId) {
-        log.info("收藏:{}", socialId);
-        try {
-            happyActivityService.getAddCollect(socialId);
-        } catch (Exception e) {
-            log.error("收藏异常", e);
+            log.error("知识库异常", e);
         }
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
index e2fe106..add94dd 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -7,6 +7,7 @@
 public enum RabbitQueueEnum {
 
 
+    KNOWLEDGE_ADD_ALI("exchange_knowledge_add_ali", "route_key_knowledge_add_ali", QueueConstants.KNOWLEDGE_ADD_ALI),
     CLOTHES_ADD_COLLECT("exchange_clothes_add_collect", "route_key_clothes_add_collect", QueueConstants.CLOTHES_ADD_COLLECT),
     CLOTHES_ADD_LIKE("exchange_clothes_add_like", "route_key_clothes_add_like", QueueConstants.CLOTHES_ADD_LIKE),
     ACTIVITY_ORDER_ITEM_CHECK("exchange_activity_order_item_check", "route_key_activity_order_item_check", QueueConstants.ACTIVITY_ORDER_ITEM_CHECK),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index 1bdfed6..32d18c2 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -136,4 +136,15 @@
         CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
         rabbitTemplate.convertAndSend(RabbitQueueEnum.CLOTHES_ADD_COLLECT.getExchange(), RabbitQueueEnum.CLOTHES_ADD_COLLECT.getRoute(), socialId, correlationData);
     }
+
+    public void sendAddKnowledge(String id) {
+        log.info("知识库:{}", id);
+
+        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+        rabbitTemplate.convertAndSend(
+                RabbitQueueEnum.CLOTHES_ADD_COLLECT.getExchange(),
+                RabbitQueueEnum.CLOTHES_ADD_COLLECT.getRoute(),
+                id,
+                correlationData);
+    }
 }

--
Gitblit v1.9.1