From 484b5604bd217742145790d7a95ea08357e68713 Mon Sep 17 00:00:00 2001 From: yuanjunzhe <1374457292@qq.com> Date: Sat, 23 Mar 2024 09:01:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AsProductAttributeInfo.java | 10 +++ .../com/muyu/product/domain/ProjectInfo.java | 29 +++++--- .../muyu/product/domain/ProjectSkuInfo.java | 17 +++++ .../product/domain/model/AttrValueModel.java | 36 ++++++++++ .../product/domain/model/ProductSkuModel.java | 46 ++++++++++++ .../product/domain/model/ProjectAddModel.java | 69 ++++++++++++++++++ .../domain/req/ProjectInfoSaveReq.java | 70 +++++-------------- .../controller/ProjectInfoController.java | 2 +- .../product/service/ProjectInfoService.java | 4 ++ .../service/impl/ProjectInfoServiceImpl.java | 41 +++++++++++ 10 files changed, 259 insertions(+), 65 deletions(-) create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java index 49f25a8..a66e55e 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java @@ -1,10 +1,13 @@ package com.muyu.product.domain; import java.util.Date; +import java.util.function.Supplier; + import com.fasterxml.jackson.annotation.JsonFormat; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.model.AttrValueModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -51,4 +54,11 @@ public class AsProductAttributeInfo extends BaseEntity { @ApiModelProperty(name = "属性值", value = "属性值", required = true) private String value; + public static AsProductAttributeInfo attrValueModelBuild(AttrValueModel attrValueModel, Supplier projectId) { + return AsProductAttributeInfo.builder() + .productId(projectId.get()) + .attributeId(attrValueModel.getId()) + .value(attrValueModel.getValue()) + .build(); + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java index 2688652..6296d83 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.model.ProjectAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -15,6 +16,9 @@ import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.req.ProjectInfoEditReq; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.Date; +import java.util.function.Supplier; + /** * 商品信息对象 project_info * @@ -108,18 +112,20 @@ public class ProjectInfo extends BaseEntity { /** * 添加构造器 */ - public static ProjectInfo saveBuild(ProjectInfoSaveReq projectInfoSaveReq){ + public static ProjectInfo saveModelBuild(ProjectAddModel projectAddModel,Supplier createBy){ return ProjectInfo.builder() - .name(projectInfoSaveReq.getName()) - .introduction(projectInfoSaveReq.getIntroduction()) - .mianType(projectInfoSaveReq.getMianType()) - .parentType(projectInfoSaveReq.getParentType()) - .type(projectInfoSaveReq.getType()) - .image(projectInfoSaveReq.getImage()) - .carouselImages(projectInfoSaveReq.getCarouselImages()) - .status(projectInfoSaveReq.getStatus()) - .ruleId(projectInfoSaveReq.getRuleId()) - .brandId(projectInfoSaveReq.getBrandId()) + .name(projectAddModel.getName()) + .introduction(projectAddModel.getIntroduction()) + .mianType(projectAddModel.getMianType()) + .parentType(projectAddModel.getParentType()) + .type(projectAddModel.getType()) + .image(projectAddModel.getImage()) + .carouselImages(projectAddModel.getCarouselImages()) + .status(projectAddModel.getStatus()) + .ruleId(projectAddModel.getRuleId()) + .brandId(projectAddModel.getBrandId()) + .createBy(createBy.get()) + .createTime(new Date()) .build(); } @@ -142,4 +148,5 @@ public class ProjectInfo extends BaseEntity { .build(); } + } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java index 3ea0dcb..2a95ed9 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java @@ -1,9 +1,12 @@ package com.muyu.product.domain; import java.math.BigDecimal; +import java.util.function.Supplier; + import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.model.ProductSkuModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -103,4 +106,18 @@ public class ProjectSkuInfo extends BaseEntity { .build(); } + public static ProjectSkuInfo projectSkuModelBuild(ProductSkuModel productSkuModel, Supplier projectId){ + return ProjectSkuInfo.builder() + .projectId(projectId.get()) + .sku(productSkuModel.getSku()) + .image(productSkuModel.getImage()) + .stock(productSkuModel.getStock()) + .price(productSkuModel.getPrice()) + .build(); + } + + + + + } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java new file mode 100644 index 0000000..04c8bbd --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java @@ -0,0 +1,36 @@ +package com.muyu.product.domain.model;/** + * @Author:yjz + * @Package:com.muyu.product.domain.model + * @Project:cloud_service + * @name:AttrValueModel + * @Date:2024/3/22 16:11 + */ + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *@ClassName AttrValueModel + *@Description 描述 + *@Author JunZhe.Yuan + *@Date 2024/3/22 16:11 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AttrValueModel { + + /** + * ID + */ + private Long id; + + /** + * 值 + */ + private String value; + +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java new file mode 100644 index 0000000..46ad147 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java @@ -0,0 +1,46 @@ +package com.muyu.product.domain.model;/** + * @Author:yjz + * @Package:com.muyu.product.domain.model + * @Project:cloud_service + * @name:ProductSkuModel + * @Date:2024/3/22 16:10 + */ + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + *@ClassName ProductSkuModel + *@Description 描述 + *@Author JunZhe.Yuan + *@Date 2024/3/22 16:10 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ProductSkuModel { + + /** sku */ + @ApiModelProperty(name = "sku", value = "sku", required = true) + private String sku; + + /** 商品库存 */ + @ApiModelProperty(name = "商品库存", value = "商品库存", required = true) + private Long stock; + + /** 商品价格 */ + @ApiModelProperty(name = "商品价格", value = "商品价格", required = true) + private BigDecimal price; + + /** 规格图片 */ + @ApiModelProperty(name = "规格图片", value = "规格图片", required = true) + private String image; + + +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java new file mode 100644 index 0000000..387ef4d --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java @@ -0,0 +1,69 @@ +package com.muyu.product.domain.model;/** + * @Author:yjz + * @Package:com.muyu.product.domain.model + * @Project:cloud_service + * @name:ProjectAddModel + * @Date:2024/3/22 16:21 + */ + +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + *@ClassName ProjectAddModel + *@Description 描述 + *@Author JunZhe.Yuan + *@Date 2024/3/22 16:21 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ProjectAddModel extends BaseEntity { + + /** 商品名称 */ + @ApiModelProperty(name = "商品名称", value = "商品名称") + private String name; + + /** 商品描述 */ + @ApiModelProperty(name = "商品描述", value = "商品描述") + private String introduction; + + /** 主类型 */ + @ApiModelProperty(name = "主类型", value = "主类型") + private String mianType; + + /** 父类型 */ + @ApiModelProperty(name = "父类型", value = "父类型") + private String parentType; + + /** 商品类型 */ + @ApiModelProperty(name = "商品类型", value = "商品类型") + private String type; + + /** 商品图片 */ + @ApiModelProperty(name = "商品图片", value = "商品图片") + private String image; + + /** 商品轮播图 */ + @ApiModelProperty(name = "商品轮播图", value = "商品轮播图") + private String carouselImages; + + /** 商品状态 */ + @ApiModelProperty(name = "商品状态", value = "商品状态") + private String status; + + /** 规格 */ + @ApiModelProperty(name = "规格", value = "规格") + private Long ruleId; + + /** 品牌 */ + @ApiModelProperty(name = "品牌", value = "品牌") + private Long brandId; +} \ No newline at end of file diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java index 8907e6d..e5847b9 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java @@ -1,5 +1,8 @@ package com.muyu.product.domain.req; +import com.muyu.product.domain.model.AttrValueModel; +import com.muyu.product.domain.model.ProductSkuModel; +import com.muyu.product.domain.model.ProjectAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -8,6 +11,8 @@ import lombok.experimental.SuperBuilder; import io.swagger.annotations.*; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.List; + /** * 商品信息对象 project_info * @@ -23,59 +28,18 @@ public class ProjectInfoSaveReq extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键 */ + /** + * 商品添加基本属性 + */ + private ProjectAddModel projectAddModel; - @ApiModelProperty(name = "主键", value = "主键") - private Long id; - - /** 商品名称 */ - - @ApiModelProperty(name = "商品名称", value = "商品名称") - private String name; - - /** 商品描述 */ - - @ApiModelProperty(name = "商品描述", value = "商品描述") - private String introduction; - - /** 主类型 */ - - @ApiModelProperty(name = "主类型", value = "主类型") - private String mianType; - - /** 父类型 */ - - @ApiModelProperty(name = "父类型", value = "父类型") - private String parentType; - - /** 商品类型 */ - - @ApiModelProperty(name = "商品类型", value = "商品类型") - private String type; - - /** 商品图片 */ - - @ApiModelProperty(name = "商品图片", value = "商品图片") - private String image; - - /** 商品轮播图 */ - - @ApiModelProperty(name = "商品轮播图", value = "商品轮播图") - private String carouselImages; - - /** 商品状态 */ - - @ApiModelProperty(name = "商品状态", value = "商品状态") - private String status; - - /** 规格 */ - - @ApiModelProperty(name = "规格", value = "规格") - private Long ruleId; - - /** 品牌 */ - - @ApiModelProperty(name = "品牌", value = "品牌") - private Long brandId; + /** + * 商品属性 + */ + private List attrValueList; + /** + * 商品SKu + */ + private List productSkuList; } diff --git a/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/controller/ProjectInfoController.java b/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/controller/ProjectInfoController.java index 6e6abf2..5fc1feb 100644 --- a/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/controller/ProjectInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/controller/ProjectInfoController.java @@ -78,7 +78,7 @@ public class ProjectInfoController extends BaseController { @PostMapping @ApiOperation("新增商品信息") public Result add(@RequestBody ProjectInfoSaveReq projectInfoSaveReq) { - return toAjax(projectInfoService.save(ProjectInfo.saveBuild(projectInfoSaveReq))); + return toAjax(projectInfoService.save(projectInfoSaveReq)); } /** diff --git a/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/ProjectInfoService.java b/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/ProjectInfoService.java index 8511de2..cef9101 100644 --- a/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/ProjectInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/ProjectInfoService.java @@ -2,6 +2,7 @@ package com.muyu.product.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.product.domain.ProjectInfo; +import com.muyu.product.domain.req.ProjectInfoSaveReq; import java.util.List; @@ -20,4 +21,7 @@ public interface ProjectInfoService extends IService { */ public List list(ProjectInfo projectInfo); + + boolean save(ProjectInfoSaveReq projectInfoSaveReq); + } diff --git a/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java index 2a84567..4a2ebb7 100644 --- a/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-service/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java @@ -3,10 +3,20 @@ package com.muyu.product.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.AsProductAttributeInfo; import com.muyu.product.domain.ProjectInfo; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.domain.model.AttrValueModel; +import com.muyu.product.domain.model.ProductSkuModel; +import com.muyu.product.domain.model.ProjectAddModel; +import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.mapper.ProjectInfoMapper; +import com.muyu.product.service.AsProductAttributeInfoService; import com.muyu.product.service.ProjectInfoService; +import com.muyu.product.service.ProjectSkuInfoService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -21,6 +31,12 @@ import java.util.List; @Service public class ProjectInfoServiceImpl extends ServiceImpl implements ProjectInfoService { + @Autowired + private AsProductAttributeInfoService asProductAttributeInfoService; + + @Autowired + private ProjectSkuInfoService projectSkuInfoService; + /** * 查询商品信息列表 * @@ -78,4 +94,29 @@ public class ProjectInfoServiceImpl extends ServiceImpl attrValueList = projectInfoSaveReq.getAttrValueList(); + List asProductAttributeInfoList = attrValueList.stream() + .map(attrValueModel -> AsProductAttributeInfo.attrValueModelBuild(attrValueModel, projectInfo::getId)) + .toList(); + if (!asProductAttributeInfoList.isEmpty()){ + asProductAttributeInfoService.saveBatch(asProductAttributeInfoList); + } + List productSkuModelList = projectInfoSaveReq.getProductSkuList(); + List projectSkuInfoList = productSkuModelList.stream().map( + productSkuModel -> ProjectSkuInfo.projectSkuModelBuild(productSkuModel, projectInfo::getId) + ).toList(); + if (!projectSkuInfoList.isEmpty()){ + projectSkuInfoService.saveBatch(projectSkuInfoList); + } + } + + return save; + } }