From 05fe558f722590aa706c2296c8a9a619d12b42be Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期一, 27 五月 2024 14:35:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
index dbb37c1..69dc106 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.core.enums.GroupStatusEnum;
 import com.ruoyi.common.core.enums.ListingStatusEnum;
 import com.ruoyi.common.core.enums.PaymentMethodEnum;
@@ -18,15 +20,19 @@
 import com.ruoyi.goods.service.IGoodsGroupPurchaseService;
 import com.ruoyi.goods.service.IGoodsSkuService;
 import com.ruoyi.goods.service.async.AsyncMethodService;
-import com.ruoyi.system.api.WebSocketUsers;
+import com.ruoyi.system.api.constants.NotificationTypeConstant;
 import com.ruoyi.system.api.domain.GoodsSku;
 import com.ruoyi.system.api.domain.Order;
 import com.ruoyi.system.api.domain.dto.ListStatusDTO;
 import com.ruoyi.system.api.feignClient.OrderClient;
+import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import util.WebSocketUsers;
 
 /**
  * <p>
@@ -44,6 +50,8 @@
     private final OrderClient orderClient;
     private final IGoodsSkuService goodsSkuService;
     private final AsyncMethodService asyncMethodService;
+    // 创建一个静态共享的ObjectMapper实例以重用
+    private static final ObjectMapper objectMapper = new ObjectMapper();
     /**
      * 获取团购商品列表的分页数据
      *
@@ -148,15 +156,19 @@
      * @param groupPurchaseId 团购商品id
      */
     @Override
-    public void startGroupPurchase(Long groupPurchaseId) {
+    public void startGroupPurchase(Long groupPurchaseId) throws JsonProcessingException {
         log.info(">>>>>>>>>>>>>>>>>>>>{}团购商品开始团购<<<<<<<<<<<<<<<<<<<<", groupPurchaseId);
         GoodsGroupPurchase groupPurchase = this.getById(groupPurchaseId);
         if (StringUtils.isNotNull(groupPurchase)) {
             this.lambdaUpdate().set(GoodsGroupPurchase::getStartStatus, StartStatusEnum.STARTED)
                     .eq(GoodsGroupPurchase::getId, groupPurchaseId).update();
-            //TODO 通知小程序
-            WebSocketUsers.sendMessageToUsersByText(
-                    "团购商品" + groupPurchase.getGoodsSkuName() + "开始团购");
+            Map<String, Object> map = new ConcurrentHashMap<>();
+            map.put("notification_type", NotificationTypeConstant.GROUP_PURCHASE);
+            map.put("notification_time", LocalDateTime.now());
+            map.put("message_type", "start");
+            String msg = objectMapper.writeValueAsString(map);
+            WebSocketUsers.sendMessageToUsersByText(msg);
+            log.info("===================>发送websocket通知,消息体{}", msg);
         }
     }
 
@@ -166,15 +178,19 @@
      * @param groupPurchaseId 团购商品id
      */
     @Override
-    public void endGroupPurchase(Long groupPurchaseId) {
+    public void endGroupPurchase(Long groupPurchaseId) throws JsonProcessingException {
         log.info(">>>>>>>>>>>>>>>>>>>>{}团购商品结束团购<<<<<<<<<<<<<<<<<<<<", groupPurchaseId);
         GoodsGroupPurchase groupPurchase = this.getById(groupPurchaseId);
         if (StringUtils.isNotNull(groupPurchase)) {
             this.lambdaUpdate().set(GoodsGroupPurchase::getStartStatus, StartStatusEnum.ENDED)
                     .eq(GoodsGroupPurchase::getId, groupPurchaseId).update();
-            //TODO 通知小程序
-            WebSocketUsers.sendMessageToUsersByText(
-                    "团购商品" + groupPurchase.getGoodsSkuName() + "结束团购");
+            Map<String, Object> map = new ConcurrentHashMap<>();
+            map.put("notification_type", NotificationTypeConstant.GROUP_PURCHASE);
+            map.put("notification_time", LocalDateTime.now());
+            map.put("message_type", "end");
+            String msg = objectMapper.writeValueAsString(map);
+            WebSocketUsers.sendMessageToUsersByText(msg);
+            log.info("===================>发送websocket通知,消息体{}", msg);
         }
     }
 

--
Gitblit v1.7.1