From f29586dbcd6af0077af62efa95105ef2350d794b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 09 Jul 2025 18:17:54 +0800
Subject: [PATCH] feat(clothes): 新增多图案和图案位置功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java |  158 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 116 insertions(+), 42 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..6e9ee3b 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
@@ -19,6 +19,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;
@@ -59,6 +60,8 @@
     private final ClothesTypeSizeMapper clothesTypeSizeMapper;
     private final ClothesTypeLocationMapper clothesTypeLocationMapper;
     private final ClothesTypeArtMapper clothesTypeArtMapper;
+    private final ClothesLocationRemarkMapper clothesLocationRemarkMapper;
+    private final ClothesPatternRemarkMapper clothesPatternRemarkMapper;
 
 
     @Override
@@ -147,10 +150,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());
@@ -161,16 +160,6 @@
                     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)){
                     apiSocialMuseVo.setClothName(clothesCloth.getName());
@@ -180,6 +169,46 @@
                 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));
             }
@@ -239,6 +268,9 @@
                 Wrappers.lambdaQuery(ClothesOrderItem.class)
                         .eq(ClothesOrderItem::getOrderId, orderId)
         );
+
+        List<ClothesLocationRemark> clothesLocationRemarks = new ArrayList<>();
+        List<ClothesPatternRemark> clothesPatternRemarks = new ArrayList<>();
         if(CollUtil.isEmpty(clothesOrderItems)){
             for (ClothesOrderItem item : clothesOrderItems){
                 if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) {
@@ -251,12 +283,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 +311,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("操作成功");
     }
 
@@ -338,7 +395,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));
@@ -354,32 +410,49 @@
                 }
             }
 
-            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.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.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);
@@ -412,10 +485,11 @@
 
             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);
         }
 

--
Gitblit v1.9.1