From 48e926f7f767a6d65cab2b52a057d345c2ee7e0e Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 22 Jul 2025 10:30:42 +0800 Subject: [PATCH] feat(mall): 为社交活动添加点赞和收藏功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java | 136 +++++++++++++++++++++++++++++++-------------- 1 files changed, 94 insertions(+), 42 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java index 4d730aa..6f61c90 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java @@ -10,6 +10,7 @@ import cc.mrbird.febs.mall.service.ApiClothesSocialService; import cc.mrbird.febs.mall.vo.activity.ApiScCategoryInfoVo; import cc.mrbird.febs.mall.vo.clothes.*; +import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSON; @@ -61,11 +62,17 @@ private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; private final ClothesSocialCommentMapper clothesSocialCommentMapper; + private final AgentProducer agentProducer; @Override public FebsResponse allCategory() { List<ApiClothesCategoryInfoVo> vos = new ArrayList<>(); + ApiClothesCategoryInfoVo apiClothesCategoryInfoVo = new ApiClothesCategoryInfoVo(); + apiClothesCategoryInfoVo.setId(0L); + apiClothesCategoryInfoVo.setName("全部"); + apiClothesCategoryInfoVo.setType(2); + vos.add(apiClothesCategoryInfoVo); List<ClothesSocialCategory> list = clothesSocialCategoryMapper.selectList( Wrappers.lambdaQuery(ClothesSocialCategory.class) .select(ClothesSocialCategory::getId, ClothesSocialCategory::getName) @@ -74,16 +81,18 @@ .orderByAsc(ClothesSocialCategory::getOrderCnt) ); if(CollUtil.isNotEmpty(list)){ - vos = buildApiClothesCategoryInfoVo(list, vos); + vos = buildApiClothesCategoryInfoVo(list, vos,2); } + return new FebsResponse().success().data(vos); } - private List<ApiClothesCategoryInfoVo> buildApiClothesCategoryInfoVo(List<ClothesSocialCategory> list, List<ApiClothesCategoryInfoVo> vos) { + private List<ApiClothesCategoryInfoVo> buildApiClothesCategoryInfoVo(List<ClothesSocialCategory> list, List<ApiClothesCategoryInfoVo> vos,Integer type) { for (ClothesSocialCategory entity : list) { ApiClothesCategoryInfoVo vo = new ApiClothesCategoryInfoVo(); vo.setId(entity.getId()); vo.setName(entity.getName()); + vo.setType(type); vos.add(vo); } return vos; @@ -101,7 +110,7 @@ .orderByAsc(ClothesSocialCategory::getOrderCnt) ); if(CollUtil.isNotEmpty(list)){ - vos = buildApiClothesCategoryInfoVo(list, vos); + vos = buildApiClothesCategoryInfoVo(list, vos,1); } return new FebsResponse().success().data(vos); } @@ -113,32 +122,32 @@ // 调用Mapper方法获取活动分页数据 Page<ApiAllSocialVo> voPage = clothesSocialMapper.selectPageInSocial(page, dto); - List<ApiAllSocialVo> vos = voPage.getRecords(); - if (CollUtil.isNotEmpty(vos)) { - Set<Long> socialIds = vos.stream() - .map(ApiAllSocialVo::getId) - .filter(Objects::nonNull) - .collect(Collectors.toSet()); - - if (CollUtil.isNotEmpty(socialIds)) { - List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList( - Wrappers.lambdaQuery(ClothesSocialFollow.class) - .select(ClothesSocialFollow::getId, ClothesSocialFollow::getSourceId) - .in(ClothesSocialFollow::getSourceId, socialIds) - .eq(ClothesSocialFollow::getType, SocialTypeEnum.LIKE.getValue()) - ); - - Map<Long, Long> likeCountBySocialIdMap = new HashMap<>(); - if (CollUtil.isNotEmpty(clothesSocialFollows)) { - likeCountBySocialIdMap = clothesSocialFollows.stream() - .collect(Collectors.groupingBy(ClothesSocialFollow::getSourceId, Collectors.counting())); - } - - for (ApiAllSocialVo item : vos){ - item.setLikeCnt(likeCountBySocialIdMap.getOrDefault(item.getId(), 0L).intValue()); - } - } - } +// List<ApiAllSocialVo> vos = voPage.getRecords(); +// if (CollUtil.isNotEmpty(vos)) { +// Set<Long> socialIds = vos.stream() +// .map(ApiAllSocialVo::getId) +// .filter(Objects::nonNull) +// .collect(Collectors.toSet()); +// +// if (CollUtil.isNotEmpty(socialIds)) { +// List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList( +// Wrappers.lambdaQuery(ClothesSocialFollow.class) +// .select(ClothesSocialFollow::getId, ClothesSocialFollow::getSourceId) +// .in(ClothesSocialFollow::getSourceId, socialIds) +// .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue()) +// ); +// +// Map<Long, Long> likeCountBySocialIdMap = new HashMap<>(); +// if (CollUtil.isNotEmpty(clothesSocialFollows)) { +// likeCountBySocialIdMap = clothesSocialFollows.stream() +// .collect(Collectors.groupingBy(ClothesSocialFollow::getSourceId, Collectors.counting())); +// } +// +// for (ApiAllSocialVo item : vos){ +// item.setLikeCnt(likeCountBySocialIdMap.getOrDefault(item.getId(), 0L).intValue()); +// } +// } +// } return new FebsResponse().success().data(voPage); } @@ -158,6 +167,8 @@ apiSocialInfoVo.setContent(clothesSocial.getContent()); apiSocialInfoVo.setCreatedTime(clothesSocial.getCreatedTime()); apiSocialInfoVo.setCommentState(clothesSocial.getCommentState()); + apiSocialInfoVo.setLikeCnt(clothesSocial.getLikeCnt()); + apiSocialInfoVo.setCollectCnt(clothesSocial.getCollectCnt()); List<ClothesSocialFile> clothesSocialFiles = clothesSocialFileMapper.selectList( Wrappers.lambdaQuery(ClothesSocialFile.class) @@ -240,18 +251,26 @@ } apiSocialMuseVo.setTotalAmount(totalAmount.setScale(2, RoundingMode.DOWN)); - List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList( - Wrappers.lambdaQuery(ClothesSocialFollow.class) - .select(ClothesSocialFollow::getType) - .eq(ClothesSocialFollow::getSourceId, socialId) - ); - if (CollUtil.isNotEmpty(clothesSocialFollows)){ + apiSocialInfoVo.setMuse(apiSocialMuseVo); - Map<Integer, Long> collect = clothesSocialFollows.stream() - .collect(Collectors.groupingBy(ClothesSocialFollow::getType, Collectors.counting())); - apiSocialInfoVo.setLikeCnt(collect.getOrDefault(SocialTypeEnum.LIKE.getValue(), 0L).intValue()); - apiSocialInfoVo.setCollectCnt(collect.getOrDefault(SocialTypeEnum.COLLECT.getValue(), 0L).intValue()); - } +// Integer likeCnt = clothesSocial.getLikeCnt(); +// Integer collectCnt = clothesSocial.getCollectCnt(); +// +// List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList( +// Wrappers.lambdaQuery(ClothesSocialFollow.class) +// .select(ClothesSocialFollow::getType) +// .eq(ClothesSocialFollow::getSourceId, socialId) +// .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue()) +// ); +// if (CollUtil.isNotEmpty(clothesSocialFollows)){ +// +// Map<Integer, Long> collect = clothesSocialFollows.stream() +// .collect(Collectors.groupingBy(ClothesSocialFollow::getType, Collectors.counting())); +// likeCnt = likeCnt + collect.getOrDefault(SocialTypeEnum.LIKE.getValue(), 0L).intValue(); +// collectCnt = collectCnt + collect.getOrDefault(SocialTypeEnum.COLLECT.getValue(), 0L).intValue(); +// } +// apiSocialInfoVo.setLikeCnt(likeCnt); +// apiSocialInfoVo.setCollectCnt(collectCnt); List<ClothesSocialComment> clothesSocialComments = clothesSocialCommentMapper.selectList( Wrappers.lambdaQuery(ClothesSocialComment.class) @@ -322,7 +341,7 @@ List<ClothesLocationRemark> clothesLocationRemarks = new ArrayList<>(); List<ClothesPatternRemark> clothesPatternRemarks = new ArrayList<>(); - if(CollUtil.isEmpty(clothesOrderItems)){ + if(CollUtil.isNotEmpty(clothesOrderItems)){ for (ClothesOrderItem item : clothesOrderItems){ if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) { ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId()); @@ -392,6 +411,8 @@ clothesSocialFollow.setSourceId(socialId); clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue()); clothesSocialFollowMapper.insert(clothesSocialFollow); + + agentProducer.sendAddLike(socialId); } return new FebsResponse().success().message("操作成功"); } @@ -409,6 +430,8 @@ clothesSocialFollow.setSourceOptionId(dto.getCommentId()); clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue()); clothesSocialFollowMapper.insert(clothesSocialFollow); + + agentProducer.sendAddCollect(socialId); } return new FebsResponse().success().message("操作成功"); } @@ -420,6 +443,16 @@ Long socialId = dto.getSocialId(); ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); if(ObjectUtil.isNotNull(clothesSocial)){ + List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList( + Wrappers.lambdaQuery(ClothesSocialFollow.class) + .eq(ClothesSocialFollow::getMemberId, memberId) + .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue()) + .eq(ClothesSocialFollow::getSourceId, socialId) + .eq(ClothesSocialFollow::getType, SocialTypeEnum.COLLECT.getValue()) + ); + if (CollUtil.isNotEmpty(clothesSocialFollows)){ + return new FebsResponse().success().message("已收藏"); + } ClothesSocialFollow clothesSocialFollow = new ClothesSocialFollow(); clothesSocialFollow.setMemberId(memberId); clothesSocialFollow.setSourceType(SocialSourceTypeEnum.SOCIAL.getValue()); @@ -428,6 +461,19 @@ clothesSocialFollowMapper.insert(clothesSocialFollow); } return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse myCollect(ApiSocialMyCollectAddDto dto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + dto.setMemberId(memberId); + + // 创建分页对象,传入当前页和每页大小 + Page<ApiSocialMyCollectVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + // 调用Mapper方法获取活动分页数据 + Page<ApiSocialMyCollectVo> voPage = clothesSocialFollowMapper.selectPageInMyComment(page, dto); + return new FebsResponse().success().data(voPage); } @Override @@ -456,6 +502,7 @@ if(ObjectUtil.isNotNull(clothesSize)){ record.setSizeId(sizeId); record.setSizeName(clothesSize.getName()); + record.setSizeImage(clothesSize.getImage()); record.setSizePrice(clothesSize.getPrice()); } } @@ -473,6 +520,7 @@ ApiClothesPatternRemarkVo vo = new ApiClothesPatternRemarkVo(); ClothesPattern pattern = clothesPatternMapper.selectById(patternRemark.getPatternId()); vo.setPatternName(pattern.getName()); + vo.setPatternImage(pattern.getImage()); vo.setPatternPrice(pattern.getPrice()); vo.setPatternId(pattern.getId()); vo.setPatternRemark(patternRemark.getRemark()); @@ -497,6 +545,7 @@ ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationRemark.getLocationId()); vo.setLocationName(clothesLocation.getName()); vo.setLocationRemark(locationRemark.getRemark()); + vo.setLocationImage(clothesLocation.getImage()); vo.setLocationPrice(clothesLocation.getPrice()); vo.setLocationId(clothesLocation.getId()); locationRemarkList.add(vo); @@ -514,6 +563,7 @@ ClothesArt clothesArt = clothesArtMapper.selectById(artId); if (ObjectUtil.isNotNull(clothesArt)){ record.setArtId(artId); + record.setArtImage(clothesArt.getImage()); record.setArtName(clothesArt.getName()); record.setArtPrice(clothesArt.getPrice()); } @@ -528,6 +578,7 @@ ClothesCloth clothesCloth = clothesClothMapper.selectById(clothId); if (ObjectUtil.isNotNull(clothesCloth)){ record.setClothId(clothId); + record.setClothImage(clothesCloth.getImage()); record.setClothName(clothesCloth.getName()); record.setClothPrice(clothesCloth.getPrice()); } @@ -566,7 +617,7 @@ entity.setComment(dto.getComment()); ClothesSocialComment clothesSocialComment = clothesSocialCommentMapper.selectById(commentId); if(ObjectUtil.isNotNull(clothesSocialComment)){ - entity.setParentId(clothesSocialComment.getParentId()); + entity.setParentId(clothesSocialComment.getId()); entity.setCommentId(clothesSocialComment.getId()); } clothesSocialCommentMapper.insert(entity); @@ -587,6 +638,7 @@ Wrappers.lambdaQuery(ClothesSocialComment.class) .select(ClothesSocialComment::getParentId) .in(ClothesSocialComment::getParentId, collect) + .eq(ClothesSocialComment::getShowState, ClothesEnum.UP.getCode()) ); if (CollUtil.isNotEmpty(clothesSocialComments)){ Map<Long, Long> collect1 = clothesSocialComments.stream() -- Gitblit v1.9.1