src/main/java/cc/mrbird/febs/common/enumerates/ClothesEnum.java
New file @@ -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; } } src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java
New file @@ -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); } } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesArtPageDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesClothPageDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesLocationPageDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureAddDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureInfoDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesMemberStatureUpdateDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesPatternPageDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesSizeDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiTypeInfoDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/entity/ClothesMemberStature.java
New file @@ -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; } 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 '排序', */ src/main/java/cc/mrbird/febs/mall/mapper/ClothesMemberStatureMapper.java
New file @@ -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); } 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); } 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); } 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); } 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); } src/main/java/cc/mrbird/febs/mall/service/ApiClothesService.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesServiceImpl.java
New file @@ -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("操作成功"); } } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesArtVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesClothVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesMemberStatureVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSizeVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeListVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesTypeVo.java
New file @@ -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; } src/main/resources/mapper/modules/ClothesMemberStatureMapper.xml
New file @@ -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> 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> 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> 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> 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>