diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java b/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java index fa5a527..ddbdbc9 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java +++ b/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java @@ -79,7 +79,7 @@ public class ProductController extends BaseController { @PreAuthorize("@ss.hasPermi('pms:product:edit')") @Log(title = "商品信息", businessType = BusinessType.UPDATE) @PutMapping - public ResponseEntity edit(@RequestBody Product product) { + public ResponseEntity edit(@RequestBody ProductVO product) { return ResponseEntity.ok(service.update(product)); } diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java b/ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java index 5e42cc7..82d04b0 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java +++ b/ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java @@ -65,6 +65,10 @@ public class Product extends BaseAudit { @Excel(name = "商品重量,默认为克") private BigDecimal weight; + @ApiModelProperty("商品销售属性,json格式") + @Excel(name = "商品销售属性,json格式") + private String productAttr; + @ApiModelProperty("产品详情网页内容") @Excel(name = "产品详情网页内容") private String detailHtml; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java b/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java index 5bc534a..cd567e3 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java @@ -1,6 +1,8 @@ package com.cyl.pms.pojo.query; import java.math.BigDecimal; + +import com.ruoyi.common.annotation.Excel; import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -43,6 +45,9 @@ public class ProductQuery { @ApiModelProperty("单位 精确匹配") private String unit; + @ApiModelProperty(name = "商品销售属性,json格式") + private String productAttr; + @ApiModelProperty("商品重量,默认为克 精确匹配") private BigDecimal weight; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java b/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java index e29484a..4cc3501 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java @@ -62,5 +62,7 @@ public class ProductVO extends BaseAudit { /** 商品分类名称 */ @Excel(name = "商品分类名称") private String productCategoryName; + @Excel(name = "商品销售属性,json格式") + private String productAttr; private List skuList; } diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java b/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java index 5b1f7f9..b171d54 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java +++ b/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java @@ -1,10 +1,12 @@ package com.cyl.pms.service; import java.math.BigDecimal; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.cyl.pms.convert.ProductConvert; import com.cyl.pms.domain.Sku; import com.cyl.pms.mapper.SkuMapper; @@ -146,11 +148,26 @@ public class ProductService { /** * 修改商品信息 * - * @param product 商品信息 + * @param productVO 商品信息 * @return 结果 */ - public int update(Product product) { - return productMapper.updateById(product); + @Transactional + public int update(ProductVO productVO) { + Product product = convert.vo2do(productVO); + product.setCreateTime(LocalDateTime.now()); + List skuList = productVO.getSkuList(); + productMapper.updateById(product); + Map map = new HashMap<>(); + map.put("product_id", product.getId()); + skuMapper.deleteByMap(map); + if(skuList!=null){ + skuList.forEach(sku -> { + sku.setProductId(product.getId()); + sku.setCreateTime(LocalDateTime.now()); + skuMapper.insert(sku); + }); + } + return 1; } /** diff --git a/sql/mall_pms结构.sql b/sql/mall_pms结构.sql index a5c22a5..472e199 100644 --- a/sql/mall_pms结构.sql +++ b/sql/mall_pms结构.sql @@ -35,6 +35,7 @@ CREATE TABLE `pms_product` `price` decimal(10, 2) NULL DEFAULT NULL, `unit` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '单位', `weight` decimal(10, 2) NULL DEFAULT NULL COMMENT '商品重量,默认为克', + `product_attr` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品销售属性,json格式', `detail_html` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '产品详情网页内容', `detail_mobile_html` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '移动端网页详情', `brand_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '品牌名称', @@ -105,6 +106,7 @@ CREATE TABLE `pms_product_snapshot` `price` decimal(10, 2) NULL DEFAULT NULL, `unit` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '单位', `weight` decimal(10, 2) NULL DEFAULT NULL COMMENT '商品重量,默认为克', + `product_attr` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品销售属性,json格式', `detail_html` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '产品详情网页内容', `detail_mobile_html` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '移动端网页详情', `brand_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '品牌名称',