Administrator
2025-07-22 4f045bfae913b2b10a8efcfc4b999fbad134f732
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,12 +448,24 @@
        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("操作成功");
    }
@@ -628,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");