From f7de67c92de1bd55154c5a2f879e99a1b476750b Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 18 Jul 2025 16:52:34 +0800 Subject: [PATCH] refactor(mall): 调整衣服分类逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java | 569 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 559 insertions(+), 10 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 cad4aab..5751a44 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 @@ -1,26 +1,34 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.enumerates.ClothesEnum; -import cc.mrbird.febs.common.enumerates.StateUpDownEnum; -import cc.mrbird.febs.mall.entity.ClothesSocial; -import cc.mrbird.febs.mall.entity.ClothesSocialCategory; -import cc.mrbird.febs.mall.entity.HappySocialCircleCategory; -import cc.mrbird.febs.mall.mapper.ClothesSocialCategoryMapper; -import cc.mrbird.febs.mall.mapper.ClothesSocialMapper; +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.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.ApiClothesCategoryInfoVo; +import cc.mrbird.febs.mall.vo.clothes.*; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSON; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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; +import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -28,11 +36,40 @@ public class ApiClothesSocialServiceImpl extends ServiceImpl<ClothesSocialMapper, ClothesSocial> implements ApiClothesSocialService { private final ClothesSocialMapper clothesSocialMapper; + private final ClothesSocialFileMapper clothesSocialFileMapper; + private final ClothesSocialMuseMapper clothesSocialMuseMapper; private final ClothesSocialCategoryMapper clothesSocialCategoryMapper; + private final MallMemberMapper mallMemberMapper; + + + private final ClothesTypeMapper clothesTypeMapper; + private final ClothesSizeMapper clothesSizeMapper; + private final ClothesPatternMapper clothesPatternMapper; + private final ClothesLocationMapper clothesLocationMapper; + private final ClothesClothMapper clothesClothMapper; + private final ClothesArtMapper clothesArtMapper; + private final ClothesOrderMapper clothesOrderMapper; + private final ClothesOrderItemMapper clothesOrderItemMapper; + private final ClothesSocialFollowMapper clothesSocialFollowMapper; + + + private final ClothesTypeClothMapper clothesTypeClothMapper; + private final ClothesTypePatternMapper clothesTypePatternMapper; + private final ClothesTypeSizeMapper clothesTypeSizeMapper; + private final ClothesTypeLocationMapper clothesTypeLocationMapper; + private final ClothesTypeArtMapper clothesTypeArtMapper; + private final ClothesLocationRemarkMapper clothesLocationRemarkMapper; + private final ClothesPatternRemarkMapper clothesPatternRemarkMapper; + private final ClothesSocialCommentMapper clothesSocialCommentMapper; + @Override public FebsResponse allCategory() { List<ApiClothesCategoryInfoVo> vos = new ArrayList<>(); + ApiClothesCategoryInfoVo apiClothesCategoryInfoVo = new ApiClothesCategoryInfoVo(); + apiClothesCategoryInfoVo.setId(0L); + apiClothesCategoryInfoVo.setName("全部"); + vos.add(apiClothesCategoryInfoVo); List<ClothesSocialCategory> list = clothesSocialCategoryMapper.selectList( Wrappers.lambdaQuery(ClothesSocialCategory.class) .select(ClothesSocialCategory::getId, ClothesSocialCategory::getName) @@ -43,6 +80,7 @@ if(CollUtil.isNotEmpty(list)){ vos = buildApiClothesCategoryInfoVo(list, vos); } + return new FebsResponse().success().data(vos); } @@ -72,4 +110,515 @@ } return new FebsResponse().success().data(vos); } + + @Override + public FebsResponse allSocial(ApiAllSocialDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiAllSocialVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + // 调用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) { + ApiSocialInfoVo apiSocialInfoVo = new ApiSocialInfoVo(); + Long socialId = dto.getSocialId(); + ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); + if(ObjectUtil.isNotNull(clothesSocial)){ + MallMember mallMember = mallMemberMapper.selectById(clothesSocial.getMemberId()); + apiSocialInfoVo.setId(clothesSocial.getId()); + apiSocialInfoVo.setMemberName(mallMember.getName()); + apiSocialInfoVo.setMemberAvatar(mallMember.getAvatar()); + apiSocialInfoVo.setName(clothesSocial.getName()); + apiSocialInfoVo.setContent(clothesSocial.getContent()); + apiSocialInfoVo.setCreatedTime(clothesSocial.getCreatedTime()); + apiSocialInfoVo.setCommentState(clothesSocial.getCommentState()); + + List<ClothesSocialFile> clothesSocialFiles = clothesSocialFileMapper.selectList( + Wrappers.lambdaQuery(ClothesSocialFile.class) + .select(ClothesSocialFile::getFileUrl) + .eq(ClothesSocialFile::getSocialId, socialId) + .orderByAsc(ClothesSocialFile::getSeq) + ); + if(CollUtil.isNotEmpty(clothesSocialFiles)){ + apiSocialInfoVo.setImages(clothesSocialFiles.stream().map(ClothesSocialFile::getFileUrl).collect(Collectors.toList())); + } + + ApiSocialMuseVo apiSocialMuseVo = new ApiSocialMuseVo(); + ClothesSocialMuse clothesSocialMuse = clothesSocialMuseMapper.selectOne( + Wrappers.lambdaQuery(ClothesSocialMuse.class) + .eq(ClothesSocialMuse::getSocialId, socialId) + .last("LIMIT 1") + ); + if(ObjectUtil.isNotNull(clothesSocialMuse)){ + BigDecimal totalAmount = BigDecimal.ZERO; + apiSocialMuseVo.setMuseId(clothesSocialMuse.getId()); + ClothesType clothesType = clothesTypeMapper.selectById(clothesSocialMuse.getTypeId()); + if(ObjectUtil.isNotNull(clothesType)){ + apiSocialMuseVo.setTypeName(clothesType.getName()); + apiSocialMuseVo.setTypeImg(clothesType.getImage()); + } + ClothesSize clothesSize = clothesSizeMapper.selectById(clothesSocialMuse.getSizeId()); + if(ObjectUtil.isNotNull(clothesSize)){ + apiSocialMuseVo.setSizeName(clothesSize.getName()); + totalAmount = totalAmount.add(clothesSize.getPrice()); + } + ClothesCloth clothesCloth = clothesClothMapper.selectById(clothesSocialMuse.getClothId()); + if(ObjectUtil.isNotNull(clothesCloth)){ + apiSocialMuseVo.setClothName(clothesCloth.getName()); + totalAmount = totalAmount.add(clothesCloth.getPrice()); + } + ClothesArt clothesArt = clothesArtMapper.selectById(clothesSocialMuse.getArtId()); + if(ObjectUtil.isNotNull(clothesArt)){ + 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)); + + 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()); + } + + 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()); + } + } + } + + + return new FebsResponse().success().data(apiSocialInfoVo); + } + + @Override + @Transactional + public FebsResponse socialAdd(ApiSocialAddDto dto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long orderId = dto.getOrderId(); + ClothesOrder order = clothesOrderMapper.selectOne( + Wrappers.lambdaQuery(ClothesOrder.class) + .eq(ClothesOrder::getId, orderId) + .eq(ClothesOrder::getMemberId, memberId) + ); + if(ObjectUtil.isNull( order)){ + throw new FebsException("请选择订单"); + } + if(ClothesOrderStatusEnum.FINISH.getValue() != order.getStatus()){ + throw new FebsException("订单未确认收货"); + } + + String content = dto.getContent(); + List<String> contentFile = dto.getContentFile(); + String indexFile = dto.getIndexFile(); + String title = dto.getTitle(); + + ClothesSocial clothesSocial = new ClothesSocial(); + clothesSocial.setMemberId(memberId); + clothesSocial.setName(title); + clothesSocial.setContent(content); + clothesSocial.setIndexFile(indexFile); + clothesSocialMapper.insert(clothesSocial); + + if(CollUtil.isNotEmpty(contentFile)){ + int i = 0; + for (String file : contentFile){ + ClothesSocialFile clothesSocialFile = new ClothesSocialFile(); + clothesSocialFile.setSocialId(clothesSocial.getId()); + clothesSocialFile.setFileUrl(file); + clothesSocialFile.setSeq(i); + clothesSocialFileMapper.insert(clothesSocialFile); + i++; + } + } + + ClothesSocialMuse clothesSocialMuse = new ClothesSocialMuse(); + clothesSocialMuse.setSocialId(clothesSocial.getId()); + clothesSocialMuse.setTypeId(order.getTypeId()); + + List<ClothesOrderItem> clothesOrderItems = clothesOrderItemMapper.selectList( + Wrappers.lambdaQuery(ClothesOrderItem.class) + .eq(ClothesOrderItem::getOrderId, orderId) + ); + + 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()); + clothesSocialMuse.setClothId(cloth.getId()); + continue; + } else if (ClothesOrderItemEnum.SIZE.getCode() == item.getType()) { + ClothesSize size = clothesSizeMapper.selectById(item.getItemId()); + clothesSocialMuse.setSizeId(size.getId()); + continue; + } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) { + ClothesLocation location = clothesLocationMapper.selectById(item.getItemId()); + 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()); + 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()); + clothesSocialMuse.setArtId(art.getId()); + continue; + }else{ + continue; + } + } + } + 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("操作成功"); + } + + @Override + public FebsResponse addLike(ApiSocialLikeAddDto dto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long socialId = dto.getSocialId(); + ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); + if(ObjectUtil.isNotNull(clothesSocial)){ + ClothesSocialFollow clothesSocialFollow = new ClothesSocialFollow(); + clothesSocialFollow.setMemberId(memberId); + clothesSocialFollow.setSourceType(SocialSourceTypeEnum.SOCIAL.getValue()); + clothesSocialFollow.setSourceId(socialId); + clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue()); + clothesSocialFollowMapper.insert(clothesSocialFollow); + } + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse addCommentLike(ApiSocialCommentLikeAddDto dto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long socialId = dto.getSocialId(); + ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); + if(ObjectUtil.isNotNull(clothesSocial)){ + ClothesSocialFollow clothesSocialFollow = new ClothesSocialFollow(); + clothesSocialFollow.setMemberId(memberId); + clothesSocialFollow.setSourceType(SocialSourceTypeEnum.COMMENT.getValue()); + clothesSocialFollow.setSourceId(socialId); + clothesSocialFollow.setSourceOptionId(dto.getCommentId()); + clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue()); + clothesSocialFollowMapper.insert(clothesSocialFollow); + } + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse addCollect(ApiSocialCollectAddDto dto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long socialId = dto.getSocialId(); + ClothesSocial clothesSocial = clothesSocialMapper.selectById(socialId); + if(ObjectUtil.isNotNull(clothesSocial)){ + ClothesSocialFollow clothesSocialFollow = new ClothesSocialFollow(); + clothesSocialFollow.setMemberId(memberId); + clothesSocialFollow.setSourceType(SocialSourceTypeEnum.SOCIAL.getValue()); + clothesSocialFollow.setSourceId(socialId); + clothesSocialFollow.setType(SocialTypeEnum.COLLECT.getValue()); + clothesSocialFollowMapper.insert(clothesSocialFollow); + } + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse museToDesign(ApiClothesSocialMuseDto dto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + ApiClothesSocialMuseVo record = new ApiClothesSocialMuseVo(); + + Long id = dto.getMuseId(); + ClothesSocialMuse entity = clothesSocialMuseMapper.selectById(id); + + + if (ObjectUtil.isNotNull(entity)){ + Long typeId = entity.getTypeId(); + ClothesType clothesType = clothesTypeMapper.selectById(typeId); + record.setTypeId(typeId); + record.setTypeName(clothesType.getName()); + record.setTypeImage(clothesType.getImage()); + + Long sizeId = ObjectUtil.defaultIfNull(entity.getSizeId(),0L); + List<ClothesTypeSize> clothesTypeSizes = clothesTypeSizeMapper.selectList(Wrappers.<ClothesTypeSize>lambdaQuery().eq(ClothesTypeSize::getTypeId, typeId)); + if (CollUtil.isNotEmpty(clothesTypeSizes)){ + Set<Long> collect = clothesTypeSizes.stream().map(ClothesTypeSize::getSizeId).collect(Collectors.toSet()); + if(CollUtil.isNotEmpty( collect) && collect.contains(sizeId)){ + ClothesSize clothesSize = clothesSizeMapper.selectById(sizeId); + if(ObjectUtil.isNotNull(clothesSize)){ + record.setSizeId(sizeId); + record.setSizeName(clothesSize.getName()); + record.setSizeImage(clothesSize.getImage()); + record.setSizePrice(clothesSize.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); + } + + + 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); + List<ClothesTypeArt> clothesTypeArts = clothesTypeArtMapper.selectList(Wrappers.lambdaQuery(ClothesTypeArt.class).eq(ClothesTypeArt::getTypeId, typeId)); + if(CollUtil.isNotEmpty(clothesTypeArts)){ + Set<Long> artIds = clothesTypeArts.stream().map(ClothesTypeArt::getArtId).collect(Collectors.toSet()); + if (CollUtil.isNotEmpty(artIds) && artIds.contains(artId)){ + ClothesArt clothesArt = clothesArtMapper.selectById(artId); + if (ObjectUtil.isNotNull(clothesArt)){ + record.setArtId(artId); + record.setArtImage(clothesArt.getImage()); + record.setArtName(clothesArt.getName()); + record.setArtPrice(clothesArt.getPrice()); + } + } + } + + Long clothId = ObjectUtil.defaultIfNull(entity.getClothId(),0L); + List<ClothesTypeCloth> clothesTypeCloths = clothesTypeClothMapper.selectList(Wrappers.lambdaQuery(ClothesTypeCloth.class).eq(ClothesTypeCloth::getTypeId, typeId)); + if(CollUtil.isNotEmpty(clothesTypeCloths)){ + Set<Long> clothIds = clothesTypeCloths.stream().map(ClothesTypeCloth::getClothId).collect(Collectors.toSet()); + if (CollUtil.isNotEmpty(clothIds) && clothIds.contains(clothId)){ + ClothesCloth clothesCloth = clothesClothMapper.selectById(clothId); + if (ObjectUtil.isNotNull(clothesCloth)){ + record.setClothId(clothId); + record.setClothImage(clothesCloth.getImage()); + record.setClothName(clothesCloth.getName()); + record.setClothPrice(clothesCloth.getPrice()); + } + } + } + + BigDecimal amount = + record.getClothPrice() + .add(totalLocationAmount) + .add(record.getArtPrice()) + .add(record.getSizePrice()) + .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); + } + + public static void main(String[] args) { + JSONObject jsonObject = new JSONObject(); + jsonObject.putByPath("text", "123"); + jsonObject.putByPath("file", "https://excoin.oss-cn-hangzhou.aliyuncs.com/hc/175196952995698f416e2e70648328d04364340c3a36d.png"); + + String jsonStr = jsonObject.toString(); + System.out.println(jsonStr); + } } -- Gitblit v1.9.1