From c796e39e718a52446769f531771773cb2b9c9fc8 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sun, 27 Apr 2025 11:16:09 +0800
Subject: [PATCH] feat(mall): 为活动详情添加点赞数和转发数功能 - 在 ApiActivityVo 中添加 zanCnt 和 sendCnt 字段- 在 HappyActivityServiceImpl 中实现点赞数和转发数的查询逻辑 - 通过 Stream 流操作对不同类型的操作进行分类计数

---
 src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java |   40 ++++++++++++++++++++++++++++++----------
 1 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
index 531879d..e958db3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -137,6 +137,24 @@
         );
         if(happyActivity != null){
             BeanUtil.copyProperties(happyActivity,apiActivityVo);
+            List<HappyFollow> happyFollows = happyFollowMapper.selectList(
+                    new LambdaQueryWrapper<HappyFollow>()
+                            .select(HappyFollow::getId, HappyFollow::getType)
+                            .eq(HappyFollow::getSourceType, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode())
+                            .eq(HappyFollow::getSourceId, happyActivity.getId())
+                            .in(HappyFollow::getType, Arrays.asList(StateUpDownEnum.LIKE.getCode(), StateUpDownEnum.SHARE.getCode()))
+                            .eq(HappyFollow::getDeleteFlag, StateUpDownEnum.DOWN.getCode())
+            );
+            if(CollUtil.isNotEmpty(happyFollows)){
+                //  使用Stream流操作happyFollows,按照type分类,返回每一个不同type的总数量,并返回一个Map
+                Map<Integer, Long> typeCountMap = happyFollows.stream()
+                        .collect(Collectors.groupingBy(HappyFollow::getType, Collectors.counting()));
+
+                apiActivityVo.setZanCnt(Math.toIntExact(typeCountMap.get(StateUpDownEnum.LIKE.getCode())));
+                apiActivityVo.setSendCnt(Math.toIntExact(typeCountMap.get(StateUpDownEnum.SHARE.getCode())));
+            }
+
+
         }
         return new FebsResponse().success().data(apiActivityVo);
     }
@@ -221,16 +239,18 @@
                     throw new FebsException("活动不存在");
                 }
 
-                if (StateUpDownEnum.ACTIVITY_TYPE_VOTE.getCode() == happyActivity.getType()) {
-                    Long sourceOptionId = dto.getSourceOptionId();
-                    if (sourceOptionId == null) {
-                        throw new FebsException("选项ID不能为空");
-                    }
-                    this.operateDoVote(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, sourceOptionId, type);
-                    this.addLikeCnt(sourceOptionId);
-                } else {
-                    this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type);
-                }
+                this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type);
+
+//                if (StateUpDownEnum.ACTIVITY_TYPE_VOTE.getCode() == happyActivity.getType()) {
+//                    Long sourceOptionId = dto.getSourceOptionId();
+//                    if (sourceOptionId == null) {
+//                        throw new FebsException("选项ID不能为空");
+//                    }
+//                    this.operateDoVote(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, sourceOptionId, type);
+//                    this.addLikeCnt(sourceOptionId);
+//                } else {
+//                    this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type);
+//                }
             } else if (StateUpDownEnum.SOURCE_TYPE_SOCIAL_CIRCLE.getCode() == sourceType) {
                 // 朋友圈点赞或关注
                 this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_SOCIAL_CIRCLE.getCode(), sourceId, type);

--
Gitblit v1.9.1