mall:code review 商品规格、规格值的代码

pull/2/head
YunaiV 2022-09-05 20:29:27 +08:00
parent 9632c33d27
commit 2cc60deb97
21 changed files with 102 additions and 172 deletions

View File

@ -1,29 +1,23 @@
package cn.iocoder.yudao.module.product.controller.admin.property; package cn.iocoder.yudao.module.product.controller.admin.property;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.annotations.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyAndValueRespVO;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyCreateReqVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyPageReqVO;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyUpdateReqVO;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.*;
import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert;
import cn.iocoder.yudao.module.product.service.property.ProductPropertyService; import cn.iocoder.yudao.module.product.service.property.ProductPropertyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Api(tags = "管理后台 - 规格名称") @Api(tags = "管理后台 - 规格名称")
@RestController @RestController
@ -66,15 +60,6 @@ public class ProductPropertyController {
return success(productPropertyService.getPropertyResp(id)); return success(productPropertyService.getPropertyResp(id));
} }
@GetMapping("/list")
@ApiOperation("获得规格名称列表")
@ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
@PreAuthorize("@ss.hasPermission('product:property:query')")
public CommonResult<List<ProductPropertyAndValueRespVO>> getPropertyList(@RequestParam("ids") Collection<Long> ids) {
List<ProductPropertyDO> list = productPropertyService.getPropertyList(ids);
return success(ProductPropertyConvert.INSTANCE.convertList(list));
}
@GetMapping("/page") @GetMapping("/page")
@ApiOperation("获得规格名称分页") @ApiOperation("获得规格名称分页")
@PreAuthorize("@ss.hasPermission('product:property:query')") @PreAuthorize("@ss.hasPermission('product:property:query')")
@ -82,16 +67,4 @@ public class ProductPropertyController {
return success(productPropertyService.getPropertyListPage(pageVO)); return success(productPropertyService.getPropertyListPage(pageVO));
} }
@GetMapping("/export-excel")
@ApiOperation("导出规格名称 Excel")
@PreAuthorize("@ss.hasPermission('product:property:export')")
@OperateLog(type = EXPORT)
public void exportPropertyExcel(@Valid ProductPropertyExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProductPropertyDO> list = productPropertyService.getPropertyList(exportReqVO);
// 导出 Excel
List<ProductPropertyExcelVO> datas = ProductPropertyConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "规格名称.xls", "数据", ProductPropertyExcelVO.class, datas);
}
} }

View File

@ -1,29 +0,0 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* Excel VO
*
* @author
*/
@Data
public class ProductPropertyExcelVO {
@ExcelProperty("主键")
private Long id;
@ExcelProperty("规格名称")
private String name;
@ExcelProperty("状态: 0 开启 1 禁用")
private Integer status;
@ExcelProperty("创建时间")
private Date createTime;
}

View File

@ -1,25 +0,0 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ApiModel(value = "管理后台 - 规格名称 Excel 导出 Request VO", description = "参数和 PropertyPageReqVO 是一致的")
@Data
public class ProductPropertyExportReqVO {
@ApiModelProperty(value = "规格名称")
private String name;
@ApiModelProperty(value = "状态: 0 开启 1 禁用")
private Integer status;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "创建时间")
private Date[] createTime;
}

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.property;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;

View File

@ -1,9 +1,10 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.property;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
// TODO @芋艿:完整的 review 下规格 import javax.validation.constraints.NotEmpty;
/** /**
* Base VO VO 使 * Base VO VO 使
* VO Swagger * VO Swagger
@ -11,10 +12,12 @@ import lombok.Data;
@Data @Data
public class ProductPropertyBaseVO { public class ProductPropertyBaseVO {
@ApiModelProperty(value = "规格名称") @ApiModelProperty(value = "规格名称", required = true, example = "颜色")
@NotEmpty(message = "规格名称不能为空")
private String name; private String name;
@ApiModelProperty(value = "状态: 0 开启 1 禁用") @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")
@NotEmpty(message = "状态不能为空")
private Integer status; private Integer status;
} }

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.property;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueCreateReqVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueCreateReqVO;
import lombok.*; import lombok.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
@ -13,6 +13,7 @@ import java.util.List;
@ToString(callSuper = true) @ToString(callSuper = true)
public class ProductPropertyCreateReqVO extends ProductPropertyBaseVO { public class ProductPropertyCreateReqVO extends ProductPropertyBaseVO {
// TODO @Luowenfeng规格值的 CRUD 可以单独;前端 + 后端,改成类似字典类型、字典数据的这种交互;在加一个 ProductPropertyValueController
@ApiModelProperty(value = "属性值") @ApiModelProperty(value = "属性值")
@NotNull(message = "属性值不能为空") @NotNull(message = "属性值不能为空")
List<ProductPropertyValueCreateReqVO> propertyValueList; List<ProductPropertyValueCreateReqVO> propertyValueList;

View File

@ -1,11 +1,15 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.property;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ApiModel("管理后台 - 规格名称分页 Request VO") @ApiModel("管理后台 - 规格名称分页 Request VO")
@ -14,10 +18,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@ToString(callSuper = true) @ToString(callSuper = true)
public class ProductPropertyPageReqVO extends PageParam { public class ProductPropertyPageReqVO extends PageParam {
@ApiModelProperty(value = "规格名称") @ApiModelProperty(value = "规格名称", example = "颜色")
private String name; private String name;
@ApiModelProperty(value = "状态 0 开启 1 禁用") @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")
private Integer status; private Integer status;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.property;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueCreateReqVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueCreateReqVO;
import lombok.*; import lombok.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import javax.validation.constraints.*; import javax.validation.constraints.*;
@ -12,7 +12,7 @@ import java.util.List;
@ToString(callSuper = true) @ToString(callSuper = true)
public class ProductPropertyUpdateReqVO extends ProductPropertyBaseVO { public class ProductPropertyUpdateReqVO extends ProductPropertyBaseVO {
@ApiModelProperty(value = "主键", required = true) @ApiModelProperty(value = "主键", required = true, example = "1")
@NotNull(message = "主键不能为空") @NotNull(message = "主键不能为空")
private Long id; private Long id;

View File

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.product.controller.admin.property.vo.value;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class ProductPropertyValueBaseVO {
@ApiModelProperty(value = "规格编号", required = true, example = "1024")
@NotNull(message = "规格编号不能为空")
private Long propertyId;
@ApiModelProperty(value = "规格值名字", required = true, example = "红色")
@NotEmpty(message = "规格值名字不能为空")
private String name;
@ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")
@NotEmpty(message = "状态不能为空")
private Integer status;
}

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.value;
import lombok.*; import lombok.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;

View File

@ -1,8 +1,12 @@
package cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.value;
import lombok.*; import io.swagger.annotations.ApiModel;
import java.util.*; import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.*; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.Date;
@ApiModel("管理后台 - 规格值 Response VO") @ApiModel("管理后台 - 规格值 Response VO")
@Data @Data
@ -10,7 +14,7 @@ import io.swagger.annotations.*;
@ToString(callSuper = true) @ToString(callSuper = true)
public class ProductPropertyValueRespVO extends ProductPropertyValueBaseVO { public class ProductPropertyValueRespVO extends ProductPropertyValueBaseVO {
@ApiModelProperty(value = "主键", required = true) @ApiModelProperty(value = "主键", required = true, example = "10")
private Long id; private Long id;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo; package cn.iocoder.yudao.module.product.controller.admin.property.vo.value;
import lombok.*; import lombok.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
@ -10,7 +10,7 @@ import javax.validation.constraints.*;
@ToString(callSuper = true) @ToString(callSuper = true)
public class ProductPropertyValueUpdateReqVO extends ProductPropertyValueBaseVO { public class ProductPropertyValueUpdateReqVO extends ProductPropertyValueBaseVO {
@ApiModelProperty(value = "主键", required = true) @ApiModelProperty(value = "主键", required = true, example = "1024")
@NotNull(message = "主键不能为空") @NotNull(message = "主键不能为空")
private Integer id; private Integer id;

View File

@ -1,24 +0,0 @@
package cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class ProductPropertyValueBaseVO {
@ApiModelProperty(value = "规格键id")
private Long propertyId;
@ApiModelProperty(value = "规格值名字")
private String name;
@ApiModelProperty(value = "状态: 1 开启 2 禁用")
private Integer status;
}

View File

@ -4,10 +4,13 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyAndValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyCreateReqVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyExcelVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyUpdateReqVO;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.*;
/** /**
* Convert * Convert

View File

@ -4,10 +4,12 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*;
/** /**
* Convert * Convert

View File

@ -5,9 +5,10 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyExportReqVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyPageReqVO;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.*;
/** /**
* Mapper * Mapper

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.product.dal.mysql.propertyvalue; package cn.iocoder.yudao.module.product.dal.mysql.property;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;

View File

@ -1,7 +1,8 @@
package cn.iocoder.yudao.module.product.service.property; package cn.iocoder.yudao.module.product.service.property;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.*; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyAndValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.*;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
import javax.validation.Valid; import javax.validation.Valid;
@ -61,14 +62,6 @@ public interface ProductPropertyService {
*/ */
PageResult<ProductPropertyDO> getPropertyPage(ProductPropertyPageReqVO pageReqVO); PageResult<ProductPropertyDO> getPropertyPage(ProductPropertyPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<ProductPropertyDO> getPropertyList(ProductPropertyExportReqVO exportReqVO);
/** /**
* *
* @param pageReqVO * @param pageReqVO

View File

@ -1,15 +1,16 @@
package cn.iocoder.yudao.module.product.service.property; package cn.iocoder.yudao.module.product.service.property;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.*; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyAndValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueCreateReqVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.*;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueRespVO; 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.convert.property.ProductPropertyConvert; import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert;
import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert; import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO;
import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper; import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper;
import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper; import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyValueMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -102,11 +103,6 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
return productPropertyMapper.selectPage(pageReqVO); return productPropertyMapper.selectPage(pageReqVO);
} }
@Override
public List<ProductPropertyDO> getPropertyList(ProductPropertyExportReqVO exportReqVO) {
return productPropertyMapper.selectList(exportReqVO);
}
@Override @Override
public PageResult<ProductPropertyAndValueRespVO> getPropertyListPage(ProductPropertyPageReqVO pageReqVO) { public PageResult<ProductPropertyAndValueRespVO> getPropertyListPage(ProductPropertyPageReqVO pageReqVO) {
//获取属性列表 //获取属性列表

View File

@ -4,8 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyAndValueRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyAndValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuBaseVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuBaseVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateOrUpdateReqVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateOrUpdateReqVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuPageReqVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuPageReqVO;

View File

@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.product.service.spu;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyAndValueRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyAndValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyViewRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyViewRespVO;
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuBaseVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuBaseVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateOrUpdateReqVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateOrUpdateReqVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuRespVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuRespVO;