فهرست منبع

product:商品规格,调整成商品属性,避免和 sku 概念冲突

YunaiV 2 سال پیش
والد
کامیت
fac3e7c726
55فایلهای تغییر یافته به همراه283 افزوده شده و 210 حذف شده
  1. 1 1
      yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/sku/dto/ProductSkuRespDTO.java
  2. 7 7
      yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java
  3. 2 2
      yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/spu/ProductSpuSpecTypeEnum.java
  4. 8 8
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/ProductPropertyController.java
  5. 6 7
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/ProductPropertyValueController.java
  6. 6 11
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/ProductPropertyViewRespVO.java
  7. 3 3
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyAndValueRespVO.java
  8. 3 3
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyBaseVO.java
  9. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyCreateReqVO.java
  10. 2 2
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyListReqVO.java
  11. 2 2
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyPageReqVO.java
  12. 2 2
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyRespVO.java
  13. 8 6
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyUpdateReqVO.java
  14. 5 5
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueBaseVO.java
  15. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueCreateReqVO.java
  16. 3 9
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValuePageReqVO.java
  17. 2 2
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueRespVO.java
  18. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueUpdateReqVO.java
  19. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuBaseVO.java
  20. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuCreateOrUpdateReqVO.java
  21. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuRespVO.java
  22. 5 5
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java
  23. 1 3
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/property/ProductPropertyConvert.java
  24. 3 4
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/propertyvalue/ProductPropertyValueConvert.java
  25. 2 2
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java
  26. 3 3
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java
  27. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/sku/ProductSkuDO.java
  28. 0 7
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java
  29. 0 5
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyValueMapper.java
  30. 14 16
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyService.java
  31. 6 7
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java
  32. 10 12
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueService.java
  33. 1 2
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueServiceImpl.java
  34. 33 0
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/bo/ProductPropertyValueDetailRespBO.java
  35. 8 6
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java
  36. 1 1
      yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java
  37. 3 3
      yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/price/PriceServiceImpl.java
  38. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/aftersale/vo/TradeAfterSaleBaseVO.java
  39. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/base/product/property/ProductPropertyValueDetailRespVO.java
  40. 18 0
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
  41. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderPageItemRespVO.java
  42. 2 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderPageReqVO.java
  43. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/base/property/AppProductPropertyValueDetailRespVO.java
  44. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/base/sku/AppProductSkuBaseRespVO.java
  45. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderGetCreateInfoRespVO.java
  46. 14 0
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
  47. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/aftersale/TradeAfterSaleDO.java
  48. 1 1
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java
  49. 9 2
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java
  50. 25 0
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderService.java
  51. 7 5
      yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java
  52. 16 14
      yudao-ui-admin/src/api/mall/product/property.js
  53. 1 1
      yudao-ui-admin/src/router/index.js
  54. 15 15
      yudao-ui-admin/src/views/mall/product/property/index.vue
  55. 11 11
      yudao-ui-admin/src/views/mall/product/property/value.vue

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

@@ -28,7 +28,7 @@ public class ProductSkuRespDTO {
     private String spuName;
 
     /**
-     * 规格值数组,JSON 格式
+     * 属性数组,JSON 格式
      */
     private List<Property> properties;
     /**

+ 7 - 7
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java

@@ -22,13 +22,13 @@ public interface ErrorCodeConstants {
     ErrorCode BRAND_DISABLED = new ErrorCode(1008002001, "品牌不存在");
     ErrorCode BRAND_NAME_EXISTS = new ErrorCode(1008002002, "品牌名称已存在");
 
-    // ========== 商品规格名称 1008003000 ==========
-    ErrorCode PROPERTY_NOT_EXISTS = new ErrorCode(1008003000, "规格名称不存在");
-    ErrorCode PROPERTY_EXISTS = new ErrorCode(1008003001, "规格名称已存在");
+    // ========== 商品属性项 1008003000 ==========
+    ErrorCode PROPERTY_NOT_EXISTS = new ErrorCode(1008003000, "属性项不存在");
+    ErrorCode PROPERTY_EXISTS = new ErrorCode(1008003001, "属性项的名称已存在");
 
-    // ========== 规格值 1008004000 ==========
-    ErrorCode PROPERTY_VALUE_NOT_EXISTS = new ErrorCode(1008004000, "规格值不存在");
-    ErrorCode PROPERTY_VALUE_EXISTS = new ErrorCode(1008004001, "规格值已存在");
+    // ========== 商品属性值 1008004000 ==========
+    ErrorCode PROPERTY_VALUE_NOT_EXISTS = new ErrorCode(1008004000, "属性值不存在");
+    ErrorCode PROPERTY_VALUE_EXISTS = new ErrorCode(1008004001, "属性值的名称已存在");
 
     // ========== 商品 SPU 1008005000 ==========
     ErrorCode SPU_NOT_EXISTS = new ErrorCode(1008005000, "商品 SPU 不存在");
@@ -36,7 +36,7 @@ public interface ErrorCodeConstants {
     // ========== 商品 SKU 1008006000 ==========
     ErrorCode SKU_NOT_EXISTS = new ErrorCode(1008006000, "商品 SKU 不存在");
     ErrorCode SKU_PROPERTIES_DUPLICATED = new ErrorCode(1008006001, "商品 SKU 的属性组合存在重复");
-    ErrorCode SPU_ATTR_NUMBERS_MUST_BE_EQUALS = new ErrorCode(1008006002, "一个 SPU 下的每个 SKU,其规格数必须一致");
+    ErrorCode SPU_ATTR_NUMBERS_MUST_BE_EQUALS = new ErrorCode(1008006002, "一个 SPU 下的每个 SKU,其属性项必须一致");
     ErrorCode SPU_SKU_NOT_DUPLICATE = new ErrorCode(1008006003, "一个 SPU 下的每个 SKU,必须不重复");
     ErrorCode SKU_STOCK_NOT_ENOUGH = new ErrorCode(1008006004, "商品 SKU 库存不足");
 

+ 2 - 2
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/spu/ProductSpuSpecTypeEnum.java

@@ -21,11 +21,11 @@ public enum ProductSpuSpecTypeEnum implements IntArrayValuable {
     public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ProductSpuSpecTypeEnum::getType).toArray();
 
     /**
-     * 规格
+     * 规格类型
      */
     private final Integer type;
     /**
-     * 规格名
+     * 规格名
      */
     private final String name;
 

+ 8 - 8
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/ProductPropertyController.java

@@ -18,7 +18,7 @@ import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
-@Api(tags = "管理后台 - 规格名称")
+@Api(tags = "管理后台 - 商品属性项")
 @RestController
 @RequestMapping("/product/property")
 @Validated
@@ -28,14 +28,14 @@ public class ProductPropertyController {
     private ProductPropertyService productPropertyService;
 
     @PostMapping("/create")
-    @ApiOperation("创建规格名称")
+    @ApiOperation("创建属性项")
     @PreAuthorize("@ss.hasPermission('product:property:create')")
     public CommonResult<Long> createProperty(@Valid @RequestBody ProductPropertyCreateReqVO createReqVO) {
         return success(productPropertyService.createProperty(createReqVO));
     }
 
     @PutMapping("/update")
-    @ApiOperation("更新规格名称")
+    @ApiOperation("更新属性项")
     @PreAuthorize("@ss.hasPermission('product:property:update')")
     public CommonResult<Boolean> updateProperty(@Valid @RequestBody ProductPropertyUpdateReqVO updateReqVO) {
         productPropertyService.updateProperty(updateReqVO);
@@ -43,7 +43,7 @@ public class ProductPropertyController {
     }
 
     @DeleteMapping("/delete")
-    @ApiOperation("删除规格名称")
+    @ApiOperation("删除属性项")
     @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('product:property:delete')")
     public CommonResult<Boolean> deleteProperty(@RequestParam("id") Long id) {
@@ -52,7 +52,7 @@ public class ProductPropertyController {
     }
 
     @GetMapping("/get")
-    @ApiOperation("获得规格名称")
+    @ApiOperation("获得属性项")
     @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('product:property:query')")
     public CommonResult<ProductPropertyRespVO> getProperty(@RequestParam("id") Long id) {
@@ -60,21 +60,21 @@ public class ProductPropertyController {
     }
 
     @GetMapping("/list")
-    @ApiOperation("获得规格名称列表")
+    @ApiOperation("获得属性项列表")
     @PreAuthorize("@ss.hasPermission('product:property:query')")
     public CommonResult<List<ProductPropertyRespVO>> getPropertyList(@Valid ProductPropertyListReqVO listReqVO) {
         return success(productPropertyService.getPropertyList(listReqVO));
     }
 
     @GetMapping("/page")
-    @ApiOperation("获得规格名称分页")
+    @ApiOperation("获得属性项分页")
     @PreAuthorize("@ss.hasPermission('product:property:query')")
     public CommonResult<PageResult<ProductPropertyRespVO>> getPropertyPage(@Valid ProductPropertyPageReqVO pageVO) {
         return success(productPropertyService.getPropertyPage(pageVO));
     }
 
     @GetMapping("/listAndValue")
-    @ApiOperation("获得规格名称列表")
+    @ApiOperation("获得属性项列表")
     @PreAuthorize("@ss.hasPermission('product:property:query')")
     public CommonResult<List<ProductPropertyAndValueRespVO>> getPropertyAndValueList(@Valid ProductPropertyListReqVO listReqVO) {
         return success(productPropertyService.getPropertyAndValueList(listReqVO));

+ 6 - 7
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/ProductPropertyValueController.java

@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.product.controller.admin.property;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyPageReqVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueCreateReqVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValuePageReqVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
@@ -20,7 +19,7 @@ import javax.validation.Valid;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
-@Api(tags = "管理后台 - 规格值名称")
+@Api(tags = "管理后台 - 商品属性值")
 @RestController
 @RequestMapping("/product/property/value")
 @Validated
@@ -30,14 +29,14 @@ public class ProductPropertyValueController {
     private ProductPropertyValueService productPropertyValueService;
 
     @PostMapping("/create")
-    @ApiOperation("创建规格名称")
+    @ApiOperation("创建属性值")
     @PreAuthorize("@ss.hasPermission('product:property:create')")
     public CommonResult<Long> createProperty(@Valid @RequestBody ProductPropertyValueCreateReqVO createReqVO) {
         return success(productPropertyValueService.createPropertyValue(createReqVO));
     }
 
     @PutMapping("/update")
-    @ApiOperation("更新规格名称")
+    @ApiOperation("更新属性值")
     @PreAuthorize("@ss.hasPermission('product:property:update')")
     public CommonResult<Boolean> updateProperty(@Valid @RequestBody ProductPropertyValueUpdateReqVO updateReqVO) {
         productPropertyValueService.updatePropertyValue(updateReqVO);
@@ -45,7 +44,7 @@ public class ProductPropertyValueController {
     }
 
     @DeleteMapping("/delete")
-    @ApiOperation("删除规格名称")
+    @ApiOperation("删除属性值")
     @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('product:property:delete')")
     public CommonResult<Boolean> deleteProperty(@RequestParam("id") Long id) {
@@ -54,7 +53,7 @@ public class ProductPropertyValueController {
     }
 
     @GetMapping("/get")
-    @ApiOperation("获得规格名称")
+    @ApiOperation("获得属性值")
     @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('product:property:query')")
     public CommonResult<ProductPropertyValueRespVO> getProperty(@RequestParam("id") Long id) {
@@ -62,7 +61,7 @@ public class ProductPropertyValueController {
     }
 
     @GetMapping("/page")
-    @ApiOperation("获得规格名称分页")
+    @ApiOperation("获得属性值分页")
     @PreAuthorize("@ss.hasPermission('product:property:query')")
     public CommonResult<PageResult<ProductPropertyValueRespVO>> getPropertyValuePage(@Valid ProductPropertyValuePageReqVO pageVO) {
         return success(productPropertyValueService.getPropertyValueListPage(pageVO));

+ 6 - 11
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/ProductPropertyViewRespVO.java

@@ -7,28 +7,23 @@ import lombok.ToString;
 
 import java.util.List;
 
-/**
- * @Description: ProductPropertyViewRespVO
- * @Author: franky
- * @CreateDate: 2022/7/5 21:29
- * @Version: 1.0.0
- */
-@ApiModel("管理后台 - 规格名称详情展示 Request VO")
+// TODO 芋艿:看看怎么删除
+@ApiModel("管理后台 - 商品属性详情展示 Request VO")
 @Data
 @ToString(callSuper = true)
 public class ProductPropertyViewRespVO {
 
-    @ApiModelProperty(value = "规格名称id", example = "1")
+    @ApiModelProperty(value = "属性项 id", example = "1")
     public Long propertyId;
 
-    @ApiModelProperty(value = "规格名称", example = "内存")
+    @ApiModelProperty(value = "属性项的名字", example = "内存")
     public String name;
 
-    @ApiModelProperty(value = "规格属性值集合", example = "[{\"v1\":11,\"v2\":\"64G\"},{\"v1\":10,\"v2\":\"32G\"}]")
+    @ApiModelProperty(value = "属性值数组")
     public List<Tuple2> propertyValues;
 
     @Data
-    @ApiModel(value = "规格属性值元组")
+    @ApiModel(value = "属性值元组")
     public static class Tuple2 {
         private final long id;
         private final String name;

+ 3 - 3
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyAndValueRespVO.java

@@ -10,20 +10,20 @@ import lombok.ToString;
 import java.time.LocalDateTime;
 import java.util.List;
 
-@ApiModel("管理后台 - 规格 + 规格值 Response VO")
+@ApiModel("管理后台 - 商品属性项 + 属性值 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 public class ProductPropertyAndValueRespVO extends ProductPropertyBaseVO {
 
-    @ApiModelProperty(value = "规格的编号", required = true, example = "1024")
+    @ApiModelProperty(value = "属性项的编号", required = true, example = "1024")
     private Long id;
 
     @ApiModelProperty(value = "创建时间", required = true)
     private LocalDateTime createTime;
 
     /**
-     * 规格值的集合
+     * 属性值的集合
      */
     private List<ProductPropertyValueRespVO> values;
 

+ 3 - 3
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyBaseVO.java

@@ -7,14 +7,14 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**
- * 规格名称 Base VO,提供给添加、修改、详细的子 VO 使用
+ * 商品属性项 Base VO,提供给添加、修改、详细的子 VO 使用
  * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  */
 @Data
 public class ProductPropertyBaseVO {
 
-    @ApiModelProperty(value = "规格名称", required = true, example = "颜色")
-    @NotBlank(message = "规格名称不能为空")
+    @ApiModelProperty(value = "名称", required = true, example = "颜色")
+    @NotBlank(message = "名称不能为空")
     private String name;
 
     @ApiModelProperty(value = "备注", example = "颜色")

+ 1 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyCreateReqVO.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
 
-@ApiModel("管理后台 - 规格名称创建 Request VO")
+@ApiModel("管理后台 - 属性项创建 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)

+ 2 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyListReqVO.java

@@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.ToString;
 
-@ApiModel("管理后台 - 规格名称 List Request VO")
+@ApiModel("管理后台 - 属性项 List Request VO")
 @Data
 @ToString(callSuper = true)
 public class ProductPropertyListReqVO {
 
-    @ApiModelProperty(value = "规格名称", example = "颜色")
+    @ApiModelProperty(value = "名称", example = "颜色")
     private String name;
 
     @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")

+ 2 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyPageReqVO.java

@@ -12,13 +12,13 @@ import java.time.LocalDateTime;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@ApiModel("管理后台 - 规格名称分页 Request VO")
+@ApiModel("管理后台 - 属性项 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 public class ProductPropertyPageReqVO extends PageParam {
 
-    @ApiModelProperty(value = "规格名称", example = "颜色")
+    @ApiModelProperty(value = "名称", example = "颜色")
     private String name;
 
     @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")

+ 2 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyRespVO.java

@@ -8,13 +8,13 @@ import lombok.ToString;
 
 import java.time.LocalDateTime;
 
-@ApiModel("管理后台 - 规格 + 规格值 Response VO")
+@ApiModel("管理后台 - 属性项 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 public class ProductPropertyRespVO extends ProductPropertyBaseVO {
 
-    @ApiModelProperty(value = "规格的编号", required = true, example = "1024")
+    @ApiModelProperty(value = "编号", required = true, example = "1024")
     private Long id;
 
     @ApiModelProperty(value = "创建时间", required = true)

+ 8 - 6
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/property/ProductPropertyUpdateReqVO.java

@@ -1,12 +1,14 @@
 package cn.iocoder.yudao.module.product.controller.admin.property.vo.property;
 
-import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueCreateReqVO;
-import lombok.*;
-import io.swagger.annotations.*;
-import javax.validation.constraints.*;
-import java.util.List;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
-@ApiModel("管理后台 - 规格名称更新 Request VO")
+import javax.validation.constraints.NotNull;
+
+@ApiModel("管理后台 - 属性项更新 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)

+ 5 - 5
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueBaseVO.java

@@ -7,18 +7,18 @@ import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
 /**
-* 规格值 Base VO,提供给添加、修改、详细的子 VO 使用
+* 属性值 Base VO,提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 */
 @Data
 public class ProductPropertyValueBaseVO {
 
-    @ApiModelProperty(value = "规格编号", required = true, example = "1024")
-    @NotNull(message = "规格编号不能为空")
+    @ApiModelProperty(value = "属性项的编号", required = true, example = "1024")
+    @NotNull(message = "属性项的编号不能为空")
     private Long propertyId;
 
-    @ApiModelProperty(value = "规格值名字", required = true, example = "红色")
-    @NotEmpty(message = "规格值名字不能为空")
+    @ApiModelProperty(value = "名称", required = true, example = "红色")
+    @NotEmpty(message = "名称名字不能为空")
     private String name;
 
     @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")

+ 1 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueCreateReqVO.java

@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.product.controller.admin.property.vo.value;
 import lombok.*;
 import io.swagger.annotations.*;
 
-@ApiModel("管理后台 - 规格值创建 Request VO")
+@ApiModel("管理后台 - 商品属性值创建 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)

+ 3 - 9
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValuePageReqVO.java

@@ -6,23 +6,17 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotEmpty;
-import java.util.Date;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@ApiModel("管理后台 - 规格名称值分页 Request VO")
+@ApiModel("管理后台 - 商品属性值分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 public class ProductPropertyValuePageReqVO extends PageParam {
 
-    @ApiModelProperty(value = "规格id", example = "1024")
+    @ApiModelProperty(value = "属性项的编号", example = "1024")
     private String propertyId;
 
-    @ApiModelProperty(value = "规格值", example = "红色")
+    @ApiModelProperty(value = "名称", example = "红色")
     private String name;
 
     @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")

+ 2 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueRespVO.java

@@ -8,13 +8,13 @@ import lombok.ToString;
 
 import java.time.LocalDateTime;
 
-@ApiModel("管理后台 - 规格值 Response VO")
+@ApiModel("管理后台 - 商品属性值 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 public class ProductPropertyValueRespVO extends ProductPropertyValueBaseVO {
 
-    @ApiModelProperty(value = "主键", required = true, example = "10")
+    @ApiModelProperty(value = "编号", required = true, example = "10")
     private Long id;
 
     @ApiModelProperty(value = "创建时间")

+ 1 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueUpdateReqVO.java

@@ -4,7 +4,7 @@ import lombok.*;
 import io.swagger.annotations.*;
 import javax.validation.constraints.*;
 
-@ApiModel("管理后台 - 规格值更新 Request VO")
+@ApiModel("管理后台 - 商品属性值更新 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)

+ 1 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuBaseVO.java

@@ -55,7 +55,7 @@ public class ProductSkuBaseVO {
     @ApiModelProperty(value = "商品体积", example = "1024", notes = "单位:m^3 平米")
     private Double volume;
 
-    @ApiModel("规格值")
+    @ApiModel("商品属性")
     @Data
     public static class Property {
 

+ 1 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuCreateOrUpdateReqVO.java

@@ -18,7 +18,7 @@ public class ProductSkuCreateOrUpdateReqVO extends ProductSkuBaseVO {
     private Long id;
 
     /**
-     * 规格值数组
+     * 属性数组
      */
     private List<Property> properties;
 

+ 1 - 1
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuRespVO.java

@@ -22,7 +22,7 @@ public class ProductSkuRespVO extends ProductSkuBaseVO {
     private LocalDateTime createTime;
 
     /**
-     * 规格值数组
+     * 属性数组
      */
     private List<Property> properties;
 

+ 5 - 5
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java

@@ -35,22 +35,22 @@ public class ProductSpuDetailRespVO extends ProductSpuBaseVO {
     public static class Sku extends ProductSkuBaseVO {
 
         /**
-         * 规格的数组
+         * 属性数组
          */
         private List<ProductSpuDetailRespVO.Property> properties;
 
     }
 
-    @ApiModel(value = "管理后台 - 商品规格的详细 Response VO")
+    @ApiModel(value = "管理后台 - 商品属性的详细 Response VO")
     @Data
     @EqualsAndHashCode(callSuper = true)
     @ToString(callSuper = true)
     public static class Property extends ProductSkuBaseVO.Property {
 
-        @ApiModelProperty(value = "规格的名字", required = true, example = "颜色")
+        @ApiModelProperty(value = "属性项的名字", required = true, example = "颜色")
         private String propertyName;
 
-        @ApiModelProperty(value = "规格值的名字", required = true, example = "蓝色")
+        @ApiModelProperty(value = "属性值的名称", required = true, example = "蓝色")
         private String valueName;
 
     }
@@ -59,7 +59,7 @@ public class ProductSpuDetailRespVO extends ProductSpuBaseVO {
     private Long categoryId;
 
     // TODO @芋艿:在瞅瞅~
-    @ApiModelProperty(value = "规格属性修改和详情展示组合", example = "[{\"propertyId\":2,\"name\":\"内存\",\"propertyValues\":[{\"v1\":11,\"v2\":\"64G\"},{\"v1\":10,\"v2\":\"32G\"}]},{\"propertyId\":3,\"name\":\"尺寸\",\"propertyValues\":[{\"v1\":16,\"v2\":\"6.1\"},{\"v1\":15,\"v2\":\"5.7\"}]}]")
+    @ApiModelProperty(value = "属性修改和详情展示组合", example = "[{\"propertyId\":2,\"name\":\"内存\",\"propertyValues\":[{\"v1\":11,\"v2\":\"64G\"},{\"v1\":10,\"v2\":\"32G\"}]},{\"propertyId\":3,\"name\":\"尺寸\",\"propertyValues\":[{\"v1\":16,\"v2\":\"6.1\"},{\"v1\":15,\"v2\":\"5.7\"}]}]")
     private List<ProductPropertyViewRespVO> productPropertyViews;
 
 }

+ 1 - 3
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/property/ProductPropertyConvert.java

@@ -5,16 +5,14 @@ import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.Pro
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyCreateReqVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyRespVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyUpdateReqVO;
-import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
 import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
-import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
 import java.util.List;
 
 /**
- * 规格名称 Convert
+ * 属性项 Convert
  *
  * @author 芋道源码
  */

+ 3 - 4
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/propertyvalue/ProductPropertyValueConvert.java

@@ -1,9 +1,6 @@
 package cn.iocoder.yudao.module.product.convert.propertyvalue;
 
-import java.util.*;
-
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueCreateReqVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueUpdateReqVO;
@@ -11,8 +8,10 @@ import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyVa
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
+import java.util.List;
+
 /**
- * 规格值 Convert
+ * 属性值 Convert
  *
  * @author 芋道源码
  */

+ 2 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 
 /**
- * 规格名称 DO
+ * 商品属性项 DO
  *
  * @author 芋道源码
  */
@@ -28,7 +28,7 @@ public class ProductPropertyDO extends BaseDO {
     @TableId
     private Long id;
     /**
-     * 规格名称
+     * 名称
      */
     private String name;
     /**

+ 3 - 3
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java

@@ -9,7 +9,7 @@ import lombok.*;
 
 
 /**
- * 规格值 DO
+ * 商品属性值 DO
  *
  * @author 芋道源码
  */
@@ -29,13 +29,13 @@ public class ProductPropertyValueDO extends BaseDO {
     @TableId
     private Long id;
     /**
-     * 规格键编号
+     * 属性项的编号
      *
      * 关联 {@link ProductPropertyDO#getId()}
      */
     private Long propertyId;
     /**
-     * 规格值名字
+     * 名称
      */
     private String name;
     /**

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

@@ -48,7 +48,7 @@ public class ProductSkuDO extends BaseDO {
      */
     private String spuName;
     /**
-     * 规格值数组,JSON 格式
+     * 属性数组,JSON 格式
      */
     @TableField(typeHandler = PropertyTypeHandler.class)
     private List<Property> properties;

+ 0 - 7
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java

@@ -7,13 +7,6 @@ import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.Pro
 import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
 import org.apache.ibatis.annotations.Mapper;
 
-import java.util.List;
-
-/**
- * 规格名称 Mapper
- *
- * @author 芋道源码
- */
 @Mapper
 public interface ProductPropertyMapper extends BaseMapperX<ProductPropertyDO> {
 

+ 0 - 5
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyValueMapper.java

@@ -9,11 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 
-/**
- * 规格值 Mapper
- *
- * @author 芋道源码
- */
 @Mapper
 public interface ProductPropertyValueMapper extends BaseMapperX<ProductPropertyValueDO> {
 

+ 14 - 16
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyService.java

@@ -1,23 +1,21 @@
 package cn.iocoder.yudao.module.product.service.property;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyRespVO;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.*;
-import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
 
 import javax.validation.Valid;
 import java.util.Collection;
 import java.util.List;
 
 /**
- * 规格名称 Service 接口
+ * 商品属性项 Service 接口
  *
  * @author 芋道源码
  */
 public interface ProductPropertyService {
 
     /**
-     * 创建规格名称
+     * 创建属性项
      *
      * @param createReqVO 创建信息
      * @return 编号
@@ -25,23 +23,23 @@ public interface ProductPropertyService {
     Long createProperty(@Valid ProductPropertyCreateReqVO createReqVO);
 
     /**
-     * 更新规格名称
+     * 更新属性项
      *
      * @param updateReqVO 更新信息
      */
     void updateProperty(@Valid ProductPropertyUpdateReqVO updateReqVO);
 
     /**
-     * 删除规格名称
+     * 删除属性项
      *
      * @param id 编号
      */
     void deleteProperty(Long id);
 
     /**
-     * 获得规格名称列表
+     * 获得属性项列表
      * @param listReqVO 集合查询
-     * @return 规格名称集合
+     * @return 属性项集合
      */
     List<ProductPropertyRespVO> getPropertyList(ProductPropertyListReqVO listReqVO);
 
@@ -49,31 +47,31 @@ public interface ProductPropertyService {
      * 获取属性名称分页
      *
      * @param pageReqVO 分页条件
-     * @return 规格名称分页
+     * @return 属性项分页
      */
     PageResult<ProductPropertyRespVO> getPropertyPage(ProductPropertyPageReqVO pageReqVO);
 
     /**
-     * 获得指定编号的规格名称
+     * 获得指定编号的属性项
      *
      * @param id 编号
-     * @return 规格名称
+     * @return 属性项
      */
     ProductPropertyRespVO getProperty(Long id);
 
     /**
-     * 根据规格属性编号的集合,获得对应的规格 + 规格值的集合
+     * 根据属性项的编号的集合,获得对应的属性项数组
      *
-     * @param ids 规格编号的集合
-     * @return 对应的规格
+     * @param ids 属性项的编号的集合
+     * @return 属性项数组
      */
     List<ProductPropertyRespVO> getPropertyList(Collection<Long> ids);
 
     /**
-     * 获得规格名称 + 值的列表
+     * 获得属性项 + 值的列表
      *
      * @param listReqVO 列表查询
-     * @return 规格名称 + 值的列表
+     * @return 属性项 + 值的列表
      */
     List<ProductPropertyAndValueRespVO> getPropertyAndValueList(ProductPropertyListReqVO listReqVO);
 

+ 6 - 7
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java

@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.product.service.property;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
-import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.*;
 import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert;
@@ -19,14 +18,13 @@ import javax.annotation.Resource;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PROPERTY_EXISTS;
 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PROPERTY_NOT_EXISTS;
 
 /**
- * 规格名称 Service 实现类
+ * 商品属性项 Service 实现类
  *
  * @author 芋道源码
  */
@@ -58,7 +56,7 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
     @Transactional(rollbackFor = Exception.class)
     public void updateProperty(ProductPropertyUpdateReqVO updateReqVO) {
         // 校验存在
-        this.validatePropertyExists(updateReqVO.getId());
+        validatePropertyExists(updateReqVO.getId());
         ProductPropertyDO productPropertyDO = productPropertyMapper.selectByName(updateReqVO.getName());
         if (productPropertyDO != null && !productPropertyDO.getId().equals(updateReqVO.getId())) {
             throw exception(PROPERTY_EXISTS);
@@ -71,10 +69,10 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
     @Override
     public void deleteProperty(Long id) {
         // 校验存在
-        this.validatePropertyExists(id);
+        validatePropertyExists(id);
         // 删除
         productPropertyMapper.deleteById(id);
-        //同步删除属性值
+        // 同步删除属性值
         productPropertyValueMapper.deletePropertyValueByPropertyId(id);
     }
 
@@ -93,7 +91,6 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
 
     @Override
     public PageResult<ProductPropertyRespVO> getPropertyPage(ProductPropertyPageReqVO pageReqVO) {
-        //获取属性列表
         PageResult<ProductPropertyDO> pageResult = productPropertyMapper.selectPage(pageReqVO);
         return ProductPropertyConvert.INSTANCE.convertPage(pageResult);
     }
@@ -104,11 +101,13 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
         return ProductPropertyConvert.INSTANCE.convert(property);
     }
 
+    // TODO @芋艿:丢到 Controller
     @Override
     public List<ProductPropertyRespVO> getPropertyList(Collection<Long> ids) {
         return ProductPropertyConvert.INSTANCE.convertList(productPropertyMapper.selectBatchIds(ids));
     }
 
+    // TODO @芋艿:丢到 Controller
     @Override
     public List<ProductPropertyAndValueRespVO> getPropertyAndValueList(ProductPropertyListReqVO listReqVO) {
         List<ProductPropertyRespVO> propertyList = getPropertyList(listReqVO);

+ 10 - 12
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueService.java

@@ -9,16 +9,14 @@ import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.Produc
 import java.util.List;
 
 /**
- * <p>
- * 规格值 Service 接口
- * </p>
+ * 商品属性值 Service 接口
  *
  * @author LuoWenFeng
  */
 public interface ProductPropertyValueService {
 
     /**
-     * 创建规格
+     * 创建属性
      *
      * @param createReqVO 创建信息
      * @return 编号
@@ -26,40 +24,40 @@ public interface ProductPropertyValueService {
     Long createPropertyValue(ProductPropertyValueCreateReqVO createReqVO);
 
     /**
-     * 更新规格
+     * 更新属性
      *
      * @param updateReqVO 更新信息
      */
     void updatePropertyValue(ProductPropertyValueUpdateReqVO updateReqVO);
 
     /**
-     * 删除规格
+     * 删除属性
      *
      * @param id 编号
      */
     void deletePropertyValue(Long id);
 
     /**
-     * 获得规格
+     * 获得属性
      *
      * @param id 编号
-     * @return 规格名称
+     * @return 属性值
      */
     ProductPropertyValueRespVO getPropertyValue(Long id);
 
     /**
-     * 获得规格
+     * 获得属性
      *
      * @param id 编号
-     * @return 规格名称
+     * @return 属性值
      */
     List<ProductPropertyValueRespVO> getPropertyValueListByPropertyId(List<Long> id);
 
     /**
-     * 获取规格值 分页
+     * 获取属性值的分页
      *
      * @param pageReqVO 查询条件
-     * @return
+     * @return 属性值的分页
      */
     PageResult<ProductPropertyValueRespVO> getPropertyValueListPage(ProductPropertyValuePageReqVO pageReqVO);
 }

+ 1 - 2
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueServiceImpl.java

@@ -14,13 +14,12 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.util.List;
-import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PROPERTY_VALUE_EXISTS;
 
 /**
- * 规格值 Service 实现类
+ * 商品属性值 Service 实现类
  *
  * @author LuoWenFeng
  */

+ 33 - 0
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/bo/ProductPropertyValueDetailRespBO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.product.service.property.bo;
+
+import lombok.Data;
+
+/**
+ * 商品属性项的明细 Response BO
+ *
+ * @author 芋道源码
+ */
+@Data
+public class ProductPropertyValueDetailRespBO {
+
+    /**
+     * 属性的编号
+     */
+    private Long propertyId;
+
+    /**
+     * 属性的名称
+     */
+    private String propertyName;
+
+    /**
+     * 属性值的编号
+     */
+    private Long valueId;
+
+    /**
+     * 属性值的名称
+     */
+    private String valueName;
+
+}

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

@@ -84,15 +84,17 @@ public class ProductSkuServiceImpl implements ProductSkuService {
             return;
         }
 
-        // 1、校验规格属性存在
-        Set<Long> propertyIds = skus.stream().filter(p -> p.getProperties() != null).flatMap(p -> p.getProperties().stream()) // 遍历多个 Property 属性
-                .map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toSet()); // 将每个 Property 转换成对应的 propertyId,最后形成集合
+        // 1、校验属性项存在
+        Set<Long> propertyIds = skus.stream().filter(p -> p.getProperties() != null)
+                .flatMap(p -> p.getProperties().stream()) // 遍历多个 Property 属性
+                .map(ProductSkuBaseVO.Property::getPropertyId) // 将每个 Property 转换成对应的 propertyId,最后形成集合
+                .collect(Collectors.toSet());
         List<ProductPropertyRespVO> propertyList = productPropertyService.getPropertyList(propertyIds);
         if (propertyList.size() != propertyIds.size()) {
             throw exception(PROPERTY_NOT_EXISTS);
         }
 
-        // 2. 校验,一个 SKU 下,没有重复的规格。校验方式是,遍历每个 SKU ,看看是否有重复的规格 propertyId
+        // 2. 校验,一个 SKU 下,没有重复的属性。校验方式是,遍历每个 SKU ,看看是否有重复的属性 propertyId
         Map<Long, ProductPropertyValueRespVO> propertyValueMap = CollectionUtils.convertMap(productPropertyValueService.getPropertyValueListByPropertyId(new ArrayList<>(propertyIds)), ProductPropertyValueRespVO::getId);
         skus.forEach(sku -> {
             Set<Long> skuPropertyIds = convertSet(sku.getProperties(), propertyItem -> propertyValueMap.get(propertyItem.getValueId()).getPropertyId());
@@ -101,7 +103,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
             }
         });
 
-        // 3. 再校验,每个 Sku 的规格值的数量,是一致的。
+        // 3. 再校验,每个 Sku 的属性值的数量,是一致的。
         int attrValueIdsSize = skus.get(0).getProperties().size();
         for (int i = 1; i < skus.size(); i++) {
             if (attrValueIdsSize != skus.get(i).getProperties().size()) {
@@ -151,7 +153,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
     public void updateSkus(Long spuId, String spuName, List<ProductSkuCreateOrUpdateReqVO> skus) {
         // 查询 SPU 下已经存在的 SKU 的集合
         List<ProductSkuDO> existsSkus = productSkuMapper.selectListBySpuId(spuId);
-        // 构建规格与 SKU 的映射关系;
+        // 构建属性与 SKU 的映射关系;
         // TODO @luowenfeng: 可以下 existsSkuMap2; 会简洁一点; 另外, 可以考虑抽一个小方法, 用于 Properties 生成一个串; 这样 177 也可以复用了
         Map<String, Long> existsSkuMap = existsSkus.stream()
                 .map(v -> {

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

@@ -133,7 +133,7 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         if (null != spu) {
             List<ProductSpuDetailRespVO.Sku> skuReqs = ProductSkuConvert.INSTANCE.convertList03(productSkuService.getSkusBySpuId(id));
             respVO.setSkus(skuReqs);
-            // 组合 sku 规格属性
+            // 组合 sku 属性
             if (spu.getSpecType().equals(ProductSpuSpecTypeEnum.DISABLE.getType())) {
                 List<ProductSkuRespVO.Property> properties = new ArrayList<>();
                 for (ProductSpuDetailRespVO.Sku productSkuRespVO : skuReqs) {

+ 3 - 3
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/price/PriceServiceImpl.java

@@ -265,7 +265,7 @@ public class PriceServiceImpl implements PriceService {
 
     private void calculatePriceByRewardActivity(PriceCalculateRespDTO priceCalculate, List<PriceCalculateRespDTO.OrderItem> orderItems,
                                                 RewardActivityDO rewardActivity) {
-        // 获得最大匹配的满减送活动的规
+        // 获得最大匹配的满减送活动的规
         RewardActivityDO.Rule rule = getLastMatchRewardActivityRule(rewardActivity, orderItems);
         if (rule == null) {
             // 获取不到的情况下,记录不满足的优惠明细
@@ -288,11 +288,11 @@ public class PriceServiceImpl implements PriceService {
     }
 
     /**
-     * 获得最大匹配的满减送活动的规
+     * 获得最大匹配的满减送活动的规
      *
      * @param rewardActivity 满减送活动
      * @param orderItems 商品项
-     * @return 匹配的活动规
+     * @return 匹配的活动规
      */
     private RewardActivityDO.Rule getLastMatchRewardActivityRule(RewardActivityDO rewardActivity,
                                                                  List<PriceCalculateRespDTO.OrderItem> orderItems) {

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/aftersale/vo/TradeAfterSaleBaseVO.java

@@ -72,7 +72,7 @@ public class TradeAfterSaleBaseVO {
     @NotNull(message = "商品 SKU 编号不能为空")
     private Long skuId;
 
-    @ApiModelProperty(value = "规格值数组")
+    @ApiModelProperty(value = "商品属性数组")
     private List<ProductPropertyValueDetailRespVO> properties;
 
     @ApiModelProperty(value = "商品图片", example = "https://www.iocoder.cn/2.png")

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/base/product/property/ProductPropertyValueDetailRespVO.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-@ApiModel("管理后台 - 商品规格 + 规格值的明细 Response VO")
+@ApiModel("管理后台 - 商品属性值的明细 Response VO")
 @Data
 public class ProductPropertyValueDetailRespVO {
 

+ 18 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java

@@ -1,11 +1,14 @@
 package cn.iocoder.yudao.module.trade.controller.admin.order;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageItemRespVO;
 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
+import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
+import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
 import cn.iocoder.yudao.module.trade.service.order.TradeOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,8 +18,11 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
+import java.util.Set;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 @Api(tags = "管理后台 - 交易订单")
@@ -33,7 +39,19 @@ public class TradeOrderController {
     @ApiOperation("获得交易订单分页")
     @PreAuthorize("@ss.hasPermission('trade:order:query')")
     public CommonResult<PageResult<TradeOrderPageItemRespVO>> getOrderPage(TradeOrderPageReqVO reqVO) {
+        // 查询订单
         PageResult<TradeOrderDO> pageResult = tradeOrderService.getOrderPage(reqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(PageResult.empty());
+        }
+
+        // 查询订单项
+        List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItems(
+                convertSet(pageResult.getList(), TradeOrderDO::getId));
+        // 查询属性
+        Set<Long> propertyValueIds = TradeOrderConvert.INSTANCE.convertPropertyValueIds(orderItems);
+
+
         return success(null);
     }
 

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderPageItemRespVO.java

@@ -20,7 +20,7 @@ public class TradeOrderPageItemRespVO {
     public static class Item extends TradeOrderItemBaseVO {
 
         /**
-         * 规格值数组
+         * 属性数组
          */
         private List<ProductPropertyValueDetailRespVO> properties;
 

+ 2 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderPageReqVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
 
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.validation.InEnum;
 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
 import io.swagger.annotations.ApiModel;
@@ -8,7 +9,7 @@ import lombok.Data;
 
 @ApiModel("管理后台 - 交易订单的分页 Request VO")
 @Data
-public class TradeOrderPageReqVO {
+public class TradeOrderPageReqVO extends PageParam {
 
     @ApiModelProperty(value = "订单状态", example = "1", notes = "参见 TradeOrderStatusEnum 枚举")
     @InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}")

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/base/property/AppProductPropertyValueDetailRespVO.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-@ApiModel("用户 App - 商品规格 + 规格值的明细 Response VO")
+@ApiModel("用户 App - 商品属性值的明细 Response VO")
 @Data
 public class AppProductPropertyValueDetailRespVO {
 

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/base/sku/AppProductSkuBaseRespVO.java

@@ -27,7 +27,7 @@ public class AppProductSkuBaseRespVO {
     private Integer stock;
 
     /**
-     * 规格数组
+     * 属性数组
      */
     private List<AppProductPropertyValueDetailRespVO> properties;
 

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderGetCreateInfoRespVO.java

@@ -56,7 +56,7 @@ public class AppTradeOrderGetCreateInfoRespVO {
          */
         private String picURL;
 //        /**
-//         * 规格值数组
+//         * 属性数组
 //         */
 //        private List<ProductAttrKeyValueRespVO> attrs; // TODO 后面改下
         /**

+ 14 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.trade.convert.order;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
 import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
@@ -18,8 +19,11 @@ import org.mapstruct.Mapping;
 import org.mapstruct.Mappings;
 import org.mapstruct.factory.Mappers;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.addTime;
@@ -88,4 +92,14 @@ public interface TradeOrderConvert {
         return createReqDTO;
     }
 
+    default Set<Long> convertPropertyValueIds(List<TradeOrderItemDO> orderItems) {
+        if (CollUtil.isEmpty(orderItems)) {
+            return new HashSet<>();
+        }
+        return orderItems.stream().filter(item -> item.getProperties() != null)
+                .flatMap(p -> p.getProperties().stream()) // 遍历多个 Property 属性
+                .map(TradeOrderItemDO.Property::getValueId) // 将每个 Property 转换成对应的 propertyId,最后形成集合
+                .collect(Collectors.toSet());
+    }
+
 }

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/aftersale/TradeAfterSaleDO.java

@@ -120,7 +120,7 @@ public class TradeAfterSaleDO extends BaseDO {
      */
     private Long skuId;
     /**
-     * 规格值数组,JSON 格式
+     * 属性数组,JSON 格式
      *
      * 冗余 {@link TradeOrderItemDO#getProperties()}
      */

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java

@@ -63,7 +63,7 @@ public class TradeOrderItemDO extends BaseDO {
      */
     private Long skuId;
     /**
-     * 规格值数组,JSON 格式
+     * 属性数组,JSON 格式
      *
      * 冗余 ProductSkuDO 的 properties 字段
      */

+ 9 - 2
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -1,6 +1,9 @@
 package cn.iocoder.yudao.module.trade.dal.mysql.order;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -14,8 +17,12 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     }
 
     default TradeOrderDO selectByIdAndUserId(Long id, Long userId) {
-        return selectOne(TradeOrderDO::getId, id,
-                TradeOrderDO::getUserId, userId);
+        return selectOne(TradeOrderDO::getId, id, TradeOrderDO::getUserId, userId);
+    }
+
+    default PageResult<TradeOrderDO> selectPage(TradeOrderPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
+                .eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus()));
     }
 
 }

+ 25 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderService.java

@@ -7,6 +7,12 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreate
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
+
 /**
  * 交易订单 Service 接口
  *
@@ -90,4 +96,23 @@ public interface TradeOrderService {
     void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus,
                                         Integer newAfterSaleStatus, Integer refundPrice);
 
+    /**
+     * 查询交易订单项
+     *
+     * @param ids 交易订单项编号数组
+     * @return 交易订单项数组
+     */
+    List<TradeOrderItemDO> getOrderItems(Collection<Long> ids);
+
+    /**
+     * 查询交易订单项 Map
+     *
+     * @param ids 交易订单项编号数组
+     * @return 交易订单项 Map
+     */
+    default Map<Long, List<TradeOrderItemDO>> getOrderItemMap(Collection<Long> ids) {
+        List<TradeOrderItemDO> orderItems = getOrderItems(ids);
+        return convertMultiMap(orderItems, TradeOrderItemDO::getOrderId);
+    }
+
 }

+ 7 - 5
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java

@@ -43,10 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
@@ -423,7 +420,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
 
     @Override
     public PageResult<TradeOrderDO> getOrderPage(TradeOrderPageReqVO reqVO) {
-        return null;
+        return tradeOrderMapper.selectPage(reqVO);
     }
 
     // =================== Order Item ===================
@@ -475,6 +472,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         // TODO 芋艿:未来如果有分佣,需要更新相关分佣订单为已失效
     }
 
+    @Override
+    public List<TradeOrderItemDO> getOrderItems(Collection<Long> ids) {
+        return tradeOrderItemMapper.selectBatchIds(ids);
+    }
+
     /**
      * 判断指定订单的所有订单项,是不是都售后成功
      *

+ 16 - 14
yudao-ui-admin/src/api/mall/product/property.js

@@ -1,6 +1,8 @@
 import request from '@/utils/request'
 
-// 创建规格名称
+// ------------------------ 属性项 -------------------
+
+// 创建属性项
 export function createProperty(data) {
   return request({
     url: '/product/property/create',
@@ -9,7 +11,7 @@ export function createProperty(data) {
   })
 }
 
-// 更新规格名称
+// 更新属性项
 export function updateProperty(data) {
   return request({
     url: '/product/property/update',
@@ -18,7 +20,7 @@ export function updateProperty(data) {
   })
 }
 
-// 删除规格名称
+// 删除属性项
 export function deleteProperty(id) {
   return request({
     url: '/product/property/delete?id=' + id,
@@ -26,7 +28,7 @@ export function deleteProperty(id) {
   })
 }
 
-// 获得规格名称
+// 获得属性项
 export function getProperty(id) {
   return request({
     url: '/product/property/get?id=' + id,
@@ -34,7 +36,7 @@ export function getProperty(id) {
   })
 }
 
-// 获得规格名称分页
+// 获得属性项分页
 export function getPropertyPage(query) {
   return request({
     url: '/product/property/page',
@@ -43,7 +45,7 @@ export function getPropertyPage(query) {
   })
 }
 
-// 获得规格名称列表
+// 获得属性项列表
 export function getPropertyList(query) {
   return request({
     url: '/product/property/list',
@@ -52,7 +54,7 @@ export function getPropertyList(query) {
   })
 }
 
-// 获得规格名称列表
+// 获得属性项列表
 export function getPropertyListAndValue(query) {
   return request({
     url: '/product/property/listAndValue',
@@ -62,7 +64,7 @@ export function getPropertyListAndValue(query) {
 }
 
 
-// 导出规格名称 Excel
+// 导出属性项 Excel
 export function exportPropertyExcel(query) {
   return request({
     url: '/product/property/export-excel',
@@ -72,9 +74,9 @@ export function exportPropertyExcel(query) {
   })
 }
 
-// ------------------------ 规格名称值 -------------------
+// ------------------------ 属性值 -------------------
 
-// 获得规格名称值分页
+// 获得属性值分页
 export function getPropertyValuePage(query) {
   return request({
     url: '/product/property/value/page',
@@ -83,7 +85,7 @@ export function getPropertyValuePage(query) {
   })
 }
 
-// 获得规格名称
+// 获得属性
 export function getPropertyValue(id) {
   return request({
     url: '/product/property/value/get?id=' + id,
@@ -92,7 +94,7 @@ export function getPropertyValue(id) {
 }
 
 
-// 创建规格名称
+// 创建属性
 export function createPropertyValue(data) {
   return request({
     url: '/product/property/value/create',
@@ -101,7 +103,7 @@ export function createPropertyValue(data) {
   })
 }
 
-// 更新规格名称
+// 更新属性
 export function updatePropertyValue(data) {
   return request({
     url: '/product/property/value/update',
@@ -110,7 +112,7 @@ export function updatePropertyValue(data) {
   })
 }
 
-// 删除规格名称
+// 删除属性值
 export function deletePropertyValue(id) {
   return request({
     url: '/product/property/value/delete?id=' + id,

+ 1 - 1
yudao-ui-admin/src/router/index.js

@@ -106,7 +106,7 @@ export const constantRoutes = [
         path: 'value/:propertyId(\\d+)',
         component: (resolve) => require(['@/views/mall/product/property/value'], resolve),
         name: 'PropertyValue',
-        meta: {title: '规格数据', icon: '', activeMenu: '/product/property'}
+        meta: {title: '商品属性值', icon: '', activeMenu: '/product/property'}
       }
     ]
   }, {

+ 15 - 15
yudao-ui-admin/src/views/mall/product/property/index.vue

@@ -3,8 +3,8 @@
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="规格名称" prop="name">
-        <el-input v-model="queryParams.name" placeholder="请输入规格名称" clearable @keyup.enter.native="handleQuery"/>
+      <el-form-item label="名称" prop="name">
+        <el-input v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="请选择开启状态" clearable size="small">
@@ -33,8 +33,8 @@
 
     <!-- 列表 -->
     <el-table v-loading="loading" :data="list">
-      <el-table-column label="规格id" align="center" prop="id" />
-      <el-table-column label="规格名称" align="center" :show-overflow-tooltip="true">
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="名称" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <router-link :to="'/property/value/' + scope.row.id" class="link-type">
             <span>{{ scope.row.name }}</span>
@@ -68,13 +68,13 @@
     <!-- 对话框(添加 / 修改) -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="规格id" prop="id" v-if="form.id != null">
+        <el-form-item label="编号" prop="id" v-if="form.id != null">
           <el-input v-model="form.id" disabled />
         </el-form-item>
-        <el-form-item label="规格名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入规格名称" />
+        <el-form-item label="名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入名称" />
         </el-form-item>
-        <el-form-item label="开启状态" prop="status">
+        <el-form-item label="状态" prop="status">
           <el-radio-group v-model="form.status">
             <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
                       :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }}
@@ -110,7 +110,7 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 规格名称列表
+      // 属性项列表
       list: [],
       // 弹出层标题
       title: "",
@@ -134,7 +134,7 @@ export default {
       // 表单校验
       rules: {
         name: [
-          { required: true, message: "规格不能为空", trigger: "blur" }
+          { required: true, message: "名称不能为空", trigger: "blur" }
         ],
         status: [
           { required: true, message: "状态不能为空", trigger: "blur" }
@@ -185,7 +185,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加规格";
+      this.title = "添加属性项";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -194,7 +194,7 @@ export default {
       getProperty(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改规格";
+        this.title = "修改属性项";
       });
     },
     /** 提交按钮 */
@@ -223,7 +223,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const id = row.id;
-      this.$modal.confirm('是否确认删除规格名称为"' + row.name + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除名称为"' + row.name + '"的数据项?').then(function() {
           return deleteProperty(id);
         }).then(() => {
           this.getList();
@@ -237,11 +237,11 @@ export default {
       params.pageNo = undefined;
       params.pageSize = undefined;
       // 执行导出
-      this.$modal.confirm('是否确认导出所有规格名称数据项?').then(() => {
+      this.$modal.confirm('是否确认导出所有名称数据项?').then(() => {
           this.exportLoading = true;
           return exportPropertyExcel(params);
         }).then(response => {
-          this.$download.excel(response, '规格名称.xls');
+          this.$download.excel(response, '名称.xls');
           this.exportLoading = false;
         }).catch(() => {});
     },

+ 11 - 11
yudao-ui-admin/src/views/mall/product/property/value.vue

@@ -1,13 +1,13 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="规格名称" prop="propertyId">
+      <el-form-item label="属性项" prop="propertyId">
         <el-select v-model="queryParams.propertyId">
           <el-option v-for="item in propertyOptions" :key="item.id" :label="item.id +'-'+ item.name" :value="item.id"/>
         </el-select>
       </el-form-item>
-      <el-form-item label="规格值" prop="name">
-        <el-input v-model="queryParams.name" placeholder="请输入规格值" clearable @keyup.enter.native="handleQuery"/>
+      <el-form-item label="名称" prop="name">
+        <el-input v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="状态" clearable size="small">
@@ -35,8 +35,8 @@
     </el-row>
 
     <el-table v-loading="loading" :data="dataList">
-      <el-table-column label="规格值id" align="center" prop="id"/>
-      <el-table-column label="规格值" align="center" prop="name"/>
+      <el-table-column label="编号" align="center" prop="id"/>
+      <el-table-column label="名称" align="center" prop="name"/>
       <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
@@ -66,11 +66,11 @@
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="90px">
-        <el-form-item label="规格值编码">
+        <el-form-item label="属性项">
           <el-input v-model="form.propertyId" :disabled="true"/>
         </el-form-item>
-        <el-form-item label="规格值" prop="name">
-          <el-input v-model="form.name" placeholder="请输入数据标签"/>
+        <el-form-item label="名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入名称"/>
         </el-form-item>
         <el-form-item label="状态" prop="status">
           <el-radio-group v-model="form.status">
@@ -137,7 +137,7 @@ export default {
       // 表单校验
       rules: {
         name: [
-          {required: true, message: "规格值不能为空", trigger: "blur"}
+          {required: true, message: "名称不能为空", trigger: "blur"}
         ],
         status: [
           {required: true, message: "状态不能为空", trigger: "blur"}
@@ -206,7 +206,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加规格值";
+      this.title = "添加属性值";
       this.form.propertyId = this.queryParams.propertyId;
     },
     /** 修改按钮操作 */
@@ -216,7 +216,7 @@ export default {
       getPropertyValue(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改规格值";
+        this.title = "修改属性值";
       });
     },
     /** 提交按钮 */