Browse Source

trade:【商品】sku 表增加 spu_name 字段,冗余

YunaiV 2 years ago
parent
commit
af71a19241

+ 1 - 1
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/sku/dto/ProductSkuRespDTO.java

@@ -19,7 +19,7 @@ public class ProductSkuRespDTO {
      */
     private Long id;
     /**
-     * 商品 SKU 名字
+     * SPU 名字
      */
     private String name;
     /**

+ 7 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/sku/ProductSkuConvert.java

@@ -32,7 +32,13 @@ public interface ProductSkuConvert {
 
     List<ProductSkuRespVO> convertList(List<ProductSkuDO> list);
 
-    List<ProductSkuDO> convertSkuDOList(List<ProductSkuCreateOrUpdateReqVO> list);
+    List<ProductSkuDO> convertList06(List<ProductSkuCreateOrUpdateReqVO> list);
+
+    default List<ProductSkuDO> convertList06(List<ProductSkuCreateOrUpdateReqVO> list, String spuName) {
+        List<ProductSkuDO> result = convertList06(list);
+        result.forEach(item -> item.setSpuName(spuName));
+        return result;
+    }
 
     ProductSkuRespDTO convert02(ProductSkuDO bean);
 

+ 6 - 5
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/sku/ProductSkuDO.java

@@ -35,17 +35,18 @@ public class ProductSkuDO extends BaseDO {
      */
     @TableId
     private Long id;
-    /**
-     * 商品 SKU 名字
-     */
-    @Deprecated // TODO 芋艿:参考有赞,不需要 sku 的标题
-    private String name;
     /**
      * SPU 编号
      * <p>
      * 关联 {@link ProductSpuDO#getId()}
      */
     private Long spuId;
+    /**
+     * SPU 名字
+     *
+     * 冗余 {@link ProductSkuDO#getSpuName()}
+     */
+    private String spuName;
     /**
      * 规格值数组,JSON 格式
      */

+ 4 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuService.java

@@ -55,17 +55,19 @@ public interface ProductSkuService {
      * 批量创建 SKU
      *
      * @param spuId 商品 SPU 编号
+     * @para spuName 商品 SPU 名称
      * @param list SKU 对象集合
      */
-    void createSkus(Long spuId, List<ProductSkuCreateOrUpdateReqVO> list);
+    void createSkus(Long spuId, String spuName, List<ProductSkuCreateOrUpdateReqVO> list);
 
     /**
      * 根据 SPU 编号,批量更新它的 SKU 信息
      *
      * @param spuId SPU 编码
+     * @para spuName 商品 SPU 名称
      * @param skus SKU 的集合
      */
-    void updateSkus(Long spuId, List<ProductSkuCreateOrUpdateReqVO> skus);
+    void updateSkus(Long spuId, String spuName, List<ProductSkuCreateOrUpdateReqVO> skus);
 
     /**
      * 更新 SKU 库存(增量)

+ 4 - 4
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java

@@ -119,9 +119,9 @@ public class ProductSkuServiceImpl implements ProductSkuService {
     }
 
     @Override
-    public void createSkus(Long spuId, List<ProductSkuCreateOrUpdateReqVO> skuCreateReqList) {
+    public void createSkus(Long spuId, String spuName, List<ProductSkuCreateOrUpdateReqVO> skuCreateReqList) {
         // 批量插入 SKU
-        List<ProductSkuDO> skuDOList = ProductSkuConvert.INSTANCE.convertSkuDOList(skuCreateReqList);
+        List<ProductSkuDO> skuDOList = ProductSkuConvert.INSTANCE.convertList06(skuCreateReqList, spuName);
         skuDOList.forEach(v -> v.setSpuId(spuId));
         productSkuMapper.insertBatch(skuDOList);
     }
@@ -148,7 +148,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
 
     @Override
     @Transactional
-    public void updateSkus(Long spuId, List<ProductSkuCreateOrUpdateReqVO> skus) {
+    public void updateSkus(Long spuId, String spuName, List<ProductSkuCreateOrUpdateReqVO> skus) {
         // 查询 SPU 下已经存在的 SKU 的集合
         List<ProductSkuDO> existsSkus = productSkuMapper.selectListBySpuId(spuId);
         // 构建规格与 SKU 的映射关系;
@@ -168,7 +168,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
         List<ProductSkuDO> updateSkus = new ArrayList<>();
         List<Long> deleteSkus = new ArrayList<>();
 
-        List<ProductSkuDO> allUpdateSkus = ProductSkuConvert.INSTANCE.convertSkuDOList(skus);
+        List<ProductSkuDO> allUpdateSkus = ProductSkuConvert.INSTANCE.convertList06(skus, spuName);
         allUpdateSkus.forEach(p -> {
             String propertiesKey = p.getProperties() == null? "null": p.getProperties().stream().map(m -> String.valueOf(m.getValueId())).collect(Collectors.joining());
             // 1、找得到的,进行更新

+ 2 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java

@@ -79,7 +79,7 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         spu.setTotalStock(CollectionUtils.getSumValue(skuCreateReqList, ProductSkuCreateOrUpdateReqVO::getStock, Integer::sum));
         productSpuMapper.insert(spu);
         // 插入 SKU
-        productSkuService.createSkus(spu.getId(), skuCreateReqList);
+        productSkuService.createSkus(spu.getId(), spu.getName(), skuCreateReqList);
         // 返回
         return spu.getId();
     }
@@ -105,7 +105,7 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         updateObj.setTotalStock(CollectionUtils.getSumValue(skuCreateReqList, ProductSkuCreateOrUpdateReqVO::getStock, Integer::sum));
         productSpuMapper.updateById(updateObj);
         // 批量更新 SKU
-        productSkuService.updateSkus(updateObj.getId(), updateReqVO.getSkus());
+        productSkuService.updateSkus(updateObj.getId(), updateObj.getName(), updateReqVO.getSkus());
     }
 
     @Override

+ 0 - 9
yudao-ui-admin/src/views/mall/product/spu/save.vue

@@ -80,15 +80,6 @@
                   <ImageUpload v-model="scope.row.picUrl" :limit="1" :isShowTip="false" style="width: 100px; height: 50px"/>
                 </template>
               </el-table-column>
-              <template v-if="this.specSwitch">
-                <el-table-column label="sku名称" :render-header="addRedStar" key="91">
-                  <template slot-scope="scope">
-                    <el-form-item :prop="'rates.'+ scope.$index + '.name'" :rules="[{required: true, trigger: 'change'}]">
-                      <el-input v-model="scope.row.name"/>
-                    </el-form-item>
-                  </template>
-                </el-table-column>
-              </template>
               <el-table-column label="市场价(元)" :render-header="addRedStar" key="92">
                 <template slot-scope="scope">
                   <el-form-item :prop="'rates.'+ scope.$index + '.marketPrice'" :rules="[{required: true, trigger: 'change'}]">