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 | 377 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 328 insertions(+), 49 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 69b2836..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; @@ -19,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.swagger.annotations.ApiModelProperty; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -26,9 +30,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -59,11 +61,20 @@ private final ClothesTypeSizeMapper clothesTypeSizeMapper; private final ClothesTypeLocationMapper clothesTypeLocationMapper; private final ClothesTypeArtMapper clothesTypeArtMapper; + 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) @@ -72,16 +83,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; @@ -99,7 +112,7 @@ .orderByAsc(ClothesSocialCategory::getOrderCnt) ); if(CollUtil.isNotEmpty(list)){ - vos = buildApiClothesCategoryInfoVo(list, vos); + vos = buildApiClothesCategoryInfoVo(list, vos,1); } return new FebsResponse().success().data(vos); } @@ -111,8 +124,36 @@ // 调用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()); +// } +// } +// } + return new FebsResponse().success().data(voPage); } + @Override public FebsResponse socialInfo(ApiSocialInfoDto dto) { @@ -127,6 +168,9 @@ apiSocialInfoVo.setName(clothesSocial.getName()); 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) @@ -147,10 +191,6 @@ if(ObjectUtil.isNotNull(clothesSocialMuse)){ BigDecimal totalAmount = BigDecimal.ZERO; apiSocialMuseVo.setMuseId(clothesSocialMuse.getId()); - - apiSocialMuseVo.setPatternImage(clothesSocialMuse.getPatternImage()); - apiSocialMuseVo.setPatternText(clothesSocialMuse.getPatternText()); - ClothesType clothesType = clothesTypeMapper.selectById(clothesSocialMuse.getTypeId()); if(ObjectUtil.isNotNull(clothesType)){ apiSocialMuseVo.setTypeName(clothesType.getName()); @@ -160,16 +200,6 @@ if(ObjectUtil.isNotNull(clothesSize)){ apiSocialMuseVo.setSizeName(clothesSize.getName()); totalAmount = totalAmount.add(clothesSize.getPrice()); - } - ClothesPattern clothesPattern = clothesPatternMapper.selectById(clothesSocialMuse.getPatternId()); - if(ObjectUtil.isNotNull(clothesPattern)){ - apiSocialMuseVo.setPatternName(clothesPattern.getName()); - totalAmount = totalAmount.add(clothesPattern.getPrice()); - } - ClothesLocation clothesLocation = clothesLocationMapper.selectById(clothesSocialMuse.getLocationId()); - if(ObjectUtil.isNotNull(clothesLocation)){ - apiSocialMuseVo.setLocationName(clothesLocation.getName()); - totalAmount = totalAmount.add(clothesLocation.getPrice()); } ClothesCloth clothesCloth = clothesClothMapper.selectById(clothesSocialMuse.getClothId()); if(ObjectUtil.isNotNull(clothesCloth)){ @@ -181,7 +211,83 @@ apiSocialMuseVo.setArtName(clothesArt.getName()); totalAmount = totalAmount.add(clothesArt.getPrice()); } + + + List<ApiClothesPatternRemarkVo> patternRemarkList = new ArrayList<>(); + + List<ClothesPatternRemark> patternRemarks = clothesPatternRemarkMapper.selectList( + Wrappers.lambdaQuery(ClothesPatternRemark.class) + .eq(ClothesPatternRemark::getSourceId, clothesSocialMuse.getId()) + .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) + ); + if(CollUtil.isNotEmpty(patternRemarks)){ + for (ClothesPatternRemark entity : patternRemarks){ + ApiClothesPatternRemarkVo vo = new ApiClothesPatternRemarkVo(); + ClothesPattern pattern = clothesPatternMapper.selectById(entity.getPatternId()); + vo.setPatternName(pattern.getName()); + vo.setPatternRemark(entity.getRemark()); + patternRemarkList.add( vo); + + totalAmount = totalAmount.add(pattern.getPrice()); + } + apiSocialMuseVo.setPatternRemarkList(patternRemarkList); + } + + List<ApiClothesLocationRemarkVo> locationRemarkList = new ArrayList<>(); + List<ClothesLocationRemark> locationRemarks = clothesLocationRemarkMapper.selectList( + Wrappers.lambdaQuery(ClothesLocationRemark.class) + .eq(ClothesLocationRemark::getSourceId, clothesSocialMuse.getId()) + .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) + ); + if(CollUtil.isNotEmpty(locationRemarks)){ + for (ClothesLocationRemark entity : locationRemarks){ + ApiClothesLocationRemarkVo vo = new ApiClothesLocationRemarkVo(); + ClothesLocation clothesLocation = clothesLocationMapper.selectById(entity.getLocationId()); + vo.setLocationName(clothesLocation.getName()); + vo.setLocationRemark(entity.getRemark()); + locationRemarkList.add(vo); + + totalAmount = totalAmount.add(clothesLocation.getPrice()); + } + apiSocialMuseVo.setLocationRemarkList(locationRemarkList); + } apiSocialMuseVo.setTotalAmount(totalAmount.setScale(2, RoundingMode.DOWN)); + 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) + .eq(ClothesSocialComment::getSocialId, socialId) + .eq(ClothesSocialComment::getShowState, ClothesEnum.UP.getCode()) + .isNull(ClothesSocialComment::getParentId) + ); + if (CollUtil.isNotEmpty(clothesSocialComments)){ + apiSocialInfoVo.setCommentCnt(clothesSocialComments.size()); + } } } @@ -239,7 +345,10 @@ Wrappers.lambdaQuery(ClothesOrderItem.class) .eq(ClothesOrderItem::getOrderId, orderId) ); - if(CollUtil.isEmpty(clothesOrderItems)){ + + List<ClothesLocationRemark> clothesLocationRemarks = new ArrayList<>(); + List<ClothesPatternRemark> clothesPatternRemarks = new ArrayList<>(); + if(CollUtil.isNotEmpty(clothesOrderItems)){ for (ClothesOrderItem item : clothesOrderItems){ if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) { ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId()); @@ -251,12 +360,23 @@ continue; } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) { ClothesLocation location = clothesLocationMapper.selectById(item.getItemId()); - clothesSocialMuse.setLocationId(location.getId()); + ClothesLocationRemark entity = new ClothesLocationRemark(); + entity.setLocationId(location.getId()); + entity.setMemberId(memberId); + entity.setSourceId(clothesSocialMuse.getId()); + entity.setType(SocialPatternLocationTypeEnum.MUSE.getValue()); + entity.setRemark(item.getRemark()); + clothesLocationRemarks.add(entity); continue; } else if (ClothesOrderItemEnum.PATTERN.getCode() == item.getType()) { ClothesPattern pattern = clothesPatternMapper.selectById(item.getItemId()); - clothesSocialMuse.setPatternId(pattern.getId()); - clothesSocialMuse.setPatternRemark(item.getRemark()); + ClothesPatternRemark entity = new ClothesPatternRemark(); + entity.setPatternId(pattern.getId()); + entity.setMemberId(memberId); + entity.setSourceId(clothesSocialMuse.getId()); + entity.setType(SocialPatternLocationTypeEnum.MUSE.getValue()); + entity.setRemark(item.getRemark()); + clothesPatternRemarks.add(entity); continue; } else if (ClothesOrderItemEnum.ART.getCode() == item.getType()) { ClothesArt art = clothesArtMapper.selectById(item.getItemId()); @@ -268,6 +388,20 @@ } } clothesSocialMuseMapper.insert(clothesSocialMuse); + + if (CollUtil.isNotEmpty(clothesLocationRemarks)){ + for (ClothesLocationRemark entity : clothesLocationRemarks){ + entity.setSourceId(clothesSocialMuse.getId()); + clothesLocationRemarkMapper.insert(entity); + } + } + + if (CollUtil.isNotEmpty(clothesPatternRemarks)){ + for (ClothesPatternRemark entity : clothesPatternRemarks){ + entity.setSourceId(clothesSocialMuse.getId()); + clothesPatternRemarkMapper.insert(entity); + } + } return new FebsResponse().success().message("操作成功"); } @@ -284,6 +418,8 @@ clothesSocialFollow.setSourceId(socialId); clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue()); clothesSocialFollowMapper.insert(clothesSocialFollow); + + agentProducer.sendAddLike(socialId); } return new FebsResponse().success().message("操作成功"); } @@ -312,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 @@ -338,7 +499,6 @@ record.setTypeId(typeId); record.setTypeName(clothesType.getName()); record.setTypeImage(clothesType.getImage()); - record.setPatternRemark(entity.getPatternRemark()); Long sizeId = ObjectUtil.defaultIfNull(entity.getSizeId(),0L); List<ClothesTypeSize> clothesTypeSizes = clothesTypeSizeMapper.selectList(Wrappers.<ClothesTypeSize>lambdaQuery().eq(ClothesTypeSize::getTypeId, typeId)); @@ -349,37 +509,57 @@ if(ObjectUtil.isNotNull(clothesSize)){ record.setSizeId(sizeId); record.setSizeName(clothesSize.getName()); + record.setSizeImage(clothesSize.getImage()); record.setSizePrice(clothesSize.getPrice()); } } } - Long patternId = ObjectUtil.defaultIfNull(entity.getPatternId(),0L); - List<ClothesTypePattern> clothesTypePatterns = clothesTypePatternMapper.selectList(Wrappers.<ClothesTypePattern>lambdaQuery().eq(ClothesTypePattern::getTypeId, typeId)); - if (CollUtil.isNotEmpty(clothesTypePatterns)){ - Set<Long> patternIds = clothesTypePatterns.stream().map(ClothesTypePattern::getPatternId).collect(Collectors.toSet()); - if(CollUtil.isNotEmpty( patternIds) && patternIds.contains(patternId)){ - ClothesPattern clothesPattern = clothesPatternMapper.selectById(patternId); - if (ObjectUtil.isNotNull(clothesPattern)){ - record.setPatternId(patternId); - record.setPatternName(clothesPattern.getName()); - record.setPatternPrice(clothesPattern.getPrice()); - } + BigDecimal totalPatternAmount = BigDecimal.ZERO; + List<ApiClothesPatternRemarkVo> patternRemarkList = new ArrayList<>(); + List<ClothesPatternRemark> patternRemarks = clothesPatternRemarkMapper.selectList( + Wrappers.lambdaQuery(ClothesPatternRemark.class) + .eq(ClothesPatternRemark::getSourceId, entity.getId()) + .eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) + ); + if(CollUtil.isNotEmpty(patternRemarks)){ + for (ClothesPatternRemark patternRemark : patternRemarks){ + 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()); + patternRemarkList.add( vo); + + totalPatternAmount = totalPatternAmount.add(pattern.getPrice()); } + record.setPatternRemarkList(patternRemarkList); } - Long locationId = ObjectUtil.defaultIfNull(entity.getLocationId(),0L); - List<ClothesTypeLocation> clothesTypeLocations = clothesTypeLocationMapper.selectList(Wrappers.<ClothesTypeLocation>lambdaQuery().eq(ClothesTypeLocation::getTypeId, typeId)); - if (CollUtil.isNotEmpty(clothesTypeLocations)){ - Set<Long> locationIds = clothesTypeLocations.stream().map(ClothesTypeLocation::getLocationId).collect(Collectors.toSet()); - if(CollUtil.isNotEmpty( locationIds) && locationIds.contains(locationId)){ - ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationId); - if (ObjectUtil.isNotNull(clothesLocation)){ - record.setLocationId(locationId); - record.setLocationName(clothesLocation.getName()); - record.setLocationPrice(clothesLocation.getPrice()); - } + + BigDecimal totalLocationAmount = BigDecimal.ZERO; + List<ApiClothesLocationRemarkVo> locationRemarkList = new ArrayList<>(); + List<ClothesLocationRemark> locationRemarks = clothesLocationRemarkMapper.selectList( + Wrappers.lambdaQuery(ClothesLocationRemark.class) + .eq(ClothesLocationRemark::getSourceId, entity.getId()) + .eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue()) + ); + if(CollUtil.isNotEmpty(locationRemarks)){ + for (ClothesLocationRemark locationRemark : locationRemarks){ + ApiClothesLocationRemarkVo vo = new ApiClothesLocationRemarkVo(); + 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); + + totalLocationAmount = totalLocationAmount.add(clothesLocation.getPrice()); } + record.setLocationRemarkList(locationRemarkList); } Long artId = ObjectUtil.defaultIfNull(entity.getArtId(),0L); @@ -390,6 +570,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()); } @@ -404,6 +585,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()); } @@ -412,16 +594,113 @@ BigDecimal amount = record.getClothPrice() - .add(record.getLocationPrice()) + .add(totalLocationAmount) .add(record.getArtPrice()) .add(record.getSizePrice()) - .add(record.getPatternPrice()).setScale(2, RoundingMode.DOWN); + .add(totalPatternAmount) + .setScale(2, RoundingMode.DOWN); record.setAmount(amount); } return new FebsResponse().success().data(record); } + @Override + public FebsResponse comment(ApiClothesSocialCommentDto dto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long socialId = dto.getSocialId(); + Long commentId = dto.getCommentId(); + ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); + if (ObjectUtil.isNull(clothesSocial)){ + return new FebsResponse().fail().message("社区不存在"); + } + if (ClothesEnum.DOWN.getCode() == clothesSocial.getCommentState()){ + return new FebsResponse().fail().message("禁止评论"); + } + ClothesSocialComment entity = new ClothesSocialComment(); + entity.setMemberId(memberId); + entity.setSocialId(socialId); + entity.setComment(dto.getComment()); + ClothesSocialComment clothesSocialComment = clothesSocialCommentMapper.selectById(commentId); + if(ObjectUtil.isNotNull(clothesSocialComment)){ + entity.setParentId(clothesSocialComment.getId()); + entity.setCommentId(clothesSocialComment.getId()); + } + clothesSocialCommentMapper.insert(entity); + + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse allComment(ApiAllCommentDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiAllCommentVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + // 调用Mapper方法获取活动分页数据 + Page<ApiAllCommentVo> voPage = clothesSocialCommentMapper.selectPageInComment(page, dto); + List<ApiAllCommentVo> records = voPage.getRecords(); + if (CollUtil.isNotEmpty(records)){ + Set<Long> collect = records.stream().map(ApiAllCommentVo::getCommentId).collect(Collectors.toSet()); + List<ClothesSocialComment> clothesSocialComments = clothesSocialCommentMapper.selectList( + 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() + .collect(Collectors.groupingBy(ClothesSocialComment::getParentId, Collectors.counting())); + for (ApiAllCommentVo vo : records){ + vo.setCommentCnt(collect1.getOrDefault(vo.getCommentId(), 0L).intValue()); + } + } + } + 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