Browse Source

产品消费

chenlei1231 3 months ago
parent
commit
5cc60044af

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/product/dto/ProductDTO.java

@@ -45,7 +45,7 @@ public class ProductDTO {
     /**
      *
      */
-    private String productGalleryImage;
+    private String[] productGalleryImage;
 
     /**
      *

+ 31 - 26
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mq/ProductReceiver.java

@@ -25,7 +25,7 @@ import java.util.List;
  */
 @Slf4j
 @RabbitComponent(value = "productReceiver")
-public class ProductReceiver extends BaseRabbiMqHandler<ProductDTO> {
+public class ProductReceiver extends BaseRabbiMqHandler<List<ProductDTO>> {
 
     @Autowired
     private IAdwebSiteService adwebSiteService;
@@ -35,44 +35,49 @@ public class ProductReceiver extends BaseRabbiMqHandler<ProductDTO> {
 
     @RabbitHandler
     // ackMode需要设置为MANUAL - BaseRabbiMqHandler.onMessage()有channel.basicAck()操作
-    @RabbitListener(queues = "site_product", ackMode = "MANUAL")
+    @RabbitListener(queues = "site_product_dev", ackMode = "MANUAL")
     public void onMessage(
-            ProductDTO productDTO,
+            List<ProductDTO> products,
             Channel channel,
             @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
         super.onMessage(
-                productDTO,
+                products,
                 deliveryTag,
                 channel,
-                new MqListener<ProductDTO>() {
+                new MqListener<List<ProductDTO>>() {
                     @Override
-                    public void handler(ProductDTO productDTO, Channel channel) {
+                    public void handler(List<ProductDTO> products, Channel channel) {
                         // 业务处理
-                        log.info("收到MQ消息 {}", productDTO);
+                        log.info("收到产品MQ消息 {}", products);
 
-                        // TODO 产品消息内容唯一性判断
 
-                        // 查看发布当前消息的站点是否是 adweb3 平台中绑定的是否是有效站点, 如果不是则直接确认消息,不做业务处理
-                        List<AdwebSite> adwebSites =
-                                adwebSiteService.list(
-                                        new LambdaQueryWrapper<AdwebSite>()
-                                                .like(AdwebSite::getDomain, productDTO.getSiteHost())
-                                                .ne(AdwebSite::getStatus, 0));
+                        for (ProductDTO product : products) {
 
-                        if (adwebSites.isEmpty()) {
-                            log.error(
-                                    "站点:{} 不是adweb3的有效绑定站点,MQ消息确认失败",
-                                    productDTO.getSiteHost());
-                            return;
-                        }
+                            // TODO 产品消息内容唯一性判断
+
+                            // 查看发布当前消息的站点是否是 adweb3 平台中绑定的是否是有效站点, 如果不是则直接确认消息,不做业务处理
+                            List<AdwebSite> adwebSites =
+                                    adwebSiteService.list(
+                                            new LambdaQueryWrapper<AdwebSite>()
+                                                    .like(AdwebSite::getDomain, product.getSiteHost())
+                                                    .ne(AdwebSite::getStatus, 0));
+
+                            // 一个消息中的产品所属站点相同,一条不符合,则认为全部不符合
+                            if (adwebSites.isEmpty()) {
+                                log.error(
+                                        "站点:{} 不是adweb3的有效绑定站点,MQ消息确认失败",
+                                        product.getSiteHost());
+                                return;
+                            }
 
 
-                        try {
-                            // 产品入库
-                            adwebProductService.addProduct(
-                                    productDTO, adwebSites.get(0));
-                        } catch (Exception e) {
-                            log.error("询盘入库异常:{}", e.getMessage());
+                            try {
+                                // 产品入库
+                                adwebProductService.addProduct(
+                                        product, adwebSites.get(0));
+                            } catch (Exception e) {
+                                log.error("产品:{}, 入库异常:{}", e.getMessage(), product);
+                            }
                         }
                     }
                 });