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