From 4f045bfae913b2b10a8efcfc4b999fbad134f732 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 22 Jul 2025 14:40:50 +0800
Subject: [PATCH] feat(mall): 优化衣服信息设置逻辑

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java |  168 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 127 insertions(+), 41 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 61954ac..9993963 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
@@ -4,14 +4,17 @@
 import cc.mrbird.febs.common.enumerates.*;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.mall.dto.ApiColletDelDto;
 import cc.mrbird.febs.mall.dto.clothes.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 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.core.util.StrUtil;
 import cn.hutool.json.JSON;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -61,6 +64,7 @@
     private final ClothesLocationRemarkMapper clothesLocationRemarkMapper;
     private final ClothesPatternRemarkMapper clothesPatternRemarkMapper;
     private final ClothesSocialCommentMapper clothesSocialCommentMapper;
+    private final AgentProducer agentProducer;
 
 
     @Override
@@ -120,32 +124,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::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());
-                }
-            }
-        }
+//        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);
     }
@@ -165,6 +169,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)
@@ -246,22 +252,32 @@
                     apiSocialMuseVo.setLocationRemarkList(locationRemarkList);
                 }
                 apiSocialMuseVo.setTotalAmount(totalAmount.setScale(2, RoundingMode.DOWN));
-
-                apiSocialInfoVo.setMuse(apiSocialMuseVo);
-
-                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()));
-                    apiSocialInfoVo.setLikeCnt(collect.getOrDefault(SocialTypeEnum.LIKE.getValue(), 0L).intValue());
-                    apiSocialInfoVo.setCollectCnt(collect.getOrDefault(SocialTypeEnum.COLLECT.getValue(), 0L).intValue());
+                if(StrUtil.isNotBlank(apiSocialMuseVo.getArtName())
+                && StrUtil.isNotBlank(apiSocialMuseVo.getSizeName())
+                        && StrUtil.isNotBlank(apiSocialMuseVo.getClothName())
+                ){
+                    apiSocialInfoVo.setMuse(apiSocialMuseVo);
                 }
+
+
+//                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)
@@ -402,6 +418,8 @@
             clothesSocialFollow.setSourceId(socialId);
             clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue());
             clothesSocialFollowMapper.insert(clothesSocialFollow);
+
+            agentProducer.sendAddLike(socialId);
         }
         return new FebsResponse().success().message("操作成功");
     }
@@ -430,14 +448,39 @@
         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());
             clothesSocialFollow.setSourceId(socialId);
             clothesSocialFollow.setType(SocialTypeEnum.COLLECT.getValue());
             clothesSocialFollowMapper.insert(clothesSocialFollow);
+
+            agentProducer.sendAddCollect(socialId);
         }
         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
@@ -615,6 +658,49 @@
         return new FebsResponse().success().data(voPage);
     }
 
+    @Override
+    public FebsResponse delCollection(ApiColletDelDto dto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        List<Long> ids = dto.getIds();
+        if (CollUtil.isEmpty(ids)) {
+            return new FebsResponse().success().message("操作成功");
+        }
+
+        LambdaQueryWrapper<ClothesSocialFollow> delQuery = new LambdaQueryWrapper<>();
+        delQuery.eq(ClothesSocialFollow::getMemberId, memberId);
+        delQuery.eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue());
+        delQuery.in(ClothesSocialFollow::getSourceId, ids);
+        delQuery.eq(ClothesSocialFollow::getType, SocialTypeEnum.COLLECT.getValue());
+        clothesSocialFollowMapper.delete(delQuery);
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
+    public FebsResponse followState(ApiSocialCollectFollowStateDto dto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+
+        Integer collectState = clothesSocialFollowMapper.selectCount(
+                Wrappers.lambdaQuery(ClothesSocialFollow.class)
+                        .eq(ClothesSocialFollow::getMemberId, memberId)
+                        .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue())
+                        .eq(ClothesSocialFollow::getSourceId, dto.getSocialId())
+                        .eq(ClothesSocialFollow::getType, SocialTypeEnum.COLLECT.getValue())
+        );
+        stringObjectHashMap.put("collectState", collectState);
+
+        Integer likeState = clothesSocialFollowMapper.selectCount(
+                Wrappers.lambdaQuery(ClothesSocialFollow.class)
+                        .eq(ClothesSocialFollow::getMemberId, memberId)
+                        .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue())
+                        .eq(ClothesSocialFollow::getSourceId, dto.getSocialId())
+                        .eq(ClothesSocialFollow::getType, SocialTypeEnum.LIKE.getValue())
+        );
+        stringObjectHashMap.put("likeState", likeState);
+
+        return new FebsResponse().success().data(stringObjectHashMap);
+    }
+
     public static void main(String[] args) {
         JSONObject jsonObject = new JSONObject();
         jsonObject.putByPath("text", "123");

--
Gitblit v1.9.1