From aae9a494f83882a004311d3bb95b1eb081f38f02 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 10 Jul 2025 16:13:45 +0800
Subject: [PATCH] refactor(mall): 优化身材数据选择逻辑

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java |  122 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 118 insertions(+), 4 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java
index 725044a..466984a 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java
@@ -2,7 +2,9 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.enumerates.ClothesEnum;
+import cc.mrbird.febs.common.enumerates.SocialPatternLocationTypeEnum;
 import cc.mrbird.febs.common.enumerates.StateUpDownEnum;
+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.*;
@@ -12,6 +14,7 @@
 import cc.mrbird.febs.mall.vo.clothes.*;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,6 +22,7 @@
 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;
@@ -35,9 +39,16 @@
     private final ClothesTypePatternMapper clothesTypePatternMapper;
     private final ClothesTypeSizeMapper clothesTypeSizeMapper;
     private final ClothesSizeMapper clothesSizeMapper;
+    private final ClothesPatternMapper clothesPatternMapper;
+    private final ClothesLocationMapper clothesLocationMapper;
+    private final ClothesClothMapper clothesClothMapper;
+    private final ClothesArtMapper clothesArtMapper;
     private final ClothesTypeLocationMapper clothesTypeLocationMapper;
     private final ClothesTypeArtMapper clothesTypeArtMapper;
     private final ClothesMemberStatureMapper clothesMemberStatureMapper;
+    private final ClothesOrderDraftMapper clothesOrderDraftMapper;
+    private final ClothesPatternRemarkMapper clothesPatternRemarkMapper;
+    private final ClothesLocationRemarkMapper clothesLocationRemarkMapper;
 
     @Override
     public FebsResponse clothesType() {
@@ -253,16 +264,119 @@
     }
 
     @Override
-    public FebsResponse statureDel(ApiClothesMemberStatureInfoDto dto) {
-
+    public FebsResponse statureUpdateState(ApiClothesMemberStatureUpdateStateDto dto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
-        clothesMemberStatureMapper.delete(
+        ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(dto.getId());
+        if (ObjectUtil.isNotEmpty(clothesMemberStature)){
+            clothesMemberStature.setState(dto.getState());
+            clothesMemberStatureMapper.updateById(clothesMemberStature);
+
+            if(ClothesEnum.UP.getCode() == dto.getState()){
+                clothesMemberStatureMapper.update(null,
+                        Wrappers.lambdaUpdate(ClothesMemberStature.class)
+                                .set(ClothesMemberStature::getState, ClothesEnum.DOWN.getCode())
+                                .eq(ClothesMemberStature::getMemberId, memberId)
+                                .ne(ClothesMemberStature::getId, clothesMemberStature.getId())
+                                .eq(ClothesMemberStature::getDelFlag, ClothesEnum.DOWN.getCode())
+                );
+            }
+        }
+
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
+    public FebsResponse statureDel(ApiClothesMemberStatureInfoDto dto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        clothesMemberStatureMapper.update(null,
                 Wrappers.lambdaUpdate(ClothesMemberStature.class)
+                        .set(ClothesMemberStature::getDelFlag, ClothesEnum.UP.getCode())
                         .eq(ClothesMemberStature::getId, dto.getId())
                         .eq(ClothesMemberStature::getMemberId, memberId)
-                        .eq(ClothesMemberStature::getDelFlag, ClothesEnum.DOWN.getCode())
         );
 
         return new FebsResponse().success().message("操作成功");
     }
+
+    @Override
+    @Transactional
+    public FebsResponse draftSave(ApiMyDraftSaveDto dto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        ClothesOrderDraft clothesOrderDraft = new ClothesOrderDraft();
+        clothesOrderDraft.setMemberId(memberId);
+
+        Long typeId = ObjectUtil.defaultIfNull(dto.getTypeId(),0L);
+        ClothesType clothesType = clothesTypeMapper.selectById(typeId);
+        if (ObjectUtil.isNull(clothesType)){
+            throw new FebsException("请选择商品");
+        }
+        if (ClothesEnum.UP.getCode() != clothesType.getState()){
+            throw new FebsException("商品已下架");
+        }
+        clothesOrderDraft.setTypeId(typeId);
+
+        Long sizeId = ObjectUtil.defaultIfNull(dto.getSizeId(),0L);
+        ClothesSize clothesSize = clothesSizeMapper.selectById(sizeId);
+        if (ObjectUtil.isNull(clothesSize)){
+            throw new FebsException("请选择尺码");
+        }
+        clothesOrderDraft.setSizeId(sizeId);
+
+        Long clothId = ObjectUtil.defaultIfNull(dto.getClothId(),0L);
+        ClothesCloth clothesCloth = clothesClothMapper.selectById(clothId);
+        if (ObjectUtil.isNull(clothesCloth)){
+            throw new FebsException("请选择布料");
+        }
+        clothesOrderDraft.setClothId(clothId);
+
+        Long artId = ObjectUtil.defaultIfNull(dto.getArtId(),0L);
+        ClothesArt clothesArt = clothesArtMapper.selectById(artId);
+        if (ObjectUtil.isNull(clothesArt)){
+            throw new FebsException("请选择工艺");
+        }
+        clothesOrderDraft.setArtId(artId);
+
+        Long statureId = ObjectUtil.defaultIfNull(dto.getStatureId(),0L);
+        ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(statureId);
+        if (ObjectUtil.isNotNull(clothesMemberStature)){
+            clothesOrderDraft.setStatureId(clothesMemberStature.getId());
+        }
+
+        clothesOrderDraftMapper.insert(clothesOrderDraft);
+
+        List<ApiPatternAddDto> patternList = dto.getPatternList();
+        if (CollUtil.isNotEmpty(patternList)){
+            for (ApiPatternAddDto patternAddDto : patternList){
+                Long patternId = patternAddDto.getPatternId();
+                String patternRemark = patternAddDto.getPatternRemark();
+
+                ClothesPatternRemark clothesPatternRemark = new ClothesPatternRemark();
+                clothesPatternRemark.setMemberId(memberId);
+                clothesPatternRemark.setType(SocialPatternLocationTypeEnum.DRAFT.getValue());
+                clothesPatternRemark.setSourceId(clothesOrderDraft.getId());
+                clothesPatternRemark.setPatternId(patternId);
+                clothesPatternRemark.setRemark(patternRemark);
+                clothesPatternRemarkMapper.insert(clothesPatternRemark);
+            }
+        }
+
+        List<ApiLocationAddDto> locationList = dto.getLocationList();
+        if (CollUtil.isNotEmpty(locationList)){
+            for (ApiLocationAddDto locationAddDto : locationList){
+                Long locationId = locationAddDto.getLocationId();
+                String patternRemark = locationAddDto.getPatternRemark();
+
+                ClothesLocationRemark clothesLocationRemark = new ClothesLocationRemark();
+                clothesLocationRemark.setMemberId(memberId);
+                clothesLocationRemark.setType(SocialPatternLocationTypeEnum.DRAFT.getValue());
+                clothesLocationRemark.setSourceId(clothesOrderDraft.getId());
+                clothesLocationRemark.setLocationId(locationId);
+                clothesLocationRemark.setRemark(patternRemark);
+                clothesLocationRemarkMapper.insert(clothesLocationRemark);
+            }
+        }
+
+        return new FebsResponse().success().message("操作成功");
+    }
 }

--
Gitblit v1.9.1