From c26092c422c4b72fa5d51a38f6de1b48ab1ccd87 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 27 五月 2024 15:53:36 +0800
Subject: [PATCH] 提交普通拍品、资讯文章、商城商品收藏基础代码

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java |   54 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 12 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 4897393..8383908 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;
@@ -10,22 +12,29 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
 import com.ruoyi.common.core.utils.page.PageDTO;
-import com.ruoyi.goods.controller.management.DTO.GoodsGroupPurchaseDTO;
-import com.ruoyi.goods.controller.management.DTO.GoodsGroupPurchaseQuery;
-import com.ruoyi.goods.controller.management.VO.GoodsGroupPurchaseVO;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseDTO;
+import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery;
+import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO;
 import com.ruoyi.goods.domain.GoodsGroupPurchase;
 import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper;
 import com.ruoyi.goods.service.IGoodsGroupPurchaseService;
 import com.ruoyi.goods.service.IGoodsSkuService;
 import com.ruoyi.goods.service.async.AsyncMethodService;
+import com.ruoyi.system.api.constants.DelayTaskEnum;
+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>
@@ -43,6 +52,9 @@
     private final OrderClient orderClient;
     private final IGoodsSkuService goodsSkuService;
     private final AsyncMethodService asyncMethodService;
+    private final RedisService redisService;
+    // 创建一个静态共享的ObjectMapper实例以重用
+    private static final ObjectMapper objectMapper = new ObjectMapper();
     /**
      * 获取团购商品列表的分页数据
      *
@@ -132,9 +144,15 @@
             throw new ServiceException("团购商品不存在");
         }
         //判断商品状态
-        if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF)
-                && groupPurchase.getStartStatus().equals(StartStatusEnum.STARTED)) {
-            throw new ServiceException("该商品已开始团购,不能下架");
+        if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF)) {
+            if (groupPurchase.getStartStatus().equals(StartStatusEnum.STARTED)) {
+                throw new ServiceException("该商品已开始团购,不能下架");
+            }
+            //移除该团购商品延时任务
+            redisService.deleteObject(DelayTaskEnum.GROUP_PURCHASES_START_TASK.getCode() + "-"
+                    + groupPurchase.getId());
+            redisService.deleteObject(
+                    DelayTaskEnum.GROUP_PURCHASES_END_TASK.getCode() + "-" + groupPurchase.getId());
         }
         //修改状态
         groupPurchase.setListingStatus(dto.getListingStatus());
@@ -147,13 +165,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 通知小程序
+            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);
         }
     }
 
@@ -163,13 +187,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 通知小程序
+            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);
         }
     }
 
@@ -190,10 +220,10 @@
             List<Order> orderList = orderClient.getOrderByGroupPurchaseId(id).getData();
             for (Order order : orderList) {
                 if (PaymentMethodEnum.ALIPAY.equals(order.getPaymentMethod())) {
-                    //TODO
+                    //TODO 退款
                 }
                 if (PaymentMethodEnum.WECHAT.equals(order.getPaymentMethod())) {
-                    //TODO
+                    //TODO 退款
                 }
             }
         } else {

--
Gitblit v1.7.1