Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
7dbbd412
提交
7dbbd412
authored
7月 28, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
商品规格 key 的迁移
上级
75876682
显示空白字符变更
内嵌
并排
正在显示
32 个修改的文件
包含
1010 行增加
和
174 行删除
+1010
-174
ProductAttrController.java
...nagementweb/controller/product/ProductAttrController.java
+67
-0
ProductSpuController.java
...anagementweb/controller/product/ProductSpuController.java
+7
-3
ProductAttrKeyCreateReqVO.java
...controller/product/vo/attr/ProductAttrKeyCreateReqVO.java
+24
-0
ProductAttrKeyPageReqVO.java
...b/controller/product/vo/attr/ProductAttrKeyPageReqVO.java
+22
-0
ProductAttrKeyRespVO.java
...tweb/controller/product/vo/attr/ProductAttrKeyRespVO.java
+20
-0
ProductAttrKeyUpdateReqVO.java
...controller/product/vo/attr/ProductAttrKeyUpdateReqVO.java
+27
-0
ProductAttrKeyConvert.java
.../managementweb/convert/product/ProductAttrKeyConvert.java
+34
-0
ProductAttrKeyManager.java
.../managementweb/manager/product/ProductAttrKeyManager.java
+97
-0
application.yml
management-web-app/src/main/resources/application.yml
+2
-0
ProductErrorCodeConstants.java
.../mall/productservice/enums/ProductErrorCodeConstants.java
+2
-4
ProductAttrRpc.java
.../iocoder/mall/productservice/rpc/attr/ProductAttrRpc.java
+63
-0
ProductAttrKeyCreateReqDTO.java
...oductservice/rpc/attr/dto/ProductAttrKeyCreateReqDTO.java
+28
-0
ProductAttrKeyPageReqDTO.java
...productservice/rpc/attr/dto/ProductAttrKeyPageReqDTO.java
+25
-0
ProductAttrKeyRespDTO.java
...ll/productservice/rpc/attr/dto/ProductAttrKeyRespDTO.java
+33
-0
ProductAttrKeyUpdateReqDTO.java
...oductservice/rpc/attr/dto/ProductAttrKeyUpdateReqDTO.java
+33
-0
ProductAttrConvert.java
.../mall/productservice/convert/attr/ProductAttrConvert.java
+46
-0
ProductAttrKeyMapper.java
...ctservice/dal/mysql/mapper/attr/ProductAttrKeyMapper.java
+15
-0
ProductAttrManager.java
.../mall/productservice/manager/attr/ProductAttrManager.java
+87
-0
ProductAttrRpcImpl.java
...oder/mall/productservice/rpc/attr/ProductAttrRpcImpl.java
+58
-0
ProductBrandRpcImpl.java
...er/mall/productservice/rpc/brand/ProductBrandRpcImpl.java
+2
-2
ProductCategoryRpcImpl.java
...l/productservice/rpc/category/ProductCategoryRpcImpl.java
+1
-1
ProductSpuRpcImpl.java
...ocoder/mall/productservice/rpc/spu/ProductSpuRpcImpl.java
+2
-2
ProductAttrService.java
.../mall/productservice/service/attr/ProductAttrService.java
+99
-4
ProductAttrKeyBO.java
...mall/productservice/service/attr/bo/ProductAttrKeyBO.java
+32
-0
ProductAttrKeyCreateBO.java
...roductservice/service/attr/bo/ProductAttrKeyCreateBO.java
+30
-0
ProductAttrKeyPageBO.java
.../productservice/service/attr/bo/ProductAttrKeyPageBO.java
+25
-0
ProductAttrKeyUpdateBO.java
...roductservice/service/attr/bo/ProductAttrKeyUpdateBO.java
+35
-0
application.yaml
...t/product-service-app/src/main/resources/application.yaml
+1
-6
AdminsProductBrandController.java
...t/rest/controller/brand/AdminsProductBrandController.java
+93
-0
ProductAttrService.java
.../java/cn/iocoder/mall/product/api/ProductAttrService.java
+0
-7
ProductAttrServiceImpl.java
.../iocoder/mall/product/service/ProductAttrServiceImpl.java
+0
-52
AdminsProductSpuController.java
...ication/controller/admins/AdminsProductSpuController.java
+0
-93
没有找到文件。
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/ProductAttrController.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyRespVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyUpdateReqVO
;
import
cn.iocoder.mall.managementweb.manager.product.ProductAttrKeyManager
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* 商品规格键 Controller
*/
@RestController
@RequestMapping
(
"/product-attr/"
)
@Api
(
tags
=
"商品规格键"
)
@Validated
public
class
ProductAttrController
{
@Autowired
private
ProductAttrKeyManager
productAttrKeyManager
;
@PostMapping
(
"/key/create"
)
@ApiOperation
(
"创建商品规格键"
)
public
CommonResult
<
Integer
>
createProductAttrKey
(
@Valid
ProductAttrKeyCreateReqVO
createVO
)
{
return
success
(
productAttrKeyManager
.
createProductAttrKey
(
createVO
));
}
@PostMapping
(
"/key/update"
)
@ApiOperation
(
"更新商品规格键"
)
public
CommonResult
<
Boolean
>
updateProductAttrKey
(
@Valid
ProductAttrKeyUpdateReqVO
updateVO
)
{
productAttrKeyManager
.
updateProductAttrKey
(
updateVO
);
return
success
(
true
);
}
@GetMapping
(
"/key/get"
)
@ApiOperation
(
"获得商品规格键"
)
@ApiImplicitParam
(
name
=
"productAttrKeyId"
,
value
=
"商品规格键编号"
,
required
=
true
)
public
CommonResult
<
ProductAttrKeyRespVO
>
getProductAttrKey
(
@RequestParam
(
"productAttrKeyId"
)
Integer
productAttrKeyId
)
{
return
success
(
productAttrKeyManager
.
getProductAttrKey
(
productAttrKeyId
));
}
@GetMapping
(
"/key/list"
)
@ApiOperation
(
"获得商品规格键列表"
)
@ApiImplicitParam
(
name
=
"productAttrKeyIds"
,
value
=
"商品规格键编号列表"
,
required
=
true
)
public
CommonResult
<
List
<
ProductAttrKeyRespVO
>>
listProductAttrKeys
(
@RequestParam
(
"productAttrKeyIds"
)
List
<
Integer
>
productAttrKeyIds
)
{
return
success
(
productAttrKeyManager
.
listProductAttrKeys
(
productAttrKeyIds
));
}
@GetMapping
(
"/key/page"
)
@ApiOperation
(
"获得商品规格键分页"
)
public
CommonResult
<
PageResult
<
ProductAttrKeyRespVO
>>
pageProductAttrKey
(
ProductAttrKeyPageReqVO
pageVO
)
{
return
success
(
productAttrKeyManager
.
pageProductAttrKey
(
pageVO
));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/ProductSpuController.java
浏览文件 @
7dbbd412
...
@@ -61,10 +61,14 @@ public class ProductSpuController {
...
@@ -61,10 +61,14 @@ public class ProductSpuController {
@GetMapping
(
"/page"
)
@GetMapping
(
"/page"
)
@ApiOperation
(
"获得商品 SPU 分页"
)
@ApiOperation
(
"获得商品 SPU 分页"
)
public
CommonResult
<
PageResult
<
ProductSpuRespVO
>>
pageProductSpu
(
ProductSpuPageReqVO
pageVO
)
{
public
CommonResult
<
PageResult
<
ProductSpuRespVO
>>
pageProductSpu
(
ProductSpuPageReqVO
pageVO
)
{
//
// 全部:无搜索条件
//
// 在售中:visible = true && hasQuantity = true
//
// 已售罄:visible = true && hasQuantity = false
// 仓库中:visible = false
return
success
(
productSpuManager
.
pageProductSpu
(
pageVO
));
return
success
(
productSpuManager
.
pageProductSpu
(
pageVO
));
}
}
// TODO 芋艿,删除功能暂时不做。主要原因是,关联的数据太多。删除带来的问题会比较大
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/attr/ProductAttrKeyCreateReqVO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
attr
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
@ApiModel
(
"商品规格键创建 Request VO"
)
@Data
public
class
ProductAttrKeyCreateReqVO
{
@ApiModelProperty
(
value
=
"规格键名称"
,
required
=
true
,
example
=
"尺寸"
)
@NotEmpty
(
message
=
"规格键名称不能为空"
)
private
String
name
;
@ApiModelProperty
(
value
=
"状态"
,
required
=
true
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举"
)
@NotNull
(
message
=
"状态不能为空"
)
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/attr/ProductAttrKeyPageReqVO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
attr
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
@ApiModel
(
"商品规格键分页 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
ProductAttrKeyPageReqVO
extends
PageParam
{
@ApiModelProperty
(
value
=
"规格键名称"
,
required
=
true
,
example
=
"尺寸"
,
notes
=
"模糊匹配"
)
private
String
name
;
@ApiModelProperty
(
value
=
"状态"
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举"
)
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/attr/ProductAttrKeyRespVO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
attr
;
import
lombok.*
;
import
io.swagger.annotations.*
;
import
java.util.*
;
@ApiModel
(
"商品规格键 Response VO"
)
@Data
public
class
ProductAttrKeyRespVO
{
@ApiModelProperty
(
value
=
"规格键编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"规格键名称"
,
required
=
true
,
example
=
"尺寸"
)
private
String
name
;
@ApiModelProperty
(
value
=
"状态"
,
required
=
true
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"创建时间"
,
required
=
true
)
private
Date
createTime
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/attr/ProductAttrKeyUpdateReqVO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
attr
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
@ApiModel
(
"商品规格键更新 Request VO"
)
@Data
public
class
ProductAttrKeyUpdateReqVO
{
@ApiModelProperty
(
value
=
"规格键编号"
,
required
=
true
,
example
=
"1"
)
@NotNull
(
message
=
"规格键编号不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"规格键名称"
,
required
=
true
,
example
=
"尺寸"
)
@NotEmpty
(
message
=
"规格键名称不能为空"
)
private
String
name
;
@ApiModelProperty
(
value
=
"状态"
,
required
=
true
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举"
)
@NotNull
(
message
=
"状态不能为空"
)
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/product/ProductAttrKeyConvert.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
product
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyRespVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyUpdateReqVO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyCreateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyRespDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyUpdateReqDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
ProductAttrKeyConvert
{
ProductAttrKeyConvert
INSTANCE
=
Mappers
.
getMapper
(
ProductAttrKeyConvert
.
class
);
ProductAttrKeyCreateReqDTO
convert
(
ProductAttrKeyCreateReqVO
bean
);
ProductAttrKeyUpdateReqDTO
convert
(
ProductAttrKeyUpdateReqVO
bean
);
ProductAttrKeyRespVO
convert
(
ProductAttrKeyRespDTO
bean
);
List
<
ProductAttrKeyRespVO
>
convertList
(
List
<
ProductAttrKeyRespDTO
>
list
);
PageResult
<
ProductAttrKeyRespVO
>
convertPage
(
PageResult
<
ProductAttrKeyRespDTO
>
page
);
ProductAttrKeyPageReqDTO
convert
(
ProductAttrKeyPageReqVO
bean
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/product/ProductAttrKeyManager.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
managementweb
.
manager
.
product
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyRespVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.attr.ProductAttrKeyUpdateReqVO
;
import
cn.iocoder.mall.managementweb.convert.product.ProductAttrKeyConvert
;
import
cn.iocoder.mall.productservice.rpc.attr.ProductAttrRpc
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyRespDTO
;
import
org.apache.dubbo.config.annotation.DubboReference
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 商品规格 Manager
*/
@Service
public
class
ProductAttrKeyManager
{
@DubboReference
(
version
=
"${dubbo.consumer.ProductAttrRpc.version}"
)
private
ProductAttrRpc
productAttrKeyRpc
;
/**
* 创建商品规格键
*
* @param createVO 创建商品规格键 VO
* @return 商品规格键
*/
public
Integer
createProductAttrKey
(
ProductAttrKeyCreateReqVO
createVO
)
{
CommonResult
<
Integer
>
createProductAttrKeyResult
=
productAttrKeyRpc
.
createProductAttrKey
(
ProductAttrKeyConvert
.
INSTANCE
.
convert
(
createVO
));
createProductAttrKeyResult
.
checkError
();
return
createProductAttrKeyResult
.
getData
();
}
/**
* 更新商品规格键
*
* @param updateVO 更新商品规格键 VO
*/
public
void
updateProductAttrKey
(
ProductAttrKeyUpdateReqVO
updateVO
)
{
CommonResult
<
Boolean
>
updateProductAttrKeyResult
=
productAttrKeyRpc
.
updateProductAttrKey
(
ProductAttrKeyConvert
.
INSTANCE
.
convert
(
updateVO
));
updateProductAttrKeyResult
.
checkError
();
}
/**
* 删除商品规格键
*
* @param productAttrKeyId 商品规格键编号
*/
public
void
deleteProductAttrKey
(
Integer
productAttrKeyId
)
{
CommonResult
<
Boolean
>
deleteProductAttrKeyResult
=
productAttrKeyRpc
.
deleteProductAttrKey
(
productAttrKeyId
);
deleteProductAttrKeyResult
.
checkError
();
}
/**
* 获得商品规格键
*
* @param productAttrKeyId 商品规格键编号
* @return 商品规格键
*/
public
ProductAttrKeyRespVO
getProductAttrKey
(
Integer
productAttrKeyId
)
{
CommonResult
<
ProductAttrKeyRespDTO
>
getProductAttrKeyResult
=
productAttrKeyRpc
.
getProductAttrKey
(
productAttrKeyId
);
getProductAttrKeyResult
.
checkError
();
return
ProductAttrKeyConvert
.
INSTANCE
.
convert
(
getProductAttrKeyResult
.
getData
());
}
/**
* 获得商品规格键列表
*
* @param productAttrKeyIds 商品规格键编号列表
* @return 商品规格键列表
*/
public
List
<
ProductAttrKeyRespVO
>
listProductAttrKeys
(
List
<
Integer
>
productAttrKeyIds
)
{
CommonResult
<
List
<
ProductAttrKeyRespDTO
>>
listProductAttrKeyResult
=
productAttrKeyRpc
.
listProductAttrKeys
(
productAttrKeyIds
);
listProductAttrKeyResult
.
checkError
();
return
ProductAttrKeyConvert
.
INSTANCE
.
convertList
(
listProductAttrKeyResult
.
getData
());
}
/**
* 获得商品规格键分页
*
* @param pageVO 商品规格键分页查询
* @return 商品规格键分页结果
*/
public
PageResult
<
ProductAttrKeyRespVO
>
pageProductAttrKey
(
ProductAttrKeyPageReqVO
pageVO
)
{
CommonResult
<
PageResult
<
ProductAttrKeyRespDTO
>>
pageProductAttrKeyResult
=
productAttrKeyRpc
.
pageProductAttrKey
(
ProductAttrKeyConvert
.
INSTANCE
.
convert
(
pageVO
));
pageProductAttrKeyResult
.
checkError
();
return
ProductAttrKeyConvert
.
INSTANCE
.
convertPage
(
pageProductAttrKeyResult
.
getData
());
}
}
management-web-app/src/main/resources/application.yml
浏览文件 @
7dbbd412
...
@@ -55,6 +55,8 @@ dubbo:
...
@@ -55,6 +55,8 @@ dubbo:
version
:
1.0.0
version
:
1.0.0
ProductSpuRpc
:
ProductSpuRpc
:
version
:
1.0.0
version
:
1.0.0
ProductAttrRpc
:
version
:
1.0.0
# Swagger 配置项
# Swagger 配置项
swagger
:
swagger
:
...
...
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/enums/ProductErrorCodeConstants.java
浏览文件 @
7dbbd412
...
@@ -26,11 +26,9 @@ public interface ProductErrorCodeConstants {
...
@@ -26,11 +26,9 @@ public interface ProductErrorCodeConstants {
// ========== PRODUCT ATTR + ATTR_VALUE 模块 ==========
// ========== PRODUCT ATTR + ATTR_VALUE 模块 ==========
ErrorCode
PRODUCT_ATTR_VALUE_NOT_EXIST
=
new
ErrorCode
(
1003003000
,
"商品属性值不存在"
);
ErrorCode
PRODUCT_ATTR_VALUE_NOT_EXIST
=
new
ErrorCode
(
1003003000
,
"商品属性值不存在"
);
ErrorCode
PRODUCT_ATTR_KEY_NOT_EXIST
=
new
ErrorCode
(
1003003001
,
"商品属性值不存在"
);
ErrorCode
PRODUCT_ATTR_KEY_NOT_EXIST
=
new
ErrorCode
(
1003003001
,
"商品属性键不存在"
);
ErrorCode
PRODUCT_ATTR_EXISTS
=
new
ErrorCode
(
1003003002
,
"商品规格已经存在"
);
ErrorCode
PRODUCT_ATTR_KEY_EXISTS
=
new
ErrorCode
(
1003003002
,
"商品规格键已经存在"
);
ErrorCode
PRODUCT_ATTR_STATUS_EQUALS
=
new
ErrorCode
(
1003003003
,
"商品规格已经是该状态"
);
ErrorCode
PRODUCT_ATTR_VALUE_EXISTS
=
new
ErrorCode
(
1003003004
,
"商品规格值已经存在"
);
ErrorCode
PRODUCT_ATTR_VALUE_EXISTS
=
new
ErrorCode
(
1003003004
,
"商品规格值已经存在"
);
ErrorCode
PRODUCT_ATTR_VALUE_STATUS_EQUALS
=
new
ErrorCode
(
1003003005
,
"商品规格值已经是该状态"
);
// ========== PRODUCT BRAND模块 ==========
// ========== PRODUCT BRAND模块 ==========
ErrorCode
PRODUCT_BRAND_NAME_EXIST
=
new
ErrorCode
(
1003004000
,
"商品品牌的名字已经存在"
);
ErrorCode
PRODUCT_BRAND_NAME_EXIST
=
new
ErrorCode
(
1003004000
,
"商品品牌的名字已经存在"
);
...
...
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/attr/ProductAttrRpc.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
attr
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyCreateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyRespDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyUpdateReqDTO
;
import
java.util.List
;
/**
* 商品规格 Rpc 接口
*/
public
interface
ProductAttrRpc
{
/**
* 创建商品规格键
*
* @param createDTO 创建商品规格键 DTO
* @return 商品规格键编号
*/
CommonResult
<
Integer
>
createProductAttrKey
(
ProductAttrKeyCreateReqDTO
createDTO
);
/**
* 更新商品规格键
*
* @param updateDTO 更新商品规格键 DTO
*/
CommonResult
<
Boolean
>
updateProductAttrKey
(
ProductAttrKeyUpdateReqDTO
updateDTO
);
/**
* 删除商品规格键
*
* @param productAttrKeyId 商品规格键编号
*/
CommonResult
<
Boolean
>
deleteProductAttrKey
(
Integer
productAttrKeyId
);
/**
* 获得商品规格键
*
* @param productAttrKeyId 商品规格键编号
* @return 商品规格键
*/
CommonResult
<
ProductAttrKeyRespDTO
>
getProductAttrKey
(
Integer
productAttrKeyId
);
/**
* 获得商品规格键列表
*
* @param productAttrKeyIds 商品规格键编号列表
* @return 商品规格键列表
*/
CommonResult
<
List
<
ProductAttrKeyRespDTO
>>
listProductAttrKeys
(
List
<
Integer
>
productAttrKeyIds
);
/**
* 获得商品规格键分页
*
* @param pageDTO 商品规格键分页查询
* @return 商品规格键分页结果
*/
CommonResult
<
PageResult
<
ProductAttrKeyRespDTO
>>
pageProductAttrKey
(
ProductAttrKeyPageReqDTO
pageDTO
);
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/attr/dto/ProductAttrKeyCreateReqDTO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
attr
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 商品规格键创建 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyCreateReqDTO
implements
Serializable
{
/**
* 规格键名称
*/
@NotEmpty
(
message
=
"规格键名称不能为空"
)
private
String
name
;
/**
* 状态
*/
@NotNull
(
message
=
"状态不能为空"
)
private
Integer
status
;
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/attr/dto/ProductAttrKeyPageReqDTO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
attr
.
dto
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* 商品规格键分页 Request DTO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyPageReqDTO
extends
PageParam
{
/**
* 规格键名称
*/
private
String
name
;
/**
* 状态
*/
private
Integer
status
;
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/attr/dto/ProductAttrKeyRespDTO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
attr
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 商品规格键 Response DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyRespDTO
implements
Serializable
{
/**
* 规格键编号
*/
private
Integer
id
;
/**
* 规格键名称
*/
private
String
name
;
/**
* 状态
*/
private
Integer
status
;
/**
* 创建时间
*/
private
Date
createTime
;
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/attr/dto/ProductAttrKeyUpdateReqDTO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
attr
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 商品规格键更新 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyUpdateReqDTO
implements
Serializable
{
/**
* 规格键编号
*/
@NotNull
(
message
=
"规格键编号不能为空"
)
private
Integer
id
;
/**
* 规格键名称
*/
@NotEmpty
(
message
=
"规格键名称不能为空"
)
private
String
name
;
/**
* 状态
*/
@NotNull
(
message
=
"状态不能为空"
)
private
Integer
status
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/convert/attr/ProductAttrConvert.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
convert
.
attr
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrKeyDO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyCreateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyRespDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyUpdateReqDTO
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyBO
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyCreateBO
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyPageBO
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyUpdateBO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
ProductAttrConvert
{
ProductAttrConvert
INSTANCE
=
Mappers
.
getMapper
(
ProductAttrConvert
.
class
);
ProductAttrKeyDO
convert
(
ProductAttrKeyCreateBO
bean
);
ProductAttrKeyBO
convert
(
ProductAttrKeyDO
bean
);
ProductAttrKeyDO
convert
(
ProductAttrKeyUpdateBO
bean
);
List
<
ProductAttrKeyBO
>
convertList
(
List
<
ProductAttrKeyDO
>
list
);
PageResult
<
ProductAttrKeyBO
>
convertPage
(
IPage
<
ProductAttrKeyDO
>
page
);
ProductAttrKeyCreateBO
convert
(
ProductAttrKeyCreateReqDTO
bean
);
ProductAttrKeyUpdateBO
convert
(
ProductAttrKeyUpdateReqDTO
bean
);
ProductAttrKeyRespDTO
convert
(
ProductAttrKeyBO
bean
);
List
<
ProductAttrKeyRespDTO
>
convertList02
(
List
<
ProductAttrKeyBO
>
list
);
ProductAttrKeyPageBO
convert
(
ProductAttrKeyPageReqDTO
bean
);
PageResult
<
ProductAttrKeyRespDTO
>
convertPage
(
PageResult
<
ProductAttrKeyBO
>
page
);
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/dal/mysql/mapper/attr/ProductAttrKeyMapper.java
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
dal
.
mysql
.
mapper
.
attr
;
package
cn
.
iocoder
.
mall
.
productservice
.
dal
.
mysql
.
mapper
.
attr
;
import
cn.iocoder.mall.mybatis.core.query.QueryWrapperX
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrKeyDO
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrKeyDO
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyPageBO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
@Repository
@Repository
public
interface
ProductAttrKeyMapper
extends
BaseMapper
<
ProductAttrKeyDO
>
{
public
interface
ProductAttrKeyMapper
extends
BaseMapper
<
ProductAttrKeyDO
>
{
default
IPage
<
ProductAttrKeyDO
>
selectPage
(
ProductAttrKeyPageBO
pageBO
)
{
return
selectPage
(
new
Page
<>(
pageBO
.
getPageNo
(),
pageBO
.
getPageSize
()),
new
QueryWrapperX
<
ProductAttrKeyDO
>().
likeIfPresent
(
"name"
,
pageBO
.
getName
())
.
eqIfPresent
(
"status"
,
pageBO
.
getStatus
()));
}
default
ProductAttrKeyDO
selectByName
(
String
name
)
{
return
selectOne
(
new
QueryWrapper
<
ProductAttrKeyDO
>().
eq
(
"name"
,
name
));
}
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/manager/attr/ProductAttrManager.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
manager
.
attr
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.convert.attr.ProductAttrConvert
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyCreateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyRespDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyUpdateReqDTO
;
import
cn.iocoder.mall.productservice.service.attr.ProductAttrService
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyBO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 商品规格 Manager
*/
@Service
public
class
ProductAttrManager
{
@Autowired
private
ProductAttrService
productAttrService
;
/**
* 创建商品规格键
*
* @param createDTO 创建商品规格键 DTO
* @return 商品规格键
*/
public
Integer
createProductAttrKey
(
ProductAttrKeyCreateReqDTO
createDTO
)
{
ProductAttrKeyBO
productAttrKeyBO
=
productAttrService
.
createProductAttrKey
(
ProductAttrConvert
.
INSTANCE
.
convert
(
createDTO
));
return
productAttrKeyBO
.
getId
();
}
/**
* 更新商品规格键
*
* @param updateDTO 更新商品规格键 DTO
*/
public
void
updateProductAttrKey
(
ProductAttrKeyUpdateReqDTO
updateDTO
)
{
productAttrService
.
updateProductAttrKey
(
ProductAttrConvert
.
INSTANCE
.
convert
(
updateDTO
));
}
/**
* 删除商品规格键
*
* @param productAttrKeyId 商品规格键编号
*/
public
void
deleteProductAttrKey
(
Integer
productAttrKeyId
)
{
productAttrService
.
deleteProductAttrKey
(
productAttrKeyId
);
}
/**
* 获得商品规格键
*
* @param productAttrKeyId 商品规格键编号
* @return 商品规格键
*/
public
ProductAttrKeyRespDTO
getProductAttrKey
(
Integer
productAttrKeyId
)
{
ProductAttrKeyBO
productAttrKeyBO
=
productAttrService
.
getProductAttrKey
(
productAttrKeyId
);
return
ProductAttrConvert
.
INSTANCE
.
convert
(
productAttrKeyBO
);
}
/**
* 获得商品规格键列表
*
* @param productAttrKeyIds 商品规格键编号列表
* @return 商品规格键列表
*/
public
List
<
ProductAttrKeyRespDTO
>
listProductAttrKeys
(
List
<
Integer
>
productAttrKeyIds
)
{
List
<
ProductAttrKeyBO
>
productAttrKeyBOs
=
productAttrService
.
listProductAttrKeys
(
productAttrKeyIds
);
return
ProductAttrConvert
.
INSTANCE
.
convertList02
(
productAttrKeyBOs
);
}
/**
* 获得商品规格键分页
*
* @param pageDTO 商品规格键分页查询
* @return 商品规格键分页结果
*/
public
PageResult
<
ProductAttrKeyRespDTO
>
pageProductAttrKey
(
ProductAttrKeyPageReqDTO
pageDTO
)
{
PageResult
<
ProductAttrKeyBO
>
pageResultBO
=
productAttrService
.
pageProductAttrKey
(
ProductAttrConvert
.
INSTANCE
.
convert
(
pageDTO
));
return
ProductAttrConvert
.
INSTANCE
.
convertPage
(
pageResultBO
);
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/rpc/attr/ProductAttrRpcImpl.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
attr
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.manager.attr.ProductAttrManager
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyCreateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyRespDTO
;
import
cn.iocoder.mall.productservice.rpc.attr.dto.ProductAttrKeyUpdateReqDTO
;
import
org.apache.dubbo.config.annotation.DubboService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* 商品规格 Rpc 实现类
*/
@DubboService
public
class
ProductAttrRpcImpl
implements
ProductAttrRpc
{
@Autowired
private
ProductAttrManager
productAttrManager
;
@Override
public
CommonResult
<
Integer
>
createProductAttrKey
(
ProductAttrKeyCreateReqDTO
createDTO
)
{
return
success
(
productAttrManager
.
createProductAttrKey
(
createDTO
));
}
@Override
public
CommonResult
<
Boolean
>
updateProductAttrKey
(
ProductAttrKeyUpdateReqDTO
updateDTO
)
{
productAttrManager
.
updateProductAttrKey
(
updateDTO
);
return
success
(
true
);
}
@Override
public
CommonResult
<
Boolean
>
deleteProductAttrKey
(
Integer
productAttrKeyId
)
{
productAttrManager
.
deleteProductAttrKey
(
productAttrKeyId
);
return
success
(
true
);
}
@Override
public
CommonResult
<
ProductAttrKeyRespDTO
>
getProductAttrKey
(
Integer
productAttrKeyId
)
{
return
success
(
productAttrManager
.
getProductAttrKey
(
productAttrKeyId
));
}
@Override
public
CommonResult
<
List
<
ProductAttrKeyRespDTO
>>
listProductAttrKeys
(
List
<
Integer
>
productAttrKeyIds
)
{
return
success
(
productAttrManager
.
listProductAttrKeys
(
productAttrKeyIds
));
}
@Override
public
CommonResult
<
PageResult
<
ProductAttrKeyRespDTO
>>
pageProductAttrKey
(
ProductAttrKeyPageReqDTO
pageDTO
)
{
return
success
(
productAttrManager
.
pageProductAttrKey
(
pageDTO
));
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/rpc/brand/ProductBrandRpcImpl.java
浏览文件 @
7dbbd412
...
@@ -7,7 +7,7 @@ import cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandCreateReqDTO;
...
@@ -7,7 +7,7 @@ import cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandCreateReqDTO;
import
cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandRespDTO
;
import
cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandRespDTO
;
import
cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandUpdateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.brand.dto.ProductBrandUpdateReqDTO
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.apache.dubbo.config.annotation.
Dubbo
Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
import
java.util.List
;
...
@@ -17,7 +17,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
...
@@ -17,7 +17,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
/**
/**
* 商品品牌 Rpc 实现类
* 商品品牌 Rpc 实现类
*/
*/
@
Service
(
version
=
"${dubbo.provider.ProductBrandRpc.version}"
)
@
DubboService
public
class
ProductBrandRpcImpl
implements
ProductBrandRpc
{
public
class
ProductBrandRpcImpl
implements
ProductBrandRpc
{
@Autowired
@Autowired
...
...
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/rpc/category/ProductCategoryRpcImpl.java
浏览文件 @
7dbbd412
...
@@ -16,7 +16,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
...
@@ -16,7 +16,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
/**
/**
* 商品分类 Rpc 实现类
* 商品分类 Rpc 实现类
*/
*/
@DubboService
(
version
=
"${dubbo.provider.ProductCategoryRpc.version}"
)
@DubboService
public
class
ProductCategoryRpcImpl
implements
ProductCategoryRpc
{
public
class
ProductCategoryRpcImpl
implements
ProductCategoryRpc
{
@Autowired
@Autowired
...
...
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/rpc/spu/ProductSpuRpcImpl.java
浏览文件 @
7dbbd412
...
@@ -7,7 +7,7 @@ import cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuAndSkuCreateReqDTO;
...
@@ -7,7 +7,7 @@ import cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuAndSkuCreateReqDTO;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuAndSkuUpdateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuAndSkuUpdateReqDTO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuPageReqDTO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuRespDTO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuRespDTO
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.apache.dubbo.config.annotation.
Dubbo
Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
import
java.util.List
;
...
@@ -17,7 +17,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
...
@@ -17,7 +17,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
/**
/**
* 商品 SPU Rpc 实现类
* 商品 SPU Rpc 实现类
*/
*/
@
Service
(
version
=
"${dubbo.provider.ProductSpuRpc.version}"
)
@
DubboService
public
class
ProductSpuRpcImpl
implements
ProductSpuRpc
{
public
class
ProductSpuRpcImpl
implements
ProductSpuRpc
{
@Autowired
@Autowired
...
...
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/attr/ProductAttrService.java
浏览文件 @
7dbbd412
...
@@ -3,23 +3,32 @@ package cn.iocoder.mall.productservice.service.attr;
...
@@ -3,23 +3,32 @@ package cn.iocoder.mall.productservice.service.attr;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.convert.attr.ProductAttrConvert
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrKeyDO
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrKeyDO
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrValueDO
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.attr.ProductAttrValueDO
;
import
cn.iocoder.mall.productservice.dal.mysql.mapper.attr.ProductAttrKeyMapper
;
import
cn.iocoder.mall.productservice.dal.mysql.mapper.attr.ProductAttrKeyMapper
;
import
cn.iocoder.mall.productservice.dal.mysql.mapper.attr.ProductAttrValueMapper
;
import
cn.iocoder.mall.productservice.dal.mysql.mapper.attr.ProductAttrValueMapper
;
import
cn.iocoder.mall.productservice.service.attr.bo.ProductAttrKeyValueBO
;
import
cn.iocoder.mall.productservice.service.attr.bo.*
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.validation.Valid
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
cn
.
iocoder
.
mall
.
productservice
.
enums
.
ProductErrorCodeConstants
.
PRODUCT_ATTR_KEY_NOT_EXIST
;
import
static
cn
.
iocoder
.
mall
.
productservice
.
enums
.
ProductErrorCodeConstants
.*;
import
static
cn
.
iocoder
.
mall
.
productservice
.
enums
.
ProductErrorCodeConstants
.
PRODUCT_ATTR_VALUE_NOT_EXIST
;
/**
* 商品规格 Service
*
* 包括商品键和值
*/
@Service
@Service
@Valid
public
class
ProductAttrService
{
public
class
ProductAttrService
{
@Autowired
@Autowired
...
@@ -54,11 +63,97 @@ public class ProductAttrService {
...
@@ -54,11 +63,97 @@ public class ProductAttrService {
}
}
}
}
// 返回成功
// 返回成功
Map
<
Integer
,
ProductAttrKeyDO
>
attrKeyMap
=
CollectionUtils
.
convertMap
(
attrKeys
,
ProductAttrKeyDO:
:
getId
,
attrKeyDO
->
attrKeyDO
);
// ProductAttrDO 的映射,方便查找。
Map
<
Integer
,
ProductAttrKeyDO
>
attrKeyMap
=
CollectionUtils
.
convertMap
(
attrKeys
,
ProductAttrKeyDO:
:
getId
,
attrKeyDO
->
attrKeyDO
);
// ProductAttrDO 的映射,方便查找。
return
attrValues
.
stream
().
map
(
attrValueDO
->
new
ProductAttrKeyValueBO
()
return
attrValues
.
stream
().
map
(
attrValueDO
->
new
ProductAttrKeyValueBO
()
.
setAttrKeyId
(
attrValueDO
.
getAttrId
()).
setAttrKeyName
(
attrKeyMap
.
get
(
attrValueDO
.
getAttrId
()).
getName
())
.
setAttrKeyId
(
attrValueDO
.
getAttrId
()).
setAttrKeyName
(
attrKeyMap
.
get
(
attrValueDO
.
getAttrId
()).
getName
())
.
setAttrValueId
(
attrValueDO
.
getId
()).
setAttrValueName
(
attrValueDO
.
getName
()))
.
setAttrValueId
(
attrValueDO
.
getId
()).
setAttrValueName
(
attrValueDO
.
getName
()))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
}
}
/**
* 创建商品规格键
*
* @param createBO 创建商品规格键 BO
* @return 商品规格键
*/
public
ProductAttrKeyBO
createProductAttrKey
(
@Valid
ProductAttrKeyCreateBO
createBO
)
{
// 校验规格键的名字是否重复
if
(
productAttrKeyMapper
.
selectByName
(
createBO
.
getName
())
!=
null
)
{
throw
ServiceExceptionUtil
.
exception
(
PRODUCT_ATTR_KEY_EXISTS
);
}
// 插入到数据库
ProductAttrKeyDO
productAttrKeyDO
=
ProductAttrConvert
.
INSTANCE
.
convert
(
createBO
);
productAttrKeyMapper
.
insert
(
productAttrKeyDO
);
// 返回
return
ProductAttrConvert
.
INSTANCE
.
convert
(
productAttrKeyDO
);
}
/**
* 更新商品规格键
*
* @param updateBO 更新商品规格键 BO
*/
public
void
updateProductAttrKey
(
@Valid
ProductAttrKeyUpdateBO
updateBO
)
{
// 校验规格键的名字是否重复
ProductAttrKeyDO
attrKeyDOByName
=
productAttrKeyMapper
.
selectByName
(
updateBO
.
getName
());
if
(
attrKeyDOByName
!=
null
&&
!
attrKeyDOByName
.
getId
().
equals
(
updateBO
.
getId
()))
{
throw
ServiceExceptionUtil
.
exception
(
PRODUCT_ATTR_KEY_EXISTS
);
}
// 校验更新的商品规格键是否存在
if
(
productAttrKeyMapper
.
selectById
(
updateBO
.
getId
())
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
PRODUCT_ATTR_KEY_NOT_EXIST
);
}
// 更新到数据库
ProductAttrKeyDO
updateObject
=
ProductAttrConvert
.
INSTANCE
.
convert
(
updateBO
);
productAttrKeyMapper
.
updateById
(
updateObject
);
}
/**
* 删除商品规格键
*
* @param productAttrKeyId 商品规格键编号
*/
public
void
deleteProductAttrKey
(
Integer
productAttrKeyId
)
{
// 校验删除的商品规格键是否存在
if
(
productAttrKeyMapper
.
selectById
(
productAttrKeyId
)
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
PRODUCT_ATTR_KEY_NOT_EXIST
);
}
// 标记删除
productAttrKeyMapper
.
deleteById
(
productAttrKeyId
);
}
/**
* 获得商品规格键
*
* @param productAttrKeyId 商品规格键编号
* @return 商品规格键
*/
public
ProductAttrKeyBO
getProductAttrKey
(
Integer
productAttrKeyId
)
{
ProductAttrKeyDO
productAttrKeyDO
=
productAttrKeyMapper
.
selectById
(
productAttrKeyId
);
return
ProductAttrConvert
.
INSTANCE
.
convert
(
productAttrKeyDO
);
}
/**
* 获得商品规格键列表
*
* @param productAttrKeyIds 商品规格键编号列表
* @return 商品规格键列表
*/
public
List
<
ProductAttrKeyBO
>
listProductAttrKeys
(
List
<
Integer
>
productAttrKeyIds
)
{
List
<
ProductAttrKeyDO
>
productAttrKeyDOs
=
productAttrKeyMapper
.
selectBatchIds
(
productAttrKeyIds
);
return
ProductAttrConvert
.
INSTANCE
.
convertList
(
productAttrKeyDOs
);
}
/**
* 获得商品规格键分页
*
* @param pageBO 商品规格键分页查询
* @return 商品规格键分页结果
*/
public
PageResult
<
ProductAttrKeyBO
>
pageProductAttrKey
(
ProductAttrKeyPageBO
pageBO
)
{
IPage
<
ProductAttrKeyDO
>
productAttrKeyDOPage
=
productAttrKeyMapper
.
selectPage
(
pageBO
);
return
ProductAttrConvert
.
INSTANCE
.
convertPage
(
productAttrKeyDOPage
);
}
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/attr/bo/ProductAttrKeyBO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
attr
.
bo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* 商品规格键 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyBO
{
/**
* 规格键编号
*/
private
Integer
id
;
/**
* 规格键名称
*/
private
String
name
;
/**
* 状态
*/
private
Integer
status
;
/**
* 创建时间
*/
private
Date
createTime
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/attr/bo/ProductAttrKeyCreateBO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
attr
.
bo
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
/**
* 商品规格键创建 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyCreateBO
{
/**
* 规格键名称
*/
@NotEmpty
(
message
=
"规格键名称不能为空"
)
private
String
name
;
/**
* 状态
*/
@NotNull
(
message
=
"状态不能为空"
)
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/attr/bo/ProductAttrKeyPageBO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
attr
.
bo
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* 商品规格键分页 BO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyPageBO
extends
PageParam
{
/**
* 规格键名称,模糊匹配
*/
private
String
name
;
/**
* 状态
*/
private
Integer
status
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/attr/bo/ProductAttrKeyUpdateBO.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
attr
.
bo
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
/**
* 商品规格键更新 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductAttrKeyUpdateBO
{
/**
* 规格键编号
*/
@NotNull
(
message
=
"规格键编号不能为空"
)
private
Integer
id
;
/**
* 规格键名称
*/
@NotEmpty
(
message
=
"规格键名称不能为空"
)
private
String
name
;
/**
* 状态
*/
@NotNull
(
message
=
"状态不能为空"
)
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
}
product-service-project/product-service-app/src/main/resources/application.yaml
浏览文件 @
7dbbd412
...
@@ -34,12 +34,7 @@ dubbo:
...
@@ -34,12 +34,7 @@ dubbo:
provider
:
provider
:
filter
:
-exception
filter
:
-exception
validation
:
true
# 开启 Provider 参数校验
validation
:
true
# 开启 Provider 参数校验
ProductCategoryRpc
:
version
:
1.0.0
# 服务的版本号
version
:
1.0.0
ProductBrandRpc
:
version
:
1.0.0
ProductSpuRpc
:
version
:
1.0.0
# Dubbo 服务消费者的配置
# Dubbo 服务消费者的配置
consumer
:
consumer
:
ErrorCodeRpc
:
ErrorCodeRpc
:
...
...
product/product-rest/src/main/java/cn/iocoder/mall/product/rest/controller/brand/AdminsProductBrandController.java
0 → 100644
浏览文件 @
7dbbd412
package
cn
.
iocoder
.
mall
.
product
.
rest
.
controller
.
brand
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.product.biz.bo.brand.ProductBrandBO
;
import
cn.iocoder.mall.product.biz.dto.brand.ProductBrandAddDTO
;
import
cn.iocoder.mall.product.biz.dto.brand.ProductBrandPageDTO
;
import
cn.iocoder.mall.product.biz.dto.brand.ProductBrandUpdateDTO
;
import
cn.iocoder.mall.product.biz.service.brand.ProductBrandService
;
import
cn.iocoder.mall.product.rest.convert.brand.ProductBrandConvert
;
import
cn.iocoder.mall.product.rest.request.brand.ProductBrandAddRequest
;
import
cn.iocoder.mall.product.rest.request.brand.ProductBrandPageRequest
;
import
cn.iocoder.mall.product.rest.request.brand.ProductBrandUpdateRequest
;
import
cn.iocoder.mall.product.rest.response.brand.AdminsProductBrandResponse
;
import
cn.iocoder.mall.security.core.context.AdminSecurityContextHolder
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
@RestController
@RequestMapping
(
"admins/brand"
)
@Api
(
"管理员 - 商品品牌 API"
)
@AllArgsConstructor
public
class
AdminsProductBrandController
{
private
final
ProductBrandService
productBrandService
;
@PostMapping
(
"/add"
)
@ApiOperation
(
"创建品牌"
)
public
CommonResult
<
AdminsProductBrandResponse
>
add
(
@Validated
ProductBrandAddRequest
addRequest
)
{
// 创建 ProductBrandAddDTO 对象
ProductBrandAddDTO
productBrandAddDTO
=
ProductBrandConvert
.
INSTANCE
.
convertAdd
(
addRequest
);
// 保存品牌
ProductBrandBO
result
=
productBrandService
.
addProductBrand
(
AdminSecurityContextHolder
.
getContext
().
getAdminId
(),
productBrandAddDTO
);
// 返回结果
return
success
(
ProductBrandConvert
.
INSTANCE
.
convert
(
result
));
}
@PostMapping
(
"/update"
)
@ApiOperation
(
"更新商品"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"品牌主键"
,
required
=
true
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"name"
,
value
=
"品牌名称"
,
required
=
true
,
example
=
"安踏"
),
@ApiImplicitParam
(
name
=
"description"
,
value
=
"品牌描述"
,
required
=
true
,
example
=
"安踏拖鞋"
),
@ApiImplicitParam
(
name
=
"picUrl"
,
value
=
"品牌图片"
,
required
=
true
,
example
=
"http://www.iocoder.cn"
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"状态 1开启 2禁用"
,
required
=
true
,
example
=
"1"
)
})
// TODO FROM 芋艿 to q2118cs:只要改成了 bean 接收,就不用在写 @ApiImplicitParam 注解啦,直接在 bean 里写就 ok 啦
public
CommonResult
<
Boolean
>
update
(
@Validated
ProductBrandUpdateRequest
updateRequest
)
{
// 创建 productBrandUpdateDTO 对象
ProductBrandUpdateDTO
productBrandUpdateDTO
=
ProductBrandConvert
.
INSTANCE
.
convertUpdate
(
updateRequest
);
// 更新商品
return
success
(
productBrandService
.
updateProductBrand
(
AdminSecurityContextHolder
.
getContext
().
getAdminId
(),
productBrandUpdateDTO
));
}
@GetMapping
(
"/get"
)
@ApiOperation
(
"获取品牌"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"品牌主键"
,
required
=
true
,
example
=
"1"
)
})
public
CommonResult
<
AdminsProductBrandResponse
>
add
(
@RequestParam
(
"id"
)
Integer
id
)
{
// 保存商品
ProductBrandBO
result
=
productBrandService
.
getProductBrand
(
id
);
// 返回结果
return
success
(
ProductBrandConvert
.
INSTANCE
.
convert
(
result
));
}
@GetMapping
(
"/page"
)
@ApiOperation
(
"获得品牌分页"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"name"
,
value
=
"品牌名称"
,
required
=
true
,
example
=
"安踏"
),
@ApiImplicitParam
(
name
=
"description"
,
value
=
"品牌描述"
,
required
=
true
,
example
=
"安踏拖鞋"
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"状态 1开启 2禁用"
,
required
=
true
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"pageNo"
,
value
=
"页码"
,
required
=
true
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"页面大小"
,
required
=
true
,
example
=
"10"
)
})
public
CommonResult
<
PageResult
<
AdminsProductBrandResponse
>>
attrPage
(
ProductBrandPageRequest
pageRequest
)
{
// 创建 ProductBrandPageDTO 对象
ProductBrandPageDTO
productBrandPageDTO
=
ProductBrandConvert
.
INSTANCE
.
convertPageRequest
(
pageRequest
);
// 查询分页
PageResult
<
ProductBrandBO
>
productBrandPage
=
productBrandService
.
getProductBrandPage
(
productBrandPageDTO
);
PageResult
<
AdminsProductBrandResponse
>
adminPageResponse
=
ProductBrandConvert
.
INSTANCE
.
convertPage
(
productBrandPage
);
return
CommonResult
.
success
(
adminPageResponse
);
}
}
product/product-service-api/src/main/java/cn/iocoder/mall/product/api/ProductAttrService.java
浏览文件 @
7dbbd412
...
@@ -23,13 +23,6 @@ public interface ProductAttrService {
...
@@ -23,13 +23,6 @@ public interface ProductAttrService {
*/
*/
List
<
ProductAttrSimpleBO
>
getProductAttrList
();
List
<
ProductAttrSimpleBO
>
getProductAttrList
();
ProductAttrBO
addProductAttr
(
Integer
adminId
,
ProductAttrAddDTO
productAttrAddDTO
);
Boolean
updateProductAttr
(
Integer
adminId
,
ProductAttrUpdateDTO
productAttrUpdateDTO
);
Boolean
updateProductAttrStatus
(
Integer
adminId
,
Integer
productAttrId
,
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
Integer
status
);
ProductAttrValueBO
addProductAttrValue
(
Integer
adminId
,
ProductAttrValueAddDTO
productAttrValueAddDTO
);
ProductAttrValueBO
addProductAttrValue
(
Integer
adminId
,
ProductAttrValueAddDTO
productAttrValueAddDTO
);
Boolean
updateProductAttrValue
(
Integer
adminId
,
ProductAttrValueUpdateDTO
productAttrValueUpdateDTO
);
Boolean
updateProductAttrValue
(
Integer
adminId
,
ProductAttrValueUpdateDTO
productAttrValueUpdateDTO
);
...
...
product/product-service-impl/src/main/java/cn/iocoder/mall/product/service/ProductAttrServiceImpl.java
浏览文件 @
7dbbd412
...
@@ -74,58 +74,6 @@ public class ProductAttrServiceImpl implements ProductAttrService {
...
@@ -74,58 +74,6 @@ public class ProductAttrServiceImpl implements ProductAttrService {
return
attrs
;
return
attrs
;
}
}
@Override
public
ProductAttrBO
addProductAttr
(
Integer
adminId
,
ProductAttrAddDTO
productAttrAddDTO
)
{
// 校验规格名不重复
if
(
productAttrMapper
.
selectByName
(
productAttrAddDTO
.
getName
())
!=
null
)
{
throw
ServiceExceptionUtil
.
exception
(
ProductErrorCodeEnum
.
PRODUCT_ATTR_EXISTS
.
getCode
());
}
// 插入到数据库
ProductAttrDO
productAttrDO
=
ProductAttrConvert
.
INSTANCE
.
convert
(
productAttrAddDTO
)
.
setStatus
(
ProductAttrConstants
.
ATTR_STATUS_ENABLE
);
productAttrDO
.
setCreateTime
(
new
Date
());
productAttrDO
.
setDeleted
(
DeletedStatusEnum
.
DELETED_NO
.
getValue
());
productAttrMapper
.
insert
(
productAttrDO
);
// 返回成功
return
ProductAttrConvert
.
INSTANCE
.
convert
(
productAttrDO
);
}
@Override
public
Boolean
updateProductAttr
(
Integer
adminId
,
ProductAttrUpdateDTO
productAttrUpdateDTO
)
{
// 校验存在
if
(
productAttrMapper
.
selectById
(
productAttrUpdateDTO
.
getId
())
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
ProductErrorCodeEnum
.
PRODUCT_ATTR_NOT_EXIST
.
getCode
());
}
// 校验规格名不重复
ProductAttrDO
existsAttrDO
=
productAttrMapper
.
selectByName
(
productAttrUpdateDTO
.
getName
());
if
(
existsAttrDO
!=
null
&&
!
existsAttrDO
.
getId
().
equals
(
productAttrUpdateDTO
.
getId
()))
{
throw
ServiceExceptionUtil
.
exception
(
ProductErrorCodeEnum
.
PRODUCT_ATTR_EXISTS
.
getCode
());
}
// 更新到数据库
ProductAttrDO
updateProductAttr
=
ProductAttrConvert
.
INSTANCE
.
convert
(
productAttrUpdateDTO
);
productAttrMapper
.
update
(
updateProductAttr
);
// 返回成功
return
true
;
}
@Override
public
Boolean
updateProductAttrStatus
(
Integer
adminId
,
Integer
productAttrId
,
Integer
status
)
{
// 校验存在
ProductAttrDO
productAttrDO
=
productAttrMapper
.
selectById
(
productAttrId
);
if
(
productAttrDO
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
ProductErrorCodeEnum
.
PRODUCT_ATTR_NOT_EXIST
.
getCode
());
}
// 校验状态
if
(
productAttrDO
.
getStatus
().
equals
(
status
))
{
throw
ServiceExceptionUtil
.
exception
(
ProductErrorCodeEnum
.
PRODUCT_ATTR_STATUS_EQUALS
.
getCode
());
}
// 更新到数据库
ProductAttrDO
updateProductAttr
=
new
ProductAttrDO
().
setId
(
productAttrId
).
setStatus
(
status
);
productAttrMapper
.
update
(
updateProductAttr
);
// 返回成功
return
true
;
}
@Override
@Override
public
ProductAttrValueBO
addProductAttrValue
(
Integer
adminId
,
ProductAttrValueAddDTO
productAttrValueAddDTO
)
{
public
ProductAttrValueBO
addProductAttrValue
(
Integer
adminId
,
ProductAttrValueAddDTO
productAttrValueAddDTO
)
{
// 校验规格名不重复
// 校验规格名不重复
...
...
product/product-start/src/main/java/cn/iocoder/mall/product/application/controller/admins/AdminsProductSpuController.java
浏览文件 @
7dbbd412
...
@@ -29,66 +29,6 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
...
@@ -29,66 +29,6 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
@Api
(
"商品 SPU + SKU"
)
@Api
(
"商品 SPU + SKU"
)
public
class
AdminsProductSpuController
{
public
class
AdminsProductSpuController
{
@Reference
(
validation
=
"true"
,
version
=
"${dubbo.provider.ProductSpuService.version}"
)
private
ProductSpuService
productSpuService
;
@PostMapping
(
"/spu/add"
)
@ApiOperation
(
"创建商品"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"name"
,
value
=
"SPU 名字"
,
required
=
true
,
example
=
"厮大牛逼"
),
@ApiImplicitParam
(
name
=
"sellPoint"
,
value
=
"卖点"
,
required
=
true
,
example
=
"各种 MQ 骚操作"
),
@ApiImplicitParam
(
name
=
"description"
,
value
=
"描述"
,
required
=
true
,
example
=
"你就说强不强 MQ 骚操作"
),
@ApiImplicitParam
(
name
=
"cid"
,
value
=
"分类编号"
,
required
=
true
,
example
=
"反正我是信了"
),
@ApiImplicitParam
(
name
=
"picUrls"
,
value
=
"商品主图地址的数组"
,
required
=
true
,
example
=
"http://www.iocoder.cn"
),
@ApiImplicitParam
(
name
=
"visible"
,
value
=
"是否上架商品(是否可见)"
,
required
=
true
,
example
=
"true"
),
@ApiImplicitParam
(
name
=
"skuStr"
,
value
=
"SKU 字符串"
,
required
=
true
,
example
=
"[{\"attrs\": [1,3 ], \"price\": 1, \"quantity\": 100, \"picUrl\": \"http://www.iocoder.cn\"}]"
),
})
public
CommonResult
<
AdminsProductSpuDetailVO
>
add
(
@RequestParam
(
"name"
)
String
name
,
@RequestParam
(
"sellPoint"
)
String
sellPoint
,
@RequestParam
(
"description"
)
String
description
,
@RequestParam
(
"cid"
)
Integer
cid
,
@RequestParam
(
"picUrls"
)
List
<
String
>
picUrls
,
@RequestParam
(
"visible"
)
Boolean
visible
,
@RequestParam
(
"skuStr"
)
String
skuStr
)
{
// TODO 芋艿,因为考虑不使用 json 接受参数,所以这里手动转。
// 创建 ProductSpuAddDTO 对象
ProductSpuAddDTO
productSpuAddDTO
=
new
ProductSpuAddDTO
().
setName
(
name
).
setSellPoint
(
sellPoint
)
.
setDescription
(
description
).
setCid
(
cid
).
setPicUrls
(
picUrls
).
setVisible
(
visible
)
.
setSkus
(
parseSkus
(
skuStr
,
ProductSkuAddOrUpdateDTO
.
class
));
// 保存商品
ProductSpuDetailBO
result
=
productSpuService
.
addProductSpu
(
AdminSecurityContextHolder
.
getContext
().
getAdminId
(),
productSpuAddDTO
);
// 返回结果
return
success
(
ProductSpuConvert
.
INSTANCE
.
convert
(
result
));
}
@PostMapping
(
"/spu/update"
)
@ApiOperation
(
"更新商品"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"SPU 编号"
,
required
=
true
,
example
=
"100"
),
@ApiImplicitParam
(
name
=
"name"
,
value
=
"SPU 名字"
,
required
=
true
,
example
=
"厮大牛逼"
),
@ApiImplicitParam
(
name
=
"sellPoint"
,
value
=
"卖点"
,
required
=
true
,
example
=
"各种 MQ 骚操作"
),
@ApiImplicitParam
(
name
=
"description"
,
value
=
"描述"
,
required
=
true
,
example
=
"你就说强不强 MQ 骚操作"
),
@ApiImplicitParam
(
name
=
"cid"
,
value
=
"分类编号"
,
required
=
true
,
example
=
"反正我是信了"
),
@ApiImplicitParam
(
name
=
"picUrls"
,
value
=
"商品主图地址的数组"
,
required
=
true
,
example
=
"http://www.iocoder.cn"
),
@ApiImplicitParam
(
name
=
"visible"
,
value
=
"是否上架商品(是否可见)"
,
required
=
true
,
example
=
"true"
),
@ApiImplicitParam
(
name
=
"skuStr"
,
value
=
"SKU 字符串"
,
required
=
true
,
example
=
"[{\"attrs\": [1,3 ], \"price\": 1, \"quantity\": 100, \"picUrl\": \"http://www.iocoder.cn\"}]"
),
})
public
CommonResult
<
Boolean
>
update
(
@RequestParam
(
"id"
)
Integer
id
,
@RequestParam
(
"name"
)
String
name
,
@RequestParam
(
"sellPoint"
)
String
sellPoint
,
@RequestParam
(
"description"
)
String
description
,
@RequestParam
(
"cid"
)
Integer
cid
,
@RequestParam
(
"picUrls"
)
List
<
String
>
picUrls
,
@RequestParam
(
"visible"
)
Boolean
visible
,
@RequestParam
(
"skuStr"
)
String
skuStr
)
{
// TODO 芋艿,因为考虑不使用 json 接受参数,所以这里手动转。
// 创建 ProductSpuUpdateDTO 对象
ProductSpuUpdateDTO
productSpuUpdateDTO
=
new
ProductSpuUpdateDTO
().
setId
(
id
).
setName
(
name
).
setSellPoint
(
sellPoint
)
.
setDescription
(
description
).
setCid
(
cid
).
setPicUrls
(
picUrls
).
setVisible
(
visible
)
.
setSkus
(
parseSkus
(
skuStr
,
ProductSkuAddOrUpdateDTO
.
class
));
// 更新商品
productSpuService
.
updateProductSpu
(
AdminSecurityContextHolder
.
getContext
().
getAdminId
(),
productSpuUpdateDTO
);
return
success
(
true
);
}
@PostMapping
(
"/spu/update_sort"
)
@PostMapping
(
"/spu/update_sort"
)
@ApiOperation
(
"更新商品的排序"
)
@ApiOperation
(
"更新商品的排序"
)
public
CommonResult
<
Boolean
>
updateSort
(
@RequestParam
(
"id"
)
Integer
id
,
public
CommonResult
<
Boolean
>
updateSort
(
@RequestParam
(
"id"
)
Integer
id
,
...
@@ -96,39 +36,6 @@ public class AdminsProductSpuController {
...
@@ -96,39 +36,6 @@ public class AdminsProductSpuController {
return
success
(
productSpuService
.
updateProductSpuSort
(
AdminSecurityContextHolder
.
getContext
().
getAdminId
(),
id
,
sort
));
return
success
(
productSpuService
.
updateProductSpuSort
(
AdminSecurityContextHolder
.
getContext
().
getAdminId
(),
id
,
sort
));
}
}
// TODO 芋艿,删除功能暂时不做。主要原因是,关联的数据太多。删除带来的问题会比较大
@GetMapping
(
"/spu/page"
)
@ApiOperation
(
"商品 SPU 分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"name"
,
value
=
"商品名称,模糊匹配"
,
example
=
"小王"
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"状态"
,
example
=
"可选值:1-在售中;2-已售罄;3-仓库中;"
),
@ApiImplicitParam
(
name
=
"cid"
,
value
=
"商品分类编号"
,
example
=
"10"
),
@ApiImplicitParam
(
name
=
"pageNo"
,
value
=
"页码,从 1 开始"
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"每页条数"
,
required
=
true
,
example
=
"10"
),
})
public
CommonResult
<
AdminsProductSpuPageVO
>
spuPage
(
@RequestParam
(
value
=
"name"
,
required
=
false
)
String
name
,
@RequestParam
(
value
=
"status"
)
Integer
status
,
@RequestParam
(
value
=
"cid"
,
required
=
false
)
Integer
cid
,
@RequestParam
(
value
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
)
{
// 创建 ProductSpuPageDTO 对象
ProductSpuPageDTO
productSpuPageDTO
=
new
ProductSpuPageDTO
().
setName
(
name
).
setCid
(
cid
).
setPageNo
(
pageNo
).
setPageSize
(
pageSize
);
switch
(
status
)
{
case
1
:
productSpuPageDTO
.
setVisible
(
true
).
setHasQuantity
(
true
);
break
;
case
2
:
productSpuPageDTO
.
setVisible
(
true
).
setHasQuantity
(
false
);
break
;
case
3
:
productSpuPageDTO
.
setVisible
(
false
);
break
;
}
ProductSpuPageBO
result
=
productSpuService
.
getProductSpuPage
(
productSpuPageDTO
);
return
success
(
ProductSpuConvert
.
INSTANCE
.
convert2
(
result
));
}
@GetMapping
(
"/spu/search_list"
)
@GetMapping
(
"/spu/search_list"
)
@ApiOperation
(
"商品 SPU 搜索列表"
)
@ApiOperation
(
"商品 SPU 搜索列表"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论