From ad96e226fed4cb87e6ccdf73084feeb120b2dfb0 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 10 Oct 2025 10:28:52 +0800
Subject: [PATCH] feat(mall):会员信息展示优化
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java | 206 +++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 159 insertions(+), 47 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 4d730aa..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
@@ -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,11 +64,17 @@
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)
@@ -74,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;
@@ -101,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);
}
@@ -113,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::getType, SocialTypeEnum.LIKE.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);
}
@@ -158,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)
@@ -184,17 +197,17 @@
apiSocialMuseVo.setTypeImg(clothesType.getImage());
}
ClothesSize clothesSize = clothesSizeMapper.selectById(clothesSocialMuse.getSizeId());
- if(ObjectUtil.isNotNull(clothesSize)){
+ 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)){
+ 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)){
+ if(ObjectUtil.isNotNull(clothesArt) && clothesType.getArtState() == 1){
apiSocialMuseVo.setArtName(clothesArt.getName());
totalAmount = totalAmount.add(clothesArt.getPrice());
}
@@ -207,7 +220,7 @@
.eq(ClothesPatternRemark::getSourceId, clothesSocialMuse.getId())
.eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue())
);
- if(CollUtil.isNotEmpty(patternRemarks)){
+ if(CollUtil.isNotEmpty(patternRemarks) && clothesType.getPatternState() == 1){
for (ClothesPatternRemark entity : patternRemarks){
ApiClothesPatternRemarkVo vo = new ApiClothesPatternRemarkVo();
ClothesPattern pattern = clothesPatternMapper.selectById(entity.getPatternId());
@@ -226,7 +239,7 @@
.eq(ClothesLocationRemark::getSourceId, clothesSocialMuse.getId())
.eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.MUSE.getValue())
);
- if(CollUtil.isNotEmpty(locationRemarks)){
+ if(CollUtil.isNotEmpty(locationRemarks) && clothesType.getLocationState() == 1){
for (ClothesLocationRemark entity : locationRemarks){
ApiClothesLocationRemarkVo vo = new ApiClothesLocationRemarkVo();
ClothesLocation clothesLocation = clothesLocationMapper.selectById(entity.getLocationId());
@@ -239,19 +252,34 @@
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);
- List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList(
- Wrappers.lambdaQuery(ClothesSocialFollow.class)
- .select(ClothesSocialFollow::getType)
- .eq(ClothesSocialFollow::getSourceId, socialId)
- );
- 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());
- }
+// 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)
@@ -322,7 +350,7 @@
List<ClothesLocationRemark> clothesLocationRemarks = new ArrayList<>();
List<ClothesPatternRemark> clothesPatternRemarks = new ArrayList<>();
- if(CollUtil.isEmpty(clothesOrderItems)){
+ if(CollUtil.isNotEmpty(clothesOrderItems)){
for (ClothesOrderItem item : clothesOrderItems){
if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) {
ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId());
@@ -392,6 +420,8 @@
clothesSocialFollow.setSourceId(socialId);
clothesSocialFollow.setType(SocialTypeEnum.LIKE.getValue());
clothesSocialFollowMapper.insert(clothesSocialFollow);
+
+ agentProducer.sendAddLike(socialId);
}
return new FebsResponse().success().message("操作成功");
}
@@ -420,14 +450,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
@@ -456,6 +511,7 @@
if(ObjectUtil.isNotNull(clothesSize)){
record.setSizeId(sizeId);
record.setSizeName(clothesSize.getName());
+ record.setSizeImage(clothesSize.getImage());
record.setSizePrice(clothesSize.getPrice());
}
}
@@ -473,9 +529,14 @@
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());
@@ -497,8 +558,13 @@
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());
@@ -514,6 +580,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());
}
@@ -528,6 +595,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());
}
@@ -566,7 +634,7 @@
entity.setComment(dto.getComment());
ClothesSocialComment clothesSocialComment = clothesSocialCommentMapper.selectById(commentId);
if(ObjectUtil.isNotNull(clothesSocialComment)){
- entity.setParentId(clothesSocialComment.getParentId());
+ entity.setParentId(clothesSocialComment.getId());
entity.setCommentId(clothesSocialComment.getId());
}
clothesSocialCommentMapper.insert(entity);
@@ -587,6 +655,7 @@
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()
@@ -599,6 +668,49 @@
return new FebsResponse().success().data(voPage);
}
+ @Override
+ public FebsResponse delCollection(ApiColletDelDto dto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ List<Long> ids = dto.getIds();
+ if (CollUtil.isEmpty(ids)) {
+ return new FebsResponse().success().message("操作成功");
+ }
+
+ LambdaQueryWrapper<ClothesSocialFollow> delQuery = new LambdaQueryWrapper<>();
+ delQuery.eq(ClothesSocialFollow::getMemberId, memberId);
+ delQuery.eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue());
+ delQuery.in(ClothesSocialFollow::getSourceId, ids);
+ delQuery.eq(ClothesSocialFollow::getType, SocialTypeEnum.COLLECT.getValue());
+ clothesSocialFollowMapper.delete(delQuery);
+ return new FebsResponse().success().message("操作成功");
+ }
+
+ @Override
+ public FebsResponse followState(ApiSocialCollectFollowStateDto dto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+
+ Integer collectState = clothesSocialFollowMapper.selectCount(
+ Wrappers.lambdaQuery(ClothesSocialFollow.class)
+ .eq(ClothesSocialFollow::getMemberId, memberId)
+ .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue())
+ .eq(ClothesSocialFollow::getSourceId, dto.getSocialId())
+ .eq(ClothesSocialFollow::getType, SocialTypeEnum.COLLECT.getValue())
+ );
+ stringObjectHashMap.put("collectState", collectState);
+
+ Integer likeState = clothesSocialFollowMapper.selectCount(
+ Wrappers.lambdaQuery(ClothesSocialFollow.class)
+ .eq(ClothesSocialFollow::getMemberId, memberId)
+ .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue())
+ .eq(ClothesSocialFollow::getSourceId, dto.getSocialId())
+ .eq(ClothesSocialFollow::getType, SocialTypeEnum.LIKE.getValue())
+ );
+ stringObjectHashMap.put("likeState", likeState);
+
+ return new FebsResponse().success().data(stringObjectHashMap);
+ }
+
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
jsonObject.putByPath("text", "123");
--
Gitblit v1.9.1