Parcourir la source

feat(external): 添加中车消息处理器日志记录和商品规格处理优化

- 在多个消息处理器中添加JSON格式的日志记录功能
- 优化商品规格属性的处理逻辑,支持逗号拼接的属性值格式
- 添加商品导入时的属性映射转换功能
- 实现商品信息同步到Elasticsearch的功能接口
- 修复订单处理相关消息处理器中的参数位置问题
肖路 il y a 1 semaine
Parent
commit
32939e0145
33 fichiers modifiés avec 177 ajouts et 85 suppressions
  1. 3 1
      ruoyi-auth/src/main/resources/application.yml
  2. 1 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AccountActiveMessageHandler.java
  3. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleApplyMessageHandler.java
  4. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleCancelMessageHandler.java
  5. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleDeliverMessageHandler.java
  6. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleReceiveConfirmMessageHandler.java
  7. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleRefundNoticeMessageHandler.java
  8. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillAbnormalPassMessageHandler.java
  9. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillConfirmMessageHandler.java
  10. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillCreateMessageHandler.java
  11. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillFinishMessageHandler.java
  12. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillModifyMessageHandler.java
  13. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillRejctPassMessageHandler.java
  14. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillRuleCreateMessageHandler.java
  15. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillWaitInvoiceMessageHandler.java
  16. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsImportBlockMessageHandler.java
  17. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsOffShelfMessageHandler.java
  18. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsOnShelfFailMessageHandler.java
  19. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsWaitAuditMessageHandler.java
  20. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/InvoiceApplyMessageHandler.java
  21. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/OrderCancelApplyMessageHandler.java
  22. 1 2
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/OrderCreateMessageHandler.java
  23. 2 1
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/OrderPreConfirmMessageHandler.java
  24. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/PrepareCancelMessageHandler.java
  25. 1 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/PrepareConfirmMessageHandler.java
  26. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/PrepareCreateMessageHandler.java
  27. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/SettlementCreateMessageHandler.java
  28. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/StockLockMessageHandler.java
  29. 2 0
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/StockUnlockMessageHandler.java
  30. 30 14
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/handler/impl/ZhongChePushStrategy.java
  31. 9 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/IndexProductController.java
  32. 5 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductBaseService.java
  33. 77 67
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBaseServiceImpl.java

+ 3 - 1
ruoyi-auth/src/main/resources/application.yml

@@ -36,4 +36,6 @@ spring:
 tr:
   wechat:
     appid: wx3d002d66868332a1
-    secret: 269c120e6973c2a15a97f564d2c4c65
+    # 注意:请从微信公众平台获取正确的32位AppSecret
+    # 当前配置的secret长度不足,请访问 https://mp.weixin.qq.com/ 查看或重置
+    secret: 269c120e6973c2a15a97f564d2c4c655

+ 1 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AccountActiveMessageHandler.java

@@ -50,6 +50,7 @@ public class AccountActiveMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("账户激活:{}", JSONUtil.toJsonStr(messageBo));
         Map<String, Object> content = (Map<String, Object>) messageBo.getContent();
         String username = String.valueOf(content.get("username"));
         return new MessageVo("1");

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleApplyMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.zhongche.aftersale.bo.AfterSaleDetailBo;
@@ -52,6 +53,7 @@ public class AfterSaleApplyMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("售后申请,message={}" , JSONUtil.toJsonStr(messageBo));
         String afterSaleNo = (String) messageBo.getContent().get("afterSaleNo");
         AfterSaleDetailBo bo = new AfterSaleDetailBo();
         bo.setAfterSaleNo(afterSaleNo);

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleCancelMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -28,6 +29,7 @@ public class AfterSaleCancelMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("取消售后单:{}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleDeliverMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -29,6 +30,7 @@ public class AfterSaleDeliverMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理售后发货消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleReceiveConfirmMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -33,6 +34,7 @@ public class AfterSaleReceiveConfirmMessageHandler implements MallMessageHandler
     }*/
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("售后收货确认,message={}" , JSONUtil.toJsonStr(messageBo));
         String afterSaleNo = (String) messageBo.getContent().get("afterSaleNo");
         String outgoingCode = (String) messageBo.getContent().get("outgoingCode");
         OrderReturnDto dto = remoteExternalOrderService.confirmOrderDeliver(afterSaleNo,outgoingCode);

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/AfterSaleRefundNoticeMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.zhongche.aftersale.bo.AfterSaleRefundBo;
@@ -34,6 +35,7 @@ public class AfterSaleRefundNoticeMessageHandler implements MallMessageHandler {
     }*/
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("售后退款通知,message={}" , JSONUtil.toJsonStr(messageBo));
         String afterSaleNo = (String) messageBo.getContent().get("afterSaleNo");
         AfterSaleRefundBo dto = new AfterSaleRefundBo();
         dto.setAfterSaleNo(afterSaleNo);

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillAbnormalPassMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillAbnormalPassMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("异议单审核通过消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String abnormalId = (String) messageBo.getContent().get("abnormalId");
         return new MessageVo("0","取消订单失败");
     }

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillConfirmMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillConfirmMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理采购确认订单消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         String billId = (String) messageBo.getContent().get("billId");
         String remark = (String) messageBo.getContent().get("remark");
         return new MessageVo("0","取消订单失败");

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillCreateMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillCreateMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理订单创建消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String billId = (String) messageBo.getContent().get("billId");
         return new MessageVo("0","取消订单失败");
     }

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillFinishMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillFinishMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理账单完成消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String billId = (String) messageBo.getContent().get("billId");
 
         return new MessageVo("0","取消订单失败");

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillModifyMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillModifyMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理账单修改消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String billId = (String) messageBo.getContent().get("billId");
         String purchaserRemark = (String) messageBo.getContent().get("purchaserRemark");
 

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillRejctPassMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -27,6 +28,7 @@ public class BillRejctPassMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理订单异常处理通过消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String abnormalId = (String) messageBo.getContent().get("abnormalId");
 
         return new MessageVo("0","取消订单失败");

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillRuleCreateMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillRuleCreateMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理开票规则创建消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String billRuleNo = (String) messageBo.getContent().get("billRuleNo");
         String billCycle = (String) messageBo.getContent().get("billCycle");
         String billDay = (String) messageBo.getContent().get("billDay");

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/BillWaitInvoiceMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -26,6 +27,7 @@ public class BillWaitInvoiceMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理订单待开票消息,message={}" , JSONUtil.toJsonStr(messageBo));
         String batchNo = (String) messageBo.getContent().get("batchNo");
 
         return new MessageVo("0","取消订单失败");

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsImportBlockMessageHandler.java

@@ -7,6 +7,7 @@ package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -34,6 +35,7 @@ public class GoodsImportBlockMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理商品导入消息,message={}" , JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsOffShelfMessageHandler.java

@@ -1,6 +1,7 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -30,6 +31,7 @@ public class GoodsOffShelfMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理商品下架消息,message={}" , JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsOnShelfFailMessageHandler.java

@@ -1,6 +1,7 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -30,6 +31,7 @@ public class GoodsOnShelfFailMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理商品上架失败消息,message={}" , JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/GoodsWaitAuditMessageHandler.java

@@ -2,6 +2,7 @@ package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -32,6 +33,7 @@ public class GoodsWaitAuditMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理商品待审核消息,message={}" , JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/InvoiceApplyMessageHandler.java

@@ -2,6 +2,7 @@ package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -40,6 +41,7 @@ public class InvoiceApplyMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理开票申请消息,message={}", JSONUtil.toJsonStr(messageBo));
         Map<String, Object> content = (Map<String, Object>) messageBo.getContent();
         String applyNo = String.valueOf(content.get("applyNo"));
 

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/OrderCancelApplyMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -34,6 +35,7 @@ public class OrderCancelApplyMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理取消订单申请消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 1 - 2
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/OrderCreateMessageHandler.java

@@ -59,9 +59,8 @@ public class OrderCreateMessageHandler implements MallMessageHandler {
     @Override
     public MessageVo handle(MessageBo messageBo) {
         //获取中车订单号获取订单详情,我们电商平台没有接单功能胡哥说的,然后默认接单 就发起接单的请求
-
-        String orderNo = (String) messageBo.getContent().get("orderNo");
         log.info("处理新订单消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
+        String orderNo = (String) messageBo.getContent().get("orderNo");
         OrderDetailBo orderDetailBo = new OrderDetailBo();
         orderDetailBo.setOrderNo(orderNo);
         OrderDetailVo orderDetailVo = zhongChePullController.mallOrderDetail(orderDetailBo);

+ 2 - 1
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/OrderPreConfirmMessageHandler.java

@@ -38,8 +38,9 @@ public class OrderPreConfirmMessageHandler implements MallMessageHandler {
     @Override
     public MessageVo handle(MessageBo messageBo) {
         //获取中车订单号获取订单详情,我们电商平台没有接单功能胡哥说的,然后默认接单 就发起接单的请求
-        String orderNo = (String) messageBo.getContent().get("orderNo");
         log.info("处理预设订单消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
+        String orderNo = (String) messageBo.getContent().get("orderNo");
+
         return new MessageVo("1");
     }
 

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/PrepareCancelMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -34,6 +35,7 @@ public class PrepareCancelMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理取消预约消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 1 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/PrepareConfirmMessageHandler.java

@@ -34,6 +34,7 @@ public class PrepareConfirmMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/PrepareCreateMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.zhongche.vo.PrepareOrderDetailRespVo;
@@ -33,6 +34,7 @@ public class PrepareCreateMessageHandler  implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理预设订单消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/SettlementCreateMessageHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -33,6 +34,7 @@ public class SettlementCreateMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理结算创建消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/StockLockMessageHandler.java

@@ -2,6 +2,7 @@ package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -38,6 +39,7 @@ public class StockLockMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理库存锁定消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 2 - 0
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/controller/zhongche/handle/impl/StockUnlockMessageHandler.java

@@ -1,6 +1,7 @@
 package org.dromara.external.controller.zhongche.handle.impl;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.external.api.zhongche.domain.bo.MessageBo;
@@ -30,6 +31,7 @@ public class StockUnlockMessageHandler implements MallMessageHandler {
 
     @Override
     public MessageVo handle(MessageBo messageBo) {
+        log.info("处理库存解锁消息参数,messageBo={}", JSONUtil.toJsonStr(messageBo));
         return new MessageVo("1");
     }
     /*@Override

+ 30 - 14
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/handler/impl/ZhongChePushStrategy.java

@@ -175,19 +175,35 @@ public class ZhongChePushStrategy implements ProductPushStrategy {
             goodsImportItem.setDescription(productAggregateMap.get(item.getProductId()).getDescription());
 
             //TODO 商品规格  默认 颜色:白色
-//            if (StringUtils.isNotBlank(productAggregateMap.get(item.getProductId()).getDiyAttributesList())) {
-//                String diyAttributesList = productAggregateMap.get(item.getProductId()).getDiyAttributesList();
-//                List<Map> list = JSONUtil.toList(diyAttributesList, Map.class);
-//                //格式为[{attributeKey:"",attributeValue:""}]转换成 [{key:value}]
-//                List<Map<String, String>> map = list.stream().map(e -> {
-//                    Map<String, String> result = new HashMap<>();
-//                    result.put(e.get("attributeKey").toString(), e.get("attributeValue").toString());
-//                    return result;
-//                }).collect(Collectors.toList());
-//                goodsImportItem.setProperties(JSONUtil.toJsonStr(map));
-//            }else{
-                goodsImportItem.setProperties("{\"保质期\":\"12个月\"}");
-//            }
+            if (StringUtils.isNotBlank(productAggregateMap.get(item.getProductId()).getDiyAttributesList())) {
+                String diyAttributesList = productAggregateMap.get(item.getProductId()).getDiyAttributesList();
+                List<Map> list = JSONUtil.toList(diyAttributesList, Map.class);
+                //格式为{attributeKey:"",attributeValue:""}转换成 {key:value,key:value,key:value|:value}格式
+                StringBuilder sb = new StringBuilder();
+                sb.append("{");
+                for (int i = 0; i < list.size(); i++) {
+                    Map<String, String> e = list.get(i);
+                    String attributeKey = e.get("attributeKey");
+                    String attributeValue = e.get("attributeValue");
+
+                    // 处理 attributeValue 可能是逗号拼接的情况
+                    if (attributeValue != null && attributeValue.contains(",")) {
+                        // 如果是逗号拼接的值,保持原样或根据需求处理
+                        sb.append("\"").append(attributeKey).append("\":\"").append(attributeValue).append("\"");
+                    } else {
+                        sb.append("\"").append(attributeKey).append("\":\"").append(attributeValue).append("\"");
+                    }
+
+                    // 添加逗号分隔符(除了最后一个元素)
+                    if (i < list.size() - 1) {
+                        sb.append(",");
+                    }
+                }
+                sb.append("}");
+                goodsImportItem.setProperties(sb.toString());
+            }else{
+                goodsImportItem.setProperties("{\"颜色\":\"混色\"}");
+            }
 
             //TODO 是否自营
             goodsImportItem.setIsSelfOperated(1);
@@ -201,7 +217,7 @@ public class ZhongChePushStrategy implements ProductPushStrategy {
 
             //TODO 税收编码   默认填 1
             if (ObjectUtil.isNotEmpty(item.getTaxCode())){
-                goodsImportItem.setTaxCode( item.getTaxCode());
+                goodsImportItem.setTaxCode(item.getTaxCode());
             }else{
                 goodsImportItem.setTaxCode(item.getTaxCode());
             }

+ 9 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/IndexProductController.java

@@ -85,6 +85,15 @@ public class IndexProductController {
         return productBaseVoTableDataInfo;
     }
 
+    /**
+    * 同步es商品
+    * */
+    @GetMapping("syncEsProduct")
+    public R<Void> syncEsProduct(String productNos) {
+        productBaseService.syncEsProduct(productNos);
+        return R.ok();
+    }
+
     /**
     * 商品列表接口
     * */

+ 5 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductBaseService.java

@@ -279,4 +279,9 @@ public interface IProductBaseService extends IService<ProductBase>{
     * 获取站点商品池商品列表
     * */
     TableDataInfo<PcProductVo> getSitePoolProductList(ProductBaseBo productBaseBo, PageQuery pageQuery);
+
+    /**
+    * 同步商品到ES
+    * */
+    void syncEsProduct(String productNos);
 }

+ 77 - 67
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBaseServiceImpl.java

@@ -117,75 +117,77 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
      */
     @Override
     public void run(ApplicationArguments args) throws Exception {
-        // 检查索引是否存在,不存在则创建
-        if (!esMapper.existsIndex("productbasevo")) {
-            log.info("索引 [productbasevo] 不存在,正在创建...");
-            esMapper.createIndex();
-        }
-        // 只同步缺失的数据,而不是全量拉取
-        long totalInDb = baseMapper.selectCount(new LambdaQueryWrapper<>());
-        log.info("DbProduct 数量 :" + totalInDb);
-        long totalInEs = esMapper.selectCount(new LambdaEsQueryWrapper<>());
-        log.info("EsProduct 数量 :" + totalInEs);
-
-        if (totalInEs < totalInDb) {
-            log.info("ES 数据不完整,开始同步...");
-
-            // 使用LIMIT分页查询,避免一次性加载所有数据
-            int pageSize = 1000;
-            long offset = 0;
-            long totalSynced = 0;
-
-            // 使用线程池处理批量插入
-            int threadCount = 10;
-            ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
-
-            try {
-                while (true) {
-                    // 使用LIMIT OFFSET进行分页查询
-                    QueryWrapper<ProductBase> queryWrapper = Wrappers.query();
-                    queryWrapper.last("LIMIT " + pageSize + " OFFSET " + offset);
-                    List<ProductBaseVo> currentBatch = baseMapper.selectAllList(queryWrapper);
-                    if (CollUtil.isEmpty(currentBatch)) {
-                        break;
-                    }
-
-                    // 异步插入ES
-                    long finalOffset = offset;
-                    int batchNumber = (int) (offset / pageSize) + 1;
-                    CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
-                        try {
-                            esMapper.insertBatch(currentBatch);
-                            log.info("成功同步第 {} 批(OFFSET: {}),共 {} 条记录", batchNumber, finalOffset, currentBatch.size());
-                        } catch (Exception e) {
-                            log.error("同步第 {} 批数据失败: {}", batchNumber, e.getMessage(), e);
-                            throw new RuntimeException(e);
-                        }
-                    }, executorService);
-
-                    // 等待当前批次完成(控制并发,避免ES压力过大)
-                    future.join();
-
-                    totalSynced += currentBatch.size();
-                    log.info("已同步进度: {}/{}", totalSynced, totalInDb);
-
-                    // 如果当前批次数据少于pageSize,说明是最后一批
-                    if (currentBatch.size() < pageSize) {
-                        break;
-                    }
+//        // 检查索引是否存在,不存在则创建
+//        if (!esMapper.existsIndex("productbasevo")) {
+//            log.info("索引 [productbasevo] 不存在,正在创建...");
+//            esMapper.createIndex();
+//        }
+//        // 只同步缺失的数据,而不是全量拉取
+//        long totalInDb = baseMapper.selectCount(new LambdaQueryWrapper<>());
+//        log.info("DbProduct 数量 :" + totalInDb);
+//        long totalInEs = esMapper.selectCount(new LambdaEsQueryWrapper<>());
+//        log.info("EsProduct 数量 :" + totalInEs);
+//
+//        if (totalInEs < totalInDb) {
+//            log.info("ES 数据不完整,开始同步...");
+//
+//            // 使用LIMIT分页查询,避免一次性加载所有数据
+//            int pageSize = 1000;
+//            long offset = 0;
+//            long totalSynced = 0;
+//
+//            // 使用线程池处理批量插入
+//            int threadCount = 10;
+//            ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
+//
+//            try {
+//                while (true) {
+//                    // 使用LIMIT OFFSET进行分页查询
+//                    QueryWrapper<ProductBase> queryWrapper = Wrappers.query();
+//                    queryWrapper.last("LIMIT " + pageSize + " OFFSET " + offset);
+//                    List<ProductBaseVo> currentBatch = baseMapper.selectAllList(queryWrapper);
+//                    if (CollUtil.isEmpty(currentBatch)) {
+//                        break;
+//                    }
+//
+//                    // 异步插入ES
+//                    long finalOffset = offset;
+//                    int batchNumber = (int) (offset / pageSize) + 1;
+//                    CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
+//                        try {
+//                            esMapper.insertBatch(currentBatch);
+//                            log.info("成功同步第 {} 批(OFFSET: {}),共 {} 条记录", batchNumber, finalOffset, currentBatch.size());
+//                        } catch (Exception e) {
+//                            log.error("同步第 {} 批数据失败: {}", batchNumber, e.getMessage(), e);
+//                            throw new RuntimeException(e);
+//                        }
+//                    }, executorService);
+//
+//                    // 等待当前批次完成(控制并发,避免ES压力过大)
+//                    future.join();
+//
+//                    totalSynced += currentBatch.size();
+//                    log.info("已同步进度: {}/{}", totalSynced, totalInDb);
+//
+//                    // 如果当前批次数据少于pageSize,说明是最后一批
+//                    if (currentBatch.size() < pageSize) {
+//                        break;
+//                    }
+//
+//                    offset += pageSize;
+//
+//                    // 添加短暂延迟,避免对数据库和ES造成过大压力
+//                    Thread.sleep(100);
+//                }
+//
+//                log.info("ES 数据同步完成,共同步 {} 条记录", totalSynced);
+//            } finally {
+//                executorService.shutdown();
+//            }
+//        }
+    }
 
-                    offset += pageSize;
 
-                    // 添加短暂延迟,避免对数据库和ES造成过大压力
-                    Thread.sleep(100);
-                }
-
-                log.info("ES 数据同步完成,共同步 {} 条记录", totalSynced);
-            } finally {
-                executorService.shutdown();
-            }
-        }
-    }
 
     /**
      * 查询产品基础信息(包含扩展信息、价格库存、属性、定制信息)
@@ -2279,5 +2281,13 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
         build.setTotal(esPageInfo.getTotal());
         return build;
     }
+    @Override
+    public void syncEsProduct(String productNos){
+        List<String> productNoList = Arrays.asList(productNos.split(","));
+        List<ProductBaseVo> productBaseVos = baseMapper.selectAllList(
+            Wrappers.query(ProductBase.class).in("b.product_no", productNoList)
+        );
+        esMapper.insertBatch(productBaseVos);
+    }
 }