From b87ecf6fd610387e230d81bf5f6907c413142d70 Mon Sep 17 00:00:00 2001 From: sjm <1191068887@qq.com> Date: Thu, 12 Oct 2023 17:10:05 +0800 Subject: [PATCH] =?UTF-8?q?sku=E5=BA=93=E5=AD=98=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cyl/h5/pojo/vo/SkuViewDTO.java | 26 ++++++----- .../java/com/cyl/manager/pms/domain/Sku.java | 4 ++ .../com/cyl/manager/pms/pojo/vo/SkuVO.java | 2 + .../manager/pms/service/ProductService.java | 46 +++++++++++++++++-- sql/数据和结构.sql | 2 + 5 files changed, 65 insertions(+), 15 deletions(-) diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java index 95eff74..4466ead 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java @@ -15,16 +15,18 @@ import java.math.BigDecimal; @Data @ApiModel(value = "sku渲染详情") public class SkuViewDTO { - private Long productId; - private Long skuId; - @ApiModelProperty(value = "商品名称") - private String productName; - @ApiModelProperty(value = "销售属性") - private String spData; - @ApiModelProperty(value = "购买数量") - private Integer quantity; - @ApiModelProperty(value = "主图") - private String pic; - @ApiModelProperty(value = "售价") - private BigDecimal price; + private Long productId; + private Long skuId; + @ApiModelProperty(value = "商品名称") + private String productName; + @ApiModelProperty(value = "销售属性") + private String spData; + @ApiModelProperty(value = "购买数量") + private Integer quantity; + @ApiModelProperty(value = "主图") + private String pic; + @ApiModelProperty(value = "售价") + private BigDecimal price; + @ApiModelProperty(value = "库存数") + private Integer stock; } \ No newline at end of file diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java index 0047865..0c552d5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java @@ -41,4 +41,8 @@ public class Sku extends BaseAudit { @Excel(name = "商品销售属性,json格式") private String spData; + @ApiModelProperty("库存数") + @Excel(name = "库存数") + private Integer stock; + } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java index 30ff119..86d8a75 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java @@ -28,4 +28,6 @@ public class SkuVO extends BaseAudit { /** 商品销售属性,json格式 */ @Excel(name = "商品销售属性,json格式") private String spData; + @Excel(name = "库存数") + private Integer stock; } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java index b47ba19..e2e3743 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java @@ -2,7 +2,10 @@ package com.cyl.manager.pms.service; import java.util.*; import java.time.LocalDateTime; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.cyl.h5.pojo.vo.ProductDetail; @@ -12,6 +15,8 @@ import com.cyl.manager.pms.mapper.BrandMapper; import com.cyl.manager.pms.mapper.SkuMapper; import com.cyl.manager.pms.pojo.vo.ProductVO; import com.github.pagehelper.PageHelper; +import com.ruoyi.common.utils.SecurityUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; @@ -28,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; * @author zcc */ @Service +@Slf4j public class ProductService { @Autowired private ProductMapper productMapper; @@ -123,19 +129,53 @@ public class ProductService { */ @Transactional public int update(ProductVO productVO) { + Product dbProduct = productMapper.selectById(productVO.getId()); + List idList = productVO.getSkuList().stream().filter(it -> it.getId() != null).map(it -> it.getId()).collect(Collectors.toList()); + if (dbProduct == null) { + return 0; + } + Long userId = SecurityUtils.getUserId(); Product product = convert.vo2do(productVO); List skuList = productVO.getSkuList(); + product.setUpdateBy(userId); + product.setUpdateTime(LocalDateTime.now()); productMapper.updateById(product); + //查找库中所有的sku Map map = new HashMap<>(); map.put("product_id", product.getId()); - skuMapper.deleteByMap(map); - if(skuList!=null){ - skuList.forEach(sku -> { + Map skuMap = skuMapper.selectByMap(map).stream().collect(Collectors.toMap(it -> it.getId(), it -> it)); + //针对已有的进行编辑 + List updateList = productVO.getSkuList().stream().filter(it -> it.getId() != null).collect(Collectors.toList()); + if (!CollectionUtil.isEmpty(updateList)) { + log.info("共有{}个sku需要修改,{},productId:{}",updateList.size(), JSONUtil.toJsonStr(updateList),productVO.getId()); + updateList.forEach(it->{ + Sku sku = skuMap.get(it.getId()); + sku.setUpdateBy(SecurityUtils.getUserId()); + sku.setUpdateTime(LocalDateTime.now()); + sku.setPrice(it.getPrice()); + sku.setSpData(it.getSpData()); + sku.setPic(it.getPic()); + sku.setOutSkuId(it.getOutSkuId()); + sku.setStock(it.getStock()); + skuMapper.updateById(sku); + }); + } + //针对没有的进行新增 + List addList = productVO.getSkuList().stream().filter(it -> it.getId() == null).collect(Collectors.toList()); + if (!CollectionUtil.isEmpty(addList)) { + log.info("共有{}个sku需要新增,{},productId:{}",addList.size(), JSONUtil.toJsonStr(addList),productVO.getId()); + addList.forEach(sku -> { sku.setProductId(product.getId()); sku.setCreateTime(LocalDateTime.now()); skuMapper.insert(sku); }); } + //删除 + List deleteIds = skuMap.keySet().stream().filter(it -> !idList.contains(it)).collect(Collectors.toList()); + if (!CollectionUtil.isEmpty(deleteIds)) { + log.info("共有{}个sku需要删除,{},productId:{}",deleteIds.size(), JSONUtil.toJsonStr(deleteIds),productVO.getId()); + skuMapper.deleteBatchIds(deleteIds); + } return 1; } diff --git a/sql/数据和结构.sql b/sql/数据和结构.sql index ee3fa1c..86d27bf 100644 --- a/sql/数据和结构.sql +++ b/sql/数据和结构.sql @@ -16950,6 +16950,8 @@ CREATE TABLE `pms_sku` ( PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 399 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sku信息' ROW_FORMAT = Dynamic; +ALTER TABLE `pms_sku` + ADD COLUMN `stock` int(11) NULL COMMENT '库存' AFTER `pic`; -- ---------------------------- -- Table structure for pms_sku_snapshot -- ----------------------------