From ac9126763134c6eaf7eb96c6ed597809a6d7fc8b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 10 Oct 2025 10:04:51 +0800
Subject: [PATCH] feat(mall): 添加会员公司信息展示功能
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java | 673 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 660 insertions(+), 13 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..2bcd490 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,37 @@
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.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.ApiClothesCategoryInfoVo;
+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;
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 +39,42 @@
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;
+ 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)
@@ -41,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;
@@ -68,8 +112,611 @@
.orderByAsc(ClothesSocialCategory::getOrderCnt)
);
if(CollUtil.isNotEmpty(list)){
- vos = buildApiClothesCategoryInfoVo(list, vos);
+ vos = buildApiClothesCategoryInfoVo(list, vos,1);
}
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());
+ apiSocialInfoVo.setLikeCnt(clothesSocial.getLikeCnt());
+ apiSocialInfoVo.setCollectCnt(clothesSocial.getCollectCnt());
+
+ 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) && clothesType.getSizeState() == 1){
+ apiSocialMuseVo.setSizeName(clothesSize.getName());
+ totalAmount = totalAmount.add(clothesSize.getPrice());
+ }
+ ClothesCloth clothesCloth = clothesClothMapper.selectById(clothesSocialMuse.getClothId());
+ if(ObjectUtil.isNotNull(clothesCloth) && clothesType.getClothState() == 1){
+ apiSocialMuseVo.setClothName(clothesCloth.getName());
+ totalAmount = totalAmount.add(clothesCloth.getPrice());
+ }
+ ClothesArt clothesArt = clothesArtMapper.selectById(clothesSocialMuse.getArtId());
+ if(ObjectUtil.isNotNull(clothesArt) && clothesType.getArtState() == 1){
+ 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) && clothesType.getPatternState() == 1){
+ 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) && clothesType.getLocationState() == 1){
+ 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(
+// ObjectUtil.isNotNull(clothesArt)
+// && ObjectUtil.isNotNull(clothesSize)
+// && ObjectUtil.isNotNull(clothesCloth)
+// ){
+// apiSocialInfoVo.setMuse(apiSocialMuseVo);
+// }
+ 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());
+ }
+ }
+ }
+
+
+ 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);
+
+ agentProducer.sendAddLike(socialId);
+ }
+ 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)){
+ 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
+ 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());
+ vo.setBoxHeight(pattern.getBoxHeight());
+ vo.setBoxWidth(pattern.getBoxWidth());
+ vo.setLeftPercent(pattern.getLeftPercent());
+ vo.setTopPercent(pattern.getTopPercent());
+ 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());
+ vo.setBoxHeight(clothesLocation.getBoxHeight());
+ vo.setBoxWidth(clothesLocation.getBoxWidth());
+ vo.setLeftPercent(clothesLocation.getLeftPercent());
+ vo.setTopPercent(clothesLocation.getTopPercent());
+ 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);
+ }
+
+ @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");
+ 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