From 4c9c358ede7e52d6063716b3374dd437910cd417 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 02 Jul 2025 11:09:31 +0800
Subject: [PATCH] feat(mall): 添加衣服设计相关接口和模型

---
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeListVo.java              |   21 +
 src/main/resources/mapper/modules/ClothesTypeArtMapper.xml                          |   24 +
 src/main/resources/mapper/modules/ClothesTypeLocationMapper.xml                     |   24 +
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesClothVo.java                 |   32 +
 src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeClothMapper.java                |    7 
 src/main/java/cc/mrbird/febs/mall/entity/ClothesMemberStature.java                  |   34 +
 src/main/java/cc/mrbird/febs/mall/entity/ClothesType.java                           |    2 
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesClothPageDto.java           |   28 +
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureDto.java       |   26 +
 src/main/java/cc/mrbird/febs/mall/mapper/ClothesMemberStatureMapper.java            |   14 
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureInfoDto.java   |   17 
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiTypeInfoDto.java                   |   16 
 src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypePatternMapper.java              |    7 
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesArtVo.java                   |   31 +
 src/main/resources/mapper/modules/ClothesTypePatternMapper.xml                      |   26 +
 src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeLocationMapper.java             |    7 
 src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeArtMapper.java                  |    7 
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesLocationPageDto.java        |   27 +
 src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java      |  139 ++++++
 src/main/java/cc/mrbird/febs/mall/service/ApiClothesService.java                    |   33 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java           |  268 +++++++++++++
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureAddDto.java    |   52 ++
 src/main/resources/mapper/modules/ClothesMemberStatureMapper.xml                    |   23 +
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureUpdateDto.java |   54 ++
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesMemberStatureVo.java         |   29 +
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternVo.java               |   35 +
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationVo.java              |   31 +
 src/main/resources/mapper/modules/ClothesTypeClothMapper.xml                        |   24 +
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesSizeDto.java                |   18 
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSizeVo.java                  |   33 +
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesPatternPageDto.java         |   27 +
 src/main/java/cc/mrbird/febs/common/enumerates/ClothesEnum.java                     |   21 +
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesArtPageDto.java             |   27 +
 src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeVo.java                  |   33 +
 34 files changed, 1,196 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/ClothesEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/ClothesEnum.java
new file mode 100644
index 0000000..386953c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/ClothesEnum.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum ClothesEnum {
+
+    /**
+     *       是否上线 0-否 1-是
+     *       是否默认 0-否 1-是
+     *       是否删除 0-否 1-是
+     */
+    DOWN(0),
+    UP(1);
+
+    private final int code;
+
+    ClothesEnum(int code) {
+        this.code = code;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java
new file mode 100644
index 0000000..c00d98d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java
@@ -0,0 +1,139 @@
+package cc.mrbird.febs.mall.controller.clothes;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.ApiActivityDto;
+import cc.mrbird.febs.mall.dto.MallGoodsQueryDto;
+import cc.mrbird.febs.mall.dto.clothes.*;
+import cc.mrbird.febs.mall.service.ApiClothesService;
+import cc.mrbird.febs.mall.vo.ApiActivityVo;
+import cc.mrbird.febs.mall.vo.MallGoodsListVo;
+import cc.mrbird.febs.mall.vo.clothes.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/clothes")
+@Api(value = "ApiClothesController", tags = "设计衣服")
+public class ApiClothesController {
+
+    private final ApiClothesService clothesService;
+
+    @ApiOperation(value = "设计款式", notes = "设计款式")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesTypeListVo.class)
+    })
+    @GetMapping(value = "/clothesType")
+    public FebsResponse clothesType() {
+        return clothesService.clothesType();
+    }
+
+    @ApiOperation(value = "设计款式详情", notes = "设计款式详情")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesTypeVo.class)
+    })
+    @PostMapping(value = "/typeInfo")
+    public FebsResponse typeInfo(@RequestBody @Validated ApiTypeInfoDto dto) {
+
+        return clothesService.typeInfo(dto);
+    }
+
+    @ApiOperation(value = "布料列表", notes = "布料列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesClothVo.class)
+    })
+    @PostMapping(value = "/clothList")
+    public FebsResponse clothList(@RequestBody @Validated ApiClothesClothPageDto dto) {
+
+        return clothesService.clothList(dto);
+    }
+
+    @ApiOperation(value = "图案列表", notes = "图案列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesPatternVo.class)
+    })
+    @PostMapping(value = "/patternList")
+    public FebsResponse patternList(@RequestBody @Validated ApiClothesPatternPageDto dto) {
+
+        return clothesService.patternList(dto);
+    }
+
+    @ApiOperation(value = "尺码列表", notes = "尺码列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesSizeVo.class)
+    })
+    @PostMapping(value = "/sizeList")
+    public FebsResponse sizeList(@RequestBody @Validated ApiClothesSizeDto dto) {
+
+        return clothesService.sizeList(dto);
+    }
+
+    @ApiOperation(value = "位置列表", notes = "位置列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesLocationVo.class)
+    })
+    @PostMapping(value = "/locationList")
+    public FebsResponse locationList(@RequestBody @Validated ApiClothesLocationPageDto dto) {
+
+        return clothesService.locationList(dto);
+    }
+
+    @ApiOperation(value = "工艺列表", notes = "工艺列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesArtVo.class)
+    })
+    @PostMapping(value = "/artList")
+    public FebsResponse artList(@RequestBody @Validated ApiClothesArtPageDto dto) {
+
+        return clothesService.artList(dto);
+    }
+
+    @ApiOperation(value = "身材数据-列表", notes = "身材数据-列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesMemberStatureVo.class)
+    })
+    @PostMapping(value = "/statureList")
+    public FebsResponse statureList(@RequestBody @Validated ApiClothesMemberStatureDto dto) {
+
+        return clothesService.statureList(dto);
+    }
+
+    @ApiOperation(value = "身材数据-新增", notes = "身材数据-新增")
+    @PostMapping(value = "/statureAdd")
+    public FebsResponse statureAdd(@RequestBody @Validated ApiClothesMemberStatureAddDto dto) {
+
+        return clothesService.statureAdd(dto);
+    }
+
+    @ApiOperation(value = "身材数据-详情", notes = "身材数据-详情")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiClothesMemberStatureVo.class)
+    })
+    @PostMapping(value = "/statureInfo")
+    public FebsResponse statureInfo(@RequestBody @Validated ApiClothesMemberStatureInfoDto dto) {
+
+        return clothesService.statureInfo(dto);
+    }
+
+    @ApiOperation(value = "身材数据-详情", notes = "身材数据-详情")
+    @PostMapping(value = "/statureUpdate")
+    public FebsResponse statureUpdate(@RequestBody @Validated ApiClothesMemberStatureUpdateDto dto) {
+
+        return clothesService.statureUpdate(dto);
+    }
+
+    @ApiOperation(value = "身材数据-删除", notes = "身材数据-删除")
+    @PostMapping(value = "/statureDel")
+    public FebsResponse statureDel(@RequestBody @Validated ApiClothesMemberStatureInfoDto dto) {
+
+        return clothesService.statureDel(dto);
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesArtPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesArtPageDto.java
new file mode 100644
index 0000000..5815db8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesArtPageDto.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesArtPageDto", description = "参数")
+public class ApiClothesArtPageDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @NotNull(message = "设计款式不能为空")
+    @ApiModelProperty(value = "设计款式ID")
+    private Long typeId;
+
+    @ApiModelProperty(value = "查询名称", example = "123")
+    private String query;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesClothPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesClothPageDto.java
new file mode 100644
index 0000000..76a8641
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesClothPageDto.java
@@ -0,0 +1,28 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesClothPageDto", description = "参数")
+public class ApiClothesClothPageDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @NotNull(message = "设计款式不能为空")
+    @ApiModelProperty(value = "设计款式ID")
+    private Long typeId;
+
+    @ApiModelProperty(value = "查询名称", example = "123")
+    private String query;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesLocationPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesLocationPageDto.java
new file mode 100644
index 0000000..d429fce
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesLocationPageDto.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesLocationPageDto", description = "参数")
+public class ApiClothesLocationPageDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @NotNull(message = "设计款式不能为空")
+    @ApiModelProperty(value = "设计款式ID")
+    private Long typeId;
+
+    @ApiModelProperty(value = "查询名称", example = "123")
+    private String query;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureAddDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureAddDto.java
new file mode 100644
index 0000000..5f7f73f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureAddDto.java
@@ -0,0 +1,52 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesMemberStatureAddDto", description = "参数")
+public class ApiClothesMemberStatureAddDto {
+
+
+    @NotBlank(message = "昵称不能为空")
+    @ApiModelProperty(value = "昵称")
+    private String name;
+
+    @NotNull(message = "身高不能为空")
+    @Min(value = 0, message = "身高不能小于0")
+    @Max(value = 240, message = "身高不能大于240CM")
+    @ApiModelProperty(value = "身高")
+    private BigDecimal heightLine;
+
+    @NotNull(message = "胸围不能为空")
+    @Min(value = 0, message = "胸围不能小于0")
+    @ApiModelProperty(value = "胸围")
+    private BigDecimal bustLine;
+
+    @NotNull(message = "腰围不能为空")
+    @Min(value = 0, message = "腰围不能小于0")
+    @ApiModelProperty(value = "腰围")
+    private BigDecimal waistLine;
+
+    @NotNull(message = "肩宽不能为空")
+    @Min(value = 0, message = "肩宽不能小于0")
+    @ApiModelProperty(value = "肩宽")
+    private BigDecimal wideLine;
+
+    @NotNull(message = "每页数量不能为空")
+    @Min(value = 0, message = "臀围不能小于0")
+    @ApiModelProperty(value = "臀围")
+    private BigDecimal hipLine;
+
+    @NotNull(message = "是否默认不能为空")
+    @ApiModelProperty(value = "是否默认 0-否 1-是")
+    private Integer state;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureDto.java
new file mode 100644
index 0000000..deafca3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureDto.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesMemberStatureDto", description = "参数")
+public class ApiClothesMemberStatureDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "查询名称", example = "123")
+    private String query;
+
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureInfoDto.java
new file mode 100644
index 0000000..5276d86
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureInfoDto.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesMemberStatureInfoDto", description = "参数")
+public class ApiClothesMemberStatureInfoDto {
+
+    @NotNull(message = "身材数据不能为空")
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureUpdateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureUpdateDto.java
new file mode 100644
index 0000000..89f7c8d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureUpdateDto.java
@@ -0,0 +1,54 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesMemberStatureUpdateDto", description = "参数")
+public class ApiClothesMemberStatureUpdateDto {
+
+    @NotNull(message = "身材不能为空")
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @NotBlank(message = "昵称不能为空")
+    @ApiModelProperty(value = "昵称")
+    private String name;
+
+    @NotNull(message = "身高不能为空")
+    @Min(value = 0, message = "身高不能小于0")
+    @Max(value = 240, message = "身高不能大于240CM")
+    @ApiModelProperty(value = "身高")
+    private BigDecimal heightLine;
+
+    @NotNull(message = "胸围不能为空")
+    @Min(value = 0, message = "胸围不能小于0")
+    @ApiModelProperty(value = "胸围")
+    private BigDecimal bustLine;
+
+    @NotNull(message = "腰围不能为空")
+    @Min(value = 0, message = "腰围不能小于0")
+    @ApiModelProperty(value = "腰围")
+    private BigDecimal waistLine;
+
+    @NotNull(message = "肩宽不能为空")
+    @Min(value = 0, message = "肩宽不能小于0")
+    @ApiModelProperty(value = "肩宽")
+    private BigDecimal wideLine;
+
+    @NotNull(message = "每页数量不能为空")
+    @Min(value = 0, message = "臀围不能小于0")
+    @ApiModelProperty(value = "臀围")
+    private BigDecimal hipLine;
+
+    @NotNull(message = "是否默认不能为空")
+    @ApiModelProperty(value = "是否默认 0-否 1-是")
+    private Integer state;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesPatternPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesPatternPageDto.java
new file mode 100644
index 0000000..4fa2af0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesPatternPageDto.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesPatternPageDto", description = "参数")
+public class ApiClothesPatternPageDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @NotNull(message = "设计款式不能为空")
+    @ApiModelProperty(value = "设计款式ID")
+    private Long typeId;
+
+    @ApiModelProperty(value = "查询名称", example = "123")
+    private String query;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesSizeDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesSizeDto.java
new file mode 100644
index 0000000..e72b5b8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesSizeDto.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesSizeDto", description = "参数")
+public class ApiClothesSizeDto {
+
+
+    @NotNull(message = "设计款式不能为空")
+    @ApiModelProperty(value = "设计款式ID")
+    private Long typeId;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiTypeInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiTypeInfoDto.java
new file mode 100644
index 0000000..a4f6eee
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiTypeInfoDto.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiTypeInfoDto", description = "参数")
+public class ApiTypeInfoDto {
+
+    @NotNull(message = "ID不能为空")
+    @ApiModelProperty(value = "ID")
+    private Long id;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/ClothesMemberStature.java b/src/main/java/cc/mrbird/febs/mall/entity/ClothesMemberStature.java
new file mode 100644
index 0000000..88c6694
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/ClothesMemberStature.java
@@ -0,0 +1,34 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@TableName("clothes_member_stature")
+public class ClothesMemberStature extends BaseEntity {
+    /**
+     *
+     `member_id` bigint(20) DEFAULT NULL,
+     `name` varchar(100) DEFAULT NULL,
+     `height_line` decimal(20,2) DEFAULT NULL COMMENT '身高',
+     `bust_line` decimal(20,2) DEFAULT NULL COMMENT '胸围',
+     `waist_line` decimal(20,2) DEFAULT NULL COMMENT '腰围',
+     `wide_line` decimal(20,2) DEFAULT NULL COMMENT '肩宽',
+     `hip_line` decimal(20,2) DEFAULT NULL COMMENT '臀围',
+     `state` int(11) DEFAULT '0' COMMENT '是否默认 0-否 1-是',
+     */
+
+
+    private Long memberId;
+    private String name;
+    private BigDecimal heightLine;
+    private BigDecimal bustLine;
+    private BigDecimal waistLine;
+    private BigDecimal wideLine;
+    private BigDecimal hipLine;
+    private Integer state;
+    private Integer delFlag;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/ClothesType.java b/src/main/java/cc/mrbird/febs/mall/entity/ClothesType.java
index 22e7e10..1dad90e 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/ClothesType.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/ClothesType.java
@@ -19,7 +19,7 @@
      `art_state` int(11) DEFAULT '0' COMMENT '是否允许选择工艺 0-否 1-是',
      `pattern_state` int(11) DEFAULT '0' COMMENT '是否允许选择图案 0-否 1-是',
      `location_state` int(11) DEFAULT '0' COMMENT '是否允许选择图案位置 0-否 1-是',
-     `size_state` int(11) DEFAULT '0' COMMENT '是否允许选择尺码 0-否 1-是',
+     `size_state` int(11) DEFAULT '0' COMMENT '是否允许自定义尺码 0-否 1-是',
      `order_num` int(11) DEFAULT NULL COMMENT '排序',
      */
 
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesMemberStatureMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesMemberStatureMapper.java
new file mode 100644
index 0000000..4e1a69e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesMemberStatureMapper.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.dto.clothes.ApiClothesMemberStatureDto;
+import cc.mrbird.febs.mall.entity.ClothesMemberStature;
+import cc.mrbird.febs.mall.vo.clothes.ApiClothesMemberStatureVo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+public interface ClothesMemberStatureMapper extends BaseMapper<ClothesMemberStature> {
+
+    Page<ApiClothesMemberStatureVo> selectPageInMemberStature(Page<ApiClothesMemberStatureVo> page, @Param("record")ApiClothesMemberStatureDto dto);
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeArtMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeArtMapper.java
index 13b4dd3..94b0597 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeArtMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeArtMapper.java
@@ -1,7 +1,14 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.clothes.ApiClothesArtPageDto;
 import cc.mrbird.febs.mall.entity.ClothesTypeArt;
+import cc.mrbird.febs.mall.vo.clothes.ApiClothesArtVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 public interface ClothesTypeArtMapper extends BaseMapper<ClothesTypeArt> {
+
+    Page<ApiClothesArtVo> selectPageInArt(Page<ApiClothesArtVo> page,  @Param("record")ApiClothesArtPageDto dto);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeClothMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeClothMapper.java
index cd7e5c9..a7a7d6f 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeClothMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeClothMapper.java
@@ -1,7 +1,14 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.clothes.ApiClothesClothPageDto;
 import cc.mrbird.febs.mall.entity.ClothesTypeCloth;
+import cc.mrbird.febs.mall.vo.clothes.ApiClothesClothVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 public interface ClothesTypeClothMapper extends BaseMapper<ClothesTypeCloth> {
+
+    Page<ApiClothesClothVo> selectPageInCloth(Page<ApiClothesClothVo> page, @Param("record")ApiClothesClothPageDto dto);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeLocationMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeLocationMapper.java
index f661b05..6858db8 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeLocationMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypeLocationMapper.java
@@ -1,7 +1,14 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.clothes.ApiClothesLocationPageDto;
 import cc.mrbird.febs.mall.entity.ClothesTypeLocation;
+import cc.mrbird.febs.mall.vo.clothes.ApiClothesLocationVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 public interface ClothesTypeLocationMapper extends BaseMapper<ClothesTypeLocation> {
+
+    Page<ApiClothesLocationVo> selectPageInLocation(Page<ApiClothesLocationVo> page,  @Param("record")ApiClothesLocationPageDto dto);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypePatternMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypePatternMapper.java
index ebc5ced..ec133d2 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypePatternMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesTypePatternMapper.java
@@ -1,7 +1,14 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.clothes.ApiClothesPatternPageDto;
 import cc.mrbird.febs.mall.entity.ClothesTypePattern;
+import cc.mrbird.febs.mall.vo.clothes.ApiClothesPatternVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 public interface ClothesTypePatternMapper extends BaseMapper<ClothesTypePattern> {
+
+    Page<ApiClothesPatternVo> selectPageInPattern(Page<ApiClothesPatternVo> page,  @Param("record")ApiClothesPatternPageDto dto);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/ApiClothesService.java b/src/main/java/cc/mrbird/febs/mall/service/ApiClothesService.java
new file mode 100644
index 0000000..f369726
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/ApiClothesService.java
@@ -0,0 +1,33 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.clothes.*;
+import cc.mrbird.febs.mall.entity.ClothesType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface ApiClothesService extends IService<ClothesType> {
+
+    FebsResponse clothesType();
+
+    FebsResponse typeInfo(ApiTypeInfoDto dto);
+
+    FebsResponse clothList(ApiClothesClothPageDto dto);
+
+    FebsResponse patternList(ApiClothesPatternPageDto dto);
+
+    FebsResponse sizeList(ApiClothesSizeDto dto);
+
+    FebsResponse locationList(ApiClothesLocationPageDto dto);
+
+    FebsResponse artList(ApiClothesArtPageDto dto);
+
+    FebsResponse statureList(ApiClothesMemberStatureDto dto);
+
+    FebsResponse statureAdd(ApiClothesMemberStatureAddDto dto);
+
+    FebsResponse statureInfo(ApiClothesMemberStatureInfoDto dto);
+
+    FebsResponse statureUpdate(ApiClothesMemberStatureUpdateDto dto);
+
+    FebsResponse statureDel(ApiClothesMemberStatureInfoDto dto);
+}
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
new file mode 100644
index 0000000..725044a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java
@@ -0,0 +1,268 @@
+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.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.ApiClothesService;
+import cc.mrbird.febs.mall.vo.ApiActivityInfoVo;
+import cc.mrbird.febs.mall.vo.clothes.*;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+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 lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ApiClothesServiceImpl extends ServiceImpl<ClothesTypeMapper, ClothesType> implements ApiClothesService {
+
+    private final ClothesTypeMapper clothesTypeMapper;
+    private final ClothesTypeClothMapper clothesTypeClothMapper;
+    private final ClothesTypePatternMapper clothesTypePatternMapper;
+    private final ClothesTypeSizeMapper clothesTypeSizeMapper;
+    private final ClothesSizeMapper clothesSizeMapper;
+    private final ClothesTypeLocationMapper clothesTypeLocationMapper;
+    private final ClothesTypeArtMapper clothesTypeArtMapper;
+    private final ClothesMemberStatureMapper clothesMemberStatureMapper;
+
+    @Override
+    public FebsResponse clothesType() {
+        List<ApiClothesTypeListVo> vos = new ArrayList<>();
+
+        List<ClothesType> clothesTypes = clothesTypeMapper.selectList(
+                Wrappers.lambdaQuery(ClothesType.class)
+                        .eq(ClothesType::getState, ClothesEnum.UP.getCode())
+                        .orderByAsc(ClothesType::getOrderNum)
+        );
+        if (CollUtil.isNotEmpty(clothesTypes)){
+            for (ClothesType clothesType : clothesTypes){
+                ApiClothesTypeListVo vo = new ApiClothesTypeListVo();
+                vo.setId(clothesType.getId());
+                vo.setName(clothesType.getName());
+                vo.setImage(clothesType.getImage());
+                vo.setContent(clothesType.getContent());
+                vo.setOrderNum(clothesType.getOrderNum());
+                vos.add( vo);
+            }
+        }
+
+        return new FebsResponse().success().data(vos);
+    }
+
+    @Override
+    public FebsResponse typeInfo(ApiTypeInfoDto dto) {
+        ApiClothesTypeVo apiClothesTypeVo = new ApiClothesTypeVo();
+
+        Long id = dto.getId();
+        ClothesType clothesType = clothesTypeMapper.selectById(id);
+        if (ObjectUtil.isNotEmpty(clothesType)){
+            apiClothesTypeVo.setId(clothesType.getId());
+            apiClothesTypeVo.setName(clothesType.getName());
+            apiClothesTypeVo.setImage(clothesType.getImage());
+            apiClothesTypeVo.setImageFront(clothesType.getImageFront());
+            apiClothesTypeVo.setImageBack(clothesType.getImageBack());
+            apiClothesTypeVo.setContent(clothesType.getContent());
+            apiClothesTypeVo.setClothState(clothesType.getClothState());
+            apiClothesTypeVo.setArtState(clothesType.getArtState());
+            apiClothesTypeVo.setPatternState(clothesType.getPatternState());
+            apiClothesTypeVo.setLocationState(clothesType.getLocationState());
+            apiClothesTypeVo.setSizeState(clothesType.getSizeState());
+        }
+
+        return new FebsResponse().success().data(apiClothesTypeVo);
+    }
+
+    @Override
+    public FebsResponse clothList(ApiClothesClothPageDto dto) {
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiClothesClothVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        // 调用Mapper方法获取活动分页数据
+        Page<ApiClothesClothVo> voPage = clothesTypeClothMapper.selectPageInCloth(page, dto);
+
+        return new FebsResponse().success().data(voPage);
+    }
+
+    @Override
+    public FebsResponse patternList(ApiClothesPatternPageDto dto) {
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiClothesPatternVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        // 调用Mapper方法获取活动分页数据
+        Page<ApiClothesPatternVo> voPage = clothesTypePatternMapper.selectPageInPattern(page, dto);
+
+        return new FebsResponse().success().data(voPage);
+    }
+
+    @Override
+    public FebsResponse sizeList(ApiClothesSizeDto dto) {
+        List<ApiClothesSizeVo> vos = new ArrayList<>();
+
+        Long typeId = dto.getTypeId();
+        List<ClothesTypeSize> clothesTypeSizes = clothesTypeSizeMapper.selectList(
+                Wrappers.lambdaQuery(ClothesTypeSize.class)
+                        .eq(ClothesTypeSize::getTypeId, typeId)
+        );
+        if (CollUtil.isNotEmpty(clothesTypeSizes)){
+
+            Set<Long> collect = clothesTypeSizes.stream().map(ClothesTypeSize::getSizeId).collect(Collectors.toSet());
+            List<ClothesSize> clothesSizes = clothesSizeMapper.selectList(
+                    Wrappers.lambdaQuery(ClothesSize.class)
+                            .in(ClothesSize::getId, collect)
+
+            );
+
+            if (CollUtil.isNotEmpty(clothesSizes)){
+                for (ClothesSize clothesSize : clothesSizes){
+                    ApiClothesSizeVo vo = new ApiClothesSizeVo();
+                    vo.setId(clothesSize.getId());
+                    vo.setCode(clothesSize.getCode());
+                    vo.setName(clothesSize.getName());
+                    vo.setImage(clothesSize.getImage());
+                    vo.setContent(clothesSize.getContent());
+                    vo.setPrice(clothesSize.getPrice());
+                    vo.setType(clothesSize.getType());
+                    vos.add(vo);
+                }
+            }
+        }
+
+        return new FebsResponse().success().data(vos);
+    }
+
+    @Override
+    public FebsResponse locationList(ApiClothesLocationPageDto dto) {
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiClothesLocationVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        // 调用Mapper方法获取活动分页数据
+        Page<ApiClothesLocationVo> voPage = clothesTypeLocationMapper.selectPageInLocation(page, dto);
+
+        return new FebsResponse().success().data(voPage);
+    }
+
+    @Override
+    public FebsResponse artList(ApiClothesArtPageDto dto) {
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiClothesArtVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        // 调用Mapper方法获取活动分页数据
+        Page<ApiClothesArtVo> voPage = clothesTypeArtMapper.selectPageInArt(page, dto);
+
+        return new FebsResponse().success().data(voPage);
+    }
+
+    @Override
+    public FebsResponse statureList(ApiClothesMemberStatureDto dto) {
+
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        dto.setMemberId(memberId);
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiClothesMemberStatureVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        // 调用Mapper方法获取活动分页数据
+        Page<ApiClothesMemberStatureVo> voPage = clothesMemberStatureMapper.selectPageInMemberStature(page, dto);
+
+        return new FebsResponse().success().data(voPage);
+    }
+
+    @Override
+    public FebsResponse statureAdd(ApiClothesMemberStatureAddDto dto) {
+
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        ClothesMemberStature clothesMemberStature = new ClothesMemberStature();
+        clothesMemberStature.setMemberId(memberId);
+        clothesMemberStature.setName(dto.getName());
+        clothesMemberStature.setHeightLine(dto.getHeightLine());
+        clothesMemberStature.setBustLine(dto.getBustLine());
+        clothesMemberStature.setWaistLine(dto.getWaistLine());
+        clothesMemberStature.setWideLine(dto.getWideLine());
+        clothesMemberStature.setHipLine(dto.getHipLine());
+        clothesMemberStature.setState(dto.getState());
+        clothesMemberStatureMapper.insert(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 statureInfo(ApiClothesMemberStatureInfoDto dto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        ApiClothesMemberStatureVo apiClothesMemberStatureVo = new ApiClothesMemberStatureVo();
+        ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(dto.getId());
+        if (ObjectUtil.isNotEmpty(clothesMemberStature)){
+            apiClothesMemberStatureVo.setId(clothesMemberStature.getId());
+            apiClothesMemberStatureVo.setName(clothesMemberStature.getName());
+            apiClothesMemberStatureVo.setHeightLine(clothesMemberStature.getHeightLine());
+            apiClothesMemberStatureVo.setBustLine(clothesMemberStature.getBustLine());
+            apiClothesMemberStatureVo.setWaistLine(clothesMemberStature.getWaistLine());
+            apiClothesMemberStatureVo.setWideLine(clothesMemberStature.getWideLine());
+            apiClothesMemberStatureVo.setHipLine(clothesMemberStature.getHipLine());
+            apiClothesMemberStatureVo.setState(clothesMemberStature.getState());
+        }
+
+        return new FebsResponse().success().data(apiClothesMemberStatureVo);
+    }
+
+    @Override
+    public FebsResponse statureUpdate(ApiClothesMemberStatureUpdateDto dto) {
+
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(dto.getId());
+        if (ObjectUtil.isNotEmpty(clothesMemberStature)){
+            clothesMemberStature.setName(dto.getName());
+            clothesMemberStature.setHeightLine(dto.getHeightLine());
+            clothesMemberStature.setBustLine(dto.getBustLine());
+            clothesMemberStature.setWaistLine(dto.getWaistLine());
+            clothesMemberStature.setWideLine(dto.getWideLine());
+            clothesMemberStature.setHipLine(dto.getHipLine());
+            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.delete(
+                Wrappers.lambdaUpdate(ClothesMemberStature.class)
+                        .eq(ClothesMemberStature::getId, dto.getId())
+                        .eq(ClothesMemberStature::getMemberId, memberId)
+                        .eq(ClothesMemberStature::getDelFlag, ClothesEnum.DOWN.getCode())
+        );
+
+        return new FebsResponse().success().message("操作成功");
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesArtVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesArtVo.java
new file mode 100644
index 0000000..d3957de
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesArtVo.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesArtVo", description = "参数")
+public class ApiClothesArtVo {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "小图标")
+    private String image;
+
+    @ApiModelProperty(value = "简介")
+    private String content;
+
+    @ApiModelProperty(value = "价格")
+    private BigDecimal price;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesClothVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesClothVo.java
new file mode 100644
index 0000000..a88ac51
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesClothVo.java
@@ -0,0 +1,32 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesClothVo", description = "参数")
+public class ApiClothesClothVo {
+
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "小图标")
+    private String image;
+
+    @ApiModelProperty(value = "简介")
+    private String content;
+
+    @ApiModelProperty(value = "价格")
+    private BigDecimal price;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationVo.java
new file mode 100644
index 0000000..e614162
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationVo.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesLocationVo", description = "参数")
+public class ApiClothesLocationVo {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "小图标")
+    private String image;
+
+    @ApiModelProperty(value = "简介")
+    private String content;
+
+    @ApiModelProperty(value = "价格")
+    private BigDecimal price;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesMemberStatureVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesMemberStatureVo.java
new file mode 100644
index 0000000..31a3f7d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesMemberStatureVo.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesMemberStatureVo", description = "参数")
+public class ApiClothesMemberStatureVo {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+    @ApiModelProperty(value = "昵称")
+    private String name;
+    @ApiModelProperty(value = "身高")
+    private BigDecimal heightLine;
+    @ApiModelProperty(value = "胸围")
+    private BigDecimal bustLine;
+    @ApiModelProperty(value = "腰围")
+    private BigDecimal waistLine;
+    @ApiModelProperty(value = "肩宽")
+    private BigDecimal wideLine;
+    @ApiModelProperty(value = "臀围")
+    private BigDecimal hipLine;
+    @ApiModelProperty(value = "是否默认 0-否 1-是")
+    private Integer state;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternVo.java
new file mode 100644
index 0000000..5dc948b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternVo.java
@@ -0,0 +1,35 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesPatternVo", description = "参数")
+public class ApiClothesPatternVo {
+
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "小图标")
+    private String image;
+
+    @ApiModelProperty(value = "简介")
+    private String content;
+
+    @ApiModelProperty(value = "价格")
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "类型 1-仅文字 2-仅图案 3-文字加图案")
+    private Integer type;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSizeVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSizeVo.java
new file mode 100644
index 0000000..9abbf92
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSizeVo.java
@@ -0,0 +1,33 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesSizeVo", description = "参数")
+public class ApiClothesSizeVo {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "小图标")
+    private String image;
+
+    @ApiModelProperty(value = "简介")
+    private String content;
+
+    @ApiModelProperty(value = "价格")
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "尺码类型 1-衣服 2-裤子")
+    private Integer type;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeListVo.java
new file mode 100644
index 0000000..07423ac
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeListVo.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiClothesTypeListVo", description = "参数")
+public class ApiClothesTypeListVo {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+    @ApiModelProperty(value = "名称")
+    private String name;
+    @ApiModelProperty(value = "小图标")
+    private String image;
+    @ApiModelProperty(value = "简介")
+    private String content;
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeVo.java
new file mode 100644
index 0000000..350de6c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeVo.java
@@ -0,0 +1,33 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiClothesTypeVo", description = "参数")
+public class ApiClothesTypeVo {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+    @ApiModelProperty(value = "名称")
+    private String name;
+    @ApiModelProperty(value = "小图标")
+    private String image;
+    @ApiModelProperty(value = "正面")
+    private String imageFront;
+    @ApiModelProperty(value = "反面")
+    private String imageBack;
+    @ApiModelProperty(value = "简介")
+    private String content;
+    @ApiModelProperty(value = "是否允许选择布料 0-否 1-是")
+    private Integer clothState;
+    @ApiModelProperty(value = "是否允许选择工艺 0-否 1-是")
+    private Integer artState;
+    @ApiModelProperty(value = "是否允许选择图案 0-否 1-是")
+    private Integer patternState;
+    @ApiModelProperty(value = "是否允许选择图案位置 0-否 1-是")
+    private Integer locationState;
+    @ApiModelProperty(value = "是否允许自定义尺码 0-否 1-是")
+    private Integer sizeState;
+}
diff --git a/src/main/resources/mapper/modules/ClothesMemberStatureMapper.xml b/src/main/resources/mapper/modules/ClothesMemberStatureMapper.xml
new file mode 100644
index 0000000..38b76a1
--- /dev/null
+++ b/src/main/resources/mapper/modules/ClothesMemberStatureMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.ClothesMemberStatureMapper">
+
+    <select id="selectPageInMemberStature" resultType="cc.mrbird.febs.mall.vo.clothes.ApiClothesMemberStatureVo">
+        select
+            a.*
+        from clothes_member_stature a
+        <where>
+            and a.member_id = #{record.memberId}
+            and a.del_flag = 0
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    a.name like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    )
+                </if>
+            </if>
+        </where>
+        order by a.CREATED_TIME desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/ClothesTypeArtMapper.xml b/src/main/resources/mapper/modules/ClothesTypeArtMapper.xml
index 5db7fe3..a7ca91b 100644
--- a/src/main/resources/mapper/modules/ClothesTypeArtMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesTypeArtMapper.xml
@@ -2,4 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.mall.mapper.ClothesTypeArtMapper">
 
+    <select id="selectPageInArt" resultType="cc.mrbird.febs.mall.vo.clothes.ApiClothesArtVo">
+        select
+        b.id as id,
+        b.code as code,
+        b.name as name,
+        b.image as image,
+        b.content as content,
+        b.price as price
+        from clothes_type_art a
+        left join clothes_art b on a.art_id = b.id
+        <where>
+            and a.type_id = #{record.typeId}
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    b.name like CONCAT('%', CONCAT(#{record.query}, '%')) or
+                    b.code like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    )
+                </if>
+            </if>
+        </where>
+        order by b.order_num asc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/ClothesTypeClothMapper.xml b/src/main/resources/mapper/modules/ClothesTypeClothMapper.xml
index 3be2cb7..88da297 100644
--- a/src/main/resources/mapper/modules/ClothesTypeClothMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesTypeClothMapper.xml
@@ -2,4 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.mall.mapper.ClothesTypeClothMapper">
 
+    <select id="selectPageInCloth" resultType="cc.mrbird.febs.mall.vo.clothes.ApiClothesClothVo">
+        select
+            b.id as id,
+            b.code as code,
+            b.name as name,
+            b.image as image,
+            b.content as content,
+            b.price as price
+        from clothes_type_cloth a
+        left join clothes_cloth b on a.cloth_id = b.id
+        <where>
+            and a.type_id = #{record.typeId}
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    b.name like CONCAT('%', CONCAT(#{record.query}, '%')) or
+                    b.code like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    )
+                </if>
+            </if>
+        </where>
+            order by b.order_num asc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/ClothesTypeLocationMapper.xml b/src/main/resources/mapper/modules/ClothesTypeLocationMapper.xml
index 2aa61c7..4316b5e 100644
--- a/src/main/resources/mapper/modules/ClothesTypeLocationMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesTypeLocationMapper.xml
@@ -2,4 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.mall.mapper.ClothesTypeLocationMapper">
 
+    <select id="selectPageInLocation" resultType="cc.mrbird.febs.mall.vo.clothes.ApiClothesLocationVo">
+        select
+        b.id as id,
+        b.code as code,
+        b.name as name,
+        b.image as image,
+        b.content as content,
+        b.price as price
+        from clothes_type_location a
+        left join clothes_location b on a.location_id = b.id
+        <where>
+            and a.type_id = #{record.typeId}
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    b.name like CONCAT('%', CONCAT(#{record.query}, '%')) or
+                    b.code like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    )
+                </if>
+            </if>
+        </where>
+        order by b.order_num asc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/ClothesTypePatternMapper.xml b/src/main/resources/mapper/modules/ClothesTypePatternMapper.xml
index 5fadbef..b580905 100644
--- a/src/main/resources/mapper/modules/ClothesTypePatternMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesTypePatternMapper.xml
@@ -2,4 +2,30 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.mall.mapper.ClothesTypePatternMapper">
 
+
+    <select id="selectPageInPattern" resultType="cc.mrbird.febs.mall.vo.clothes.ApiClothesPatternVo">
+        select
+        b.id as id,
+        b.code as code,
+        b.name as name,
+        b.image as image,
+        b.content as content,
+        b.type as type,
+        b.price as price
+        from clothes_type_pattern a
+        left join clothes_pattern b on a.pattern_id = b.id
+        <where>
+            and a.type_id = #{record.typeId}
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    b.name like CONCAT('%', CONCAT(#{record.query}, '%')) or
+                    b.code like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    )
+                </if>
+            </if>
+        </where>
+        order by b.order_num asc
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1