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 ++++++++++++++++++++++++++++++----------
src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java | 9 +++++++++
2 files changed, 39 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);
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java
index 42ced4b..d889db7 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityVo.java
@@ -14,6 +14,15 @@
@ApiModelProperty(value = "ID")
private Long id;
+ @ApiModelProperty(value = "点赞数")
+ private Integer zanCnt;
+
+// @ApiModelProperty(value = "关注数")
+// private Integer followCnt;
+
+ @ApiModelProperty(value = "转发数")
+ private Integer sendCnt;
+
@ApiModelProperty(value = "编码")
private String code;
--
Gitblit v1.9.1