From 85cca29ca5b9ed2acba759dde2caf270ac2b9ddf Mon Sep 17 00:00:00 2001 From: Saisai Liu <1374434128@qq.com> Date: Sat, 23 Mar 2024 09:50:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=A8=A1=E5=9D=97=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/product/domain/AttributeProduct.java | 58 ++-------- .../com/muyu/product/domain/ProductInfo.java | 75 ++++++++++--- .../com/muyu/product/domain/RuleProduct.java | 15 ++- .../domain/req/ProductInfoSaveReq.java | 2 +- .../product/domain/resp/ProductInfoResp.java | 24 ++++ .../controller/ProductInfoController.java | 10 +- .../product/service/IProductInfoService.java | 7 +- .../service/impl/ProductInfoServiceImpl.java | 105 ++++++++++++++---- 8 files changed, 198 insertions(+), 98 deletions(-) create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProductInfoResp.java diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeProduct.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeProduct.java index f5e11b2..9028fb0 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeProduct.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeProduct.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.model.AttrValueModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -11,6 +12,8 @@ import lombok.experimental.SuperBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.function.Supplier; + /** * 商品属性中间表对象 attribute_product * @@ -41,55 +44,12 @@ public class AttributeProduct extends BaseEntity @Excel(name = "属性值") private String value; - public void setId(Long id) - { - this.id = id; + public static AttributeProduct attrValueModelBuild(AttrValueModel attrValueModel, Supplier productId) { + return AttributeProduct.builder() + .attributeId(attrValueModel.getId()) + .productId(productId.get()) + .value(attrValueModel.getValue()) + .build(); } - public Long getId() - { - return id; - } - public void setProductId(Long productId) - { - this.productId = productId; - } - - public Long getProductId() - { - return productId; - } - public void setAttributeId(Long attributeId) - { - this.attributeId = attributeId; - } - - public Long getAttributeId() - { - return attributeId; - } - public void setValue(String value) - { - this.value = value; - } - - public String getValue() - { - return value; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("productId", getProductId()) - .append("attributeId", getAttributeId()) - .append("value", getValue()) - .append("remark", getRemark()) - .append("createBy", SecurityUtils.getUsername()) - .append("createTime", getCreateTime()) - .append("updateBy", SecurityUtils.getUsername()) - .append("updateTime", getUpdateTime()) - .toString(); - } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProductInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProductInfo.java index bac94f1..b2cee2f 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProductInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProductInfo.java @@ -2,16 +2,15 @@ package com.muyu.product.domain; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; -import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.model.ProductAddModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import java.util.Date; +import java.util.function.Supplier; /** * 商品;对象 product_info @@ -24,45 +23,89 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = true) -public class ProductInfo extends BaseEntity -{ +public class ProductInfo extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键 */ + /** + * 主键 + */ private Long id; - /** 商品名 */ + /** + * 商品名 + */ @Excel(name = "商品名") private String name; - /** 商品信息 */ + /** + * 商品信息 + */ @Excel(name = "商品信息") private String introduction; - /** 品牌编号 */ + /** + * 品牌编号 + */ @Excel(name = "品牌编号") private Long brandId; - /** 图片 */ + /** + * 图片 + */ @Excel(name = "图片") private String images; - /** 发货地 */ + /** + * 发货地 + */ @Excel(name = "轮播图") private String slideshow; - /** 商品状态 */ - @Excel(name = "商品状态") private String status; - /** 创建人 */ + /** + * 创建人 + */ private String createdBy; - /** 创建时间 */ + /** + * 创建时间 + */ private Date createdTime; + private Date updatedTime; - /** 更新人 */ + /** + * 更新人 + */ private String updatedBy; + public static ProductInfo saveModelBuild(ProductAddModel productAddModel, Supplier createBy) { + return ProductInfo.builder() + .id(productAddModel.getId()) + .name(productAddModel.getName()) + .status(productAddModel.getStatus()) + .images(productAddModel.getImages()) + .brandId(productAddModel.getBrandId()) + .slideshow(productAddModel.getSlideshow()) + .introduction(productAddModel.getIntroduction()) + .createdBy(createBy.get()) + .createdTime(new Date()) + .build(); + } + + public static ProductInfo updateBuilder(ProductAddModel model, Supplier username) { + return ProductInfo.builder() + .id(model.getId()) + .name(model.getName()) + .status(model.getStatus()) + .images(model.getImages()) + .brandId(model.getBrandId()) + .slideshow(model.getSlideshow()) + .introduction(model.getIntroduction()) + .updatedBy(username.get()) + .updatedTime(new Date()) + .build(); + + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java index 2c66ada..72af7c3 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.model.ProductSkuModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -12,6 +13,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import java.math.BigDecimal; +import java.util.function.Supplier; /** * 规格商品中间对象 rule_product @@ -39,10 +41,15 @@ public class RuleProduct extends BaseEntity @Excel(name = "规格编号") private String sku; - /** 规格值 */ - @Excel(name = "规格值") - private String ruleValue; - private Integer stock; + private Long stock; private BigDecimal price; + public static RuleProduct productSkuModelBuild(ProductSkuModel productSkuModel, Supplier productId) { + return RuleProduct.builder() + .productId(productId.get()) + .sku(productSkuModel.getSku()) + .stock(productSkuModel.getStock()) + .price(productSkuModel.getPrice()) + .build(); + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProductInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProductInfoSaveReq.java index ca4bbce..2052e10 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProductInfoSaveReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/ProductInfoSaveReq.java @@ -30,5 +30,5 @@ public class ProductInfoSaveReq extends BaseEntity { private List attrValueList; - private List productList; + private List productSkuModelList; } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProductInfoResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProductInfoResp.java new file mode 100644 index 0000000..e550686 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProductInfoResp.java @@ -0,0 +1,24 @@ +package com.muyu.product.domain.resp; + +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @ClassName ProductInfoResp + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/3/23/0023 9:47 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class ProductInfoResp extends BaseEntity { + private Long id; + +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductInfoController.java index d07e74a..a34880f 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductInfoController.java @@ -3,6 +3,8 @@ package com.muyu.product.controller; import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; + +import com.muyu.product.domain.req.ProductInfoSaveReq; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -76,9 +78,9 @@ public class ProductInfoController extends BaseController @RequiresPermissions("product:product_info:add") @Log(title = "商品;", businessType = BusinessType.INSERT) @PostMapping - public Result add(@RequestBody ProductInfo productInfo) + public Result add(@RequestBody ProductInfoSaveReq productInfoSaveReq) { - return toAjax(productInfoService.insertProductInfo(productInfo)); + return toAjax(productInfoService.save(productInfoSaveReq)); } /** @@ -87,9 +89,9 @@ public class ProductInfoController extends BaseController @RequiresPermissions("product:product_info:edit") @Log(title = "商品;", businessType = BusinessType.UPDATE) @PutMapping - public Result edit(@RequestBody ProductInfo productInfo) + public Result edit(@RequestBody ProductInfoSaveReq productInfoSaveReq) { - return toAjax(productInfoService.updateProductInfo(productInfo)); + return toAjax(productInfoService.updateProductInfo(productInfoSaveReq)); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IProductInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IProductInfoService.java index 315d580..45b2a77 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IProductInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IProductInfoService.java @@ -5,6 +5,7 @@ import java.util.List; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.product.domain.Address; import com.muyu.product.domain.ProductInfo; +import com.muyu.product.domain.req.ProductInfoSaveReq; /** * 商品;Service接口 @@ -41,10 +42,10 @@ public interface IProductInfoService extends IService /** * 修改商品; * - * @param productInfo 商品; + * @param productInfoSaveReq 商品; * @return 结果 */ - int updateProductInfo(ProductInfo productInfo); + int updateProductInfo(ProductInfoSaveReq productInfoSaveReq); /** * 批量删除商品; @@ -61,4 +62,6 @@ public interface IProductInfoService extends IService * @return 结果 */ int deleteProductInfoById(Long id); + + boolean save(ProductInfoSaveReq productInfoSaveReq); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductInfoServiceImpl.java index 3c91314..b7a2bf7 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductInfoServiceImpl.java @@ -1,14 +1,24 @@ package com.muyu.product.service.impl; -import java.util.List; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.AttributeProduct; +import com.muyu.product.domain.ProductInfo; +import com.muyu.product.domain.RuleProduct; +import com.muyu.product.domain.model.AttrValueModel; +import com.muyu.product.domain.model.ProductAddModel; +import com.muyu.product.domain.model.ProductSkuModel; +import com.muyu.product.domain.req.ProductInfoSaveReq; +import com.muyu.product.mapper.ProductInfoMapper; +import com.muyu.product.service.IAttributeProductService; +import com.muyu.product.service.IProductInfoService; +import com.muyu.product.service.IRuleProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.muyu.product.mapper.ProductInfoMapper; -import com.muyu.product.domain.ProductInfo; -import com.muyu.product.service.IProductInfoService; + +import java.util.List; /** * 商品;Service业务层处理 @@ -17,11 +27,16 @@ import com.muyu.product.service.IProductInfoService; * @date 2024-02-29 */ @Service -public class ProductInfoServiceImpl extends ServiceImpl implements IProductInfoService -{ +public class ProductInfoServiceImpl extends ServiceImpl implements IProductInfoService { @Autowired private ProductInfoMapper productInfoMapper; + @Autowired + private IAttributeProductService attributeProductService; + @Autowired + private IRuleProductService ruleProductService; + + /** * 查询商品; * @@ -29,8 +44,8 @@ public class ProductInfoServiceImpl extends ServiceImpl selectProductInfoList(ProductInfo productInfo) - { + public List selectProductInfoList(ProductInfo productInfo) { return productInfoMapper.selectProductInfoList(productInfo); } @@ -53,22 +67,55 @@ public class ProductInfoServiceImpl extends ServiceImpl 0) { + //删除原数据 + LambdaQueryWrapper eq = new LambdaQueryWrapper().eq(AttributeProduct::getProductId, productInfo.getId()); + attributeProductService.remove(eq); + LambdaQueryWrapper ruleEq = new LambdaQueryWrapper().eq(RuleProduct::getProductId, productInfo.getId()); + ruleProductService.remove(ruleEq); + //添加新数据 + this.add(productInfoSaveReq, productInfo); + } + return i; + } + + /** + * 封装添加其他表数据方法 + * @param productInfoSaveReq + * @param productInfo + */ + public void add(ProductInfoSaveReq productInfoSaveReq, ProductInfo productInfo) { + List attrValueList = productInfoSaveReq.getAttrValueList(); + List attrProduct = attrValueList.stream() + .map(attrValueModel -> AttributeProduct.attrValueModelBuild(attrValueModel, productInfo::getId)) + .toList(); + if (!attrProduct.isEmpty()) { + attributeProductService.saveBatch(attrProduct); + } + // sku ProductSkuModel -》 ProductSkuInfo + List productSkuModelList = productInfoSaveReq.getProductSkuModelList(); + List productSkuInfoList = productSkuModelList.stream().map( + productSkuModel -> RuleProduct.productSkuModelBuild(productSkuModel, productInfo::getId) + ).toList(); + if (!productSkuInfoList.isEmpty()) { + ruleProductService.saveBatch(productSkuInfoList); + } } /** @@ -78,8 +125,7 @@ public class ProductInfoServiceImpl extends ServiceImpl