Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
ac5ab0b7
提交
ac5ab0b7
authored
7月 26, 2020
作者:
wuwenbin
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master-new' into master-new
上级
7aa25e83
d503d8b2
隐藏空白字符变更
内嵌
并排
正在显示
29 个修改的文件
包含
1089 行增加
和
154 行删除
+1089
-154
ProductSpuController.java
...anagementweb/controller/product/ProductSpuController.java
+67
-0
ProductSpuCreateReqVO.java
...tweb/controller/product/vo/spu/ProductSpuCreateReqVO.java
+42
-0
ProductSpuPageReqVO.java
...entweb/controller/product/vo/spu/ProductSpuPageReqVO.java
+33
-0
ProductSpuRespVO.java
...gementweb/controller/product/vo/spu/ProductSpuRespVO.java
+36
-0
ProductSpuUpdateReqVO.java
...tweb/controller/product/vo/spu/ProductSpuUpdateReqVO.java
+45
-0
ProductSpuConvert.java
...mall/managementweb/convert/product/ProductSpuConvert.java
+34
-0
ProductSpuManager.java
...mall/managementweb/manager/product/ProductSpuManager.java
+84
-0
application.yml
management-web-app/src/main/resources/application.yml
+2
-0
ProductSpuRpc.java
...cn/iocoder/mall/productservice/rpc/spu/ProductSpuRpc.java
+56
-0
ProductSpuCreateReqDTO.java
...ll/productservice/rpc/spu/dto/ProductSpuCreateReqDTO.java
+63
-0
ProductSpuPageReqDTO.java
...mall/productservice/rpc/spu/dto/ProductSpuPageReqDTO.java
+25
-0
ProductSpuRespDTO.java
...er/mall/productservice/rpc/spu/dto/ProductSpuRespDTO.java
+15
-32
ProductSpuUpdateReqDTO.java
...ll/productservice/rpc/spu/dto/ProductSpuUpdateReqDTO.java
+68
-0
ProductSpuConvert.java
...er/mall/productservice/convert/spu/ProductSpuConvert.java
+46
-0
ProductSkuDO.java
...productservice/dal/mysql/dataobject/spu/ProductSkuDO.java
+1
-2
ProductSpuDO.java
...productservice/dal/mysql/dataobject/spu/ProductSpuDO.java
+3
-1
ProductSpuMapper.java
...productservice/dal/mysql/mapper/spu/ProductSpuMapper.java
+27
-0
ProductSpuManager.java
...er/mall/productservice/manager/spu/ProductSpuManager.java
+77
-0
ProductSpuRpcImpl.java
...ocoder/mall/productservice/rpc/spu/ProductSpuRpcImpl.java
+52
-0
ProductSpuService.java
...er/mall/productservice/service/spu/ProductSpuService.java
+94
-0
ProductSpuBO.java
...oder/mall/productservice/service/spu/bo/ProductSpuBO.java
+61
-0
ProductSpuCreateBO.java
...all/productservice/service/spu/bo/ProductSpuCreateBO.java
+63
-0
ProductSpuPageBO.java
.../mall/productservice/service/spu/bo/ProductSpuPageBO.java
+25
-0
ProductSpuUpdateBO.java
...all/productservice/service/spu/bo/ProductSpuUpdateBO.java
+68
-0
application.yaml
...t/product-service-app/src/main/resources/application.yaml
+2
-0
pom.xml
product/pom.xml
+0
-3
ProductSkuDO.java
...java/cn/iocoder/mall/product/dataobject/ProductSkuDO.java
+0
-59
UsersProductCategoryController.java
...tion/controller/users/UsersProductCategoryController.java
+0
-37
UsersProductCategoryVO.java
.../product/application/vo/users/UsersProductCategoryVO.java
+0
-20
没有找到文件。
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/ProductSpuController.java
0 → 100644
浏览文件 @
ac5ab0b7
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.spu.ProductSpuCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuRespVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuUpdateReqVO
;
import
cn.iocoder.mall.managementweb.manager.product.ProductSpuManager
;
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
;
/**
* 商品 SPU Controller
*/
@RestController
@RequestMapping
(
"/product_spu"
)
@Api
(
tags
=
"商品 SPU"
)
@Validated
public
class
ProductSpuController
{
@Autowired
private
ProductSpuManager
productSpuManager
;
@PostMapping
(
"/create"
)
@ApiOperation
(
"创建商品 SPU"
)
public
CommonResult
<
Integer
>
createProductSpu
(
@Valid
ProductSpuCreateReqVO
createVO
)
{
return
success
(
productSpuManager
.
createProductSpu
(
createVO
));
}
@PostMapping
(
"/update"
)
@ApiOperation
(
"更新商品 SPU"
)
public
CommonResult
<
Boolean
>
updateProductSpu
(
@Valid
ProductSpuUpdateReqVO
updateVO
)
{
productSpuManager
.
updateProductSpu
(
updateVO
);
return
success
(
true
);
}
@GetMapping
(
"/get"
)
@ApiOperation
(
"获得商品 SPU"
)
@ApiImplicitParam
(
name
=
"productSpuId"
,
value
=
"商品 SPU编号"
,
required
=
true
)
public
CommonResult
<
ProductSpuRespVO
>
getProductSpu
(
@RequestParam
(
"productSpuId"
)
Integer
productSpuId
)
{
return
success
(
productSpuManager
.
getProductSpu
(
productSpuId
));
}
@GetMapping
(
"/list"
)
@ApiOperation
(
"获得商品 SPU 列表"
)
@ApiImplicitParam
(
name
=
"productSpuIds"
,
value
=
"商品 SPU编号列表"
,
required
=
true
)
public
CommonResult
<
List
<
ProductSpuRespVO
>>
listProductSpus
(
@RequestParam
(
"productSpuIds"
)
List
<
Integer
>
productSpuIds
)
{
return
success
(
productSpuManager
.
listProductSpus
(
productSpuIds
));
}
@GetMapping
(
"/page"
)
@ApiOperation
(
"获得商品 SPU 分页"
)
public
CommonResult
<
PageResult
<
ProductSpuRespVO
>>
pageProductSpu
(
ProductSpuPageReqVO
pageVO
)
{
return
success
(
productSpuManager
.
pageProductSpu
(
pageVO
));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/spu/ProductSpuCreateReqVO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
spu
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
@ApiModel
(
"商品 SPU创建 Request VO"
)
@Data
public
class
ProductSpuCreateReqVO
{
@ApiModelProperty
(
value
=
"SPU 名字"
,
required
=
true
)
@NotEmpty
(
message
=
"SPU 名字不能为空"
)
private
String
name
;
@ApiModelProperty
(
value
=
"卖点"
,
required
=
true
)
@NotEmpty
(
message
=
"卖点不能为空"
)
private
String
sellPoint
;
@ApiModelProperty
(
value
=
"描述"
,
required
=
true
)
@NotEmpty
(
message
=
"描述不能为空"
)
private
String
description
;
@ApiModelProperty
(
value
=
"分类编号"
,
required
=
true
)
@NotNull
(
message
=
"分类编号不能为空"
)
private
Integer
cid
;
@ApiModelProperty
(
value
=
"商品主图地址"
,
required
=
true
)
@NotEmpty
(
message
=
"商品主图地址不能为空"
)
private
String
picUrls
;
@ApiModelProperty
(
value
=
"是否上架商品"
,
required
=
true
)
@NotNull
(
message
=
"是否上架商品不能为空"
)
private
Integer
visible
;
@ApiModelProperty
(
value
=
"排序字段"
,
required
=
true
)
@NotNull
(
message
=
"排序字段不能为空"
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"价格"
,
required
=
true
)
@NotNull
(
message
=
"价格不能为空"
)
private
Integer
price
;
@ApiModelProperty
(
value
=
"库存数量"
,
required
=
true
)
@NotNull
(
message
=
"库存数量不能为空"
)
private
Integer
quantity
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/spu/ProductSpuPageReqVO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
spu
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
@ApiModel
(
"商品 SPU分页 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
ProductSpuPageReqVO
extends
PageParam
{
@ApiModelProperty
(
value
=
"SPU 名字"
,
required
=
true
)
private
String
name
;
@ApiModelProperty
(
value
=
"卖点"
,
required
=
true
)
private
String
sellPoint
;
@ApiModelProperty
(
value
=
"描述"
,
required
=
true
)
private
String
description
;
@ApiModelProperty
(
value
=
"分类编号"
,
required
=
true
)
private
Integer
cid
;
@ApiModelProperty
(
value
=
"商品主图地址"
,
required
=
true
)
private
String
picUrls
;
@ApiModelProperty
(
value
=
"是否上架商品"
,
required
=
true
)
private
Integer
visible
;
@ApiModelProperty
(
value
=
"排序字段"
,
required
=
true
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"价格"
,
required
=
true
)
private
Integer
price
;
@ApiModelProperty
(
value
=
"库存数量"
,
required
=
true
)
private
Integer
quantity
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/spu/ProductSpuRespVO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
spu
;
import
lombok.*
;
import
io.swagger.annotations.*
;
import
java.util.*
;
@ApiModel
(
"商品 SPU Response VO"
)
@Data
public
class
ProductSpuRespVO
{
@ApiModelProperty
(
value
=
"SPU 编号"
,
required
=
true
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"SPU 名字"
,
required
=
true
)
private
String
name
;
@ApiModelProperty
(
value
=
"卖点"
,
required
=
true
)
private
String
sellPoint
;
@ApiModelProperty
(
value
=
"描述"
,
required
=
true
)
private
String
description
;
@ApiModelProperty
(
value
=
"分类编号"
,
required
=
true
)
private
Integer
cid
;
@ApiModelProperty
(
value
=
"商品主图地址"
,
required
=
true
)
private
String
picUrls
;
@ApiModelProperty
(
value
=
"是否上架商品"
,
required
=
true
)
private
Integer
visible
;
@ApiModelProperty
(
value
=
"排序字段"
,
required
=
true
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"价格"
,
required
=
true
)
private
Integer
price
;
@ApiModelProperty
(
value
=
"库存数量"
,
required
=
true
)
private
Integer
quantity
;
@ApiModelProperty
(
value
=
"创建时间"
,
required
=
true
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"最后更新时间"
,
required
=
true
)
private
Date
updateTime
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/product/vo/spu/ProductSpuUpdateReqVO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
product
.
vo
.
spu
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
@ApiModel
(
"商品 SPU更新 Request VO"
)
@Data
public
class
ProductSpuUpdateReqVO
{
@ApiModelProperty
(
value
=
"SPU 编号"
,
required
=
true
)
@NotNull
(
message
=
"SPU 编号不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"SPU 名字"
,
required
=
true
)
@NotEmpty
(
message
=
"SPU 名字不能为空"
)
private
String
name
;
@ApiModelProperty
(
value
=
"卖点"
,
required
=
true
)
@NotEmpty
(
message
=
"卖点不能为空"
)
private
String
sellPoint
;
@ApiModelProperty
(
value
=
"描述"
,
required
=
true
)
@NotEmpty
(
message
=
"描述不能为空"
)
private
String
description
;
@ApiModelProperty
(
value
=
"分类编号"
,
required
=
true
)
@NotNull
(
message
=
"分类编号不能为空"
)
private
Integer
cid
;
@ApiModelProperty
(
value
=
"商品主图地址"
,
required
=
true
)
@NotEmpty
(
message
=
"商品主图地址不能为空"
)
private
String
picUrls
;
@ApiModelProperty
(
value
=
"是否上架商品"
,
required
=
true
)
@NotNull
(
message
=
"是否上架商品不能为空"
)
private
Integer
visible
;
@ApiModelProperty
(
value
=
"排序字段"
,
required
=
true
)
@NotNull
(
message
=
"排序字段不能为空"
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"价格"
,
required
=
true
)
@NotNull
(
message
=
"价格不能为空"
)
private
Integer
price
;
@ApiModelProperty
(
value
=
"库存数量"
,
required
=
true
)
@NotNull
(
message
=
"库存数量不能为空"
)
private
Integer
quantity
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/product/ProductSpuConvert.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
product
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuRespVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuUpdateReqVO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuCreateReqDTO
;
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.ProductSpuUpdateReqDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
ProductSpuConvert
{
ProductSpuConvert
INSTANCE
=
Mappers
.
getMapper
(
ProductSpuConvert
.
class
);
ProductSpuCreateReqDTO
convert
(
ProductSpuCreateReqVO
bean
);
ProductSpuUpdateReqDTO
convert
(
ProductSpuUpdateReqVO
bean
);
ProductSpuRespVO
convert
(
ProductSpuRespDTO
bean
);
List
<
ProductSpuRespVO
>
convertList
(
List
<
ProductSpuRespDTO
>
list
);
PageResult
<
ProductSpuRespVO
>
convertPage
(
PageResult
<
ProductSpuRespDTO
>
page
);
ProductSpuPageReqDTO
convert
(
ProductSpuPageReqVO
bean
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/product/ProductSpuManager.java
0 → 100644
浏览文件 @
ac5ab0b7
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.spu.ProductSpuCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuRespVO
;
import
cn.iocoder.mall.managementweb.controller.product.vo.spu.ProductSpuUpdateReqVO
;
import
cn.iocoder.mall.managementweb.convert.product.ProductSpuConvert
;
import
cn.iocoder.mall.productservice.rpc.spu.ProductSpuRpc
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuRespDTO
;
import
org.apache.dubbo.config.annotation.DubboReference
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 商品 SPU Manager
*/
@Service
public
class
ProductSpuManager
{
@DubboReference
(
version
=
"${dubbo.consumer.ProductSpuRpc.version}"
)
private
ProductSpuRpc
productSpuRpc
;
/**
* 创建商品 SPU
*
* @param createVO 创建商品 SPU VO
* @return 商品 SPU
*/
public
Integer
createProductSpu
(
ProductSpuCreateReqVO
createVO
)
{
CommonResult
<
Integer
>
createProductSpuResult
=
productSpuRpc
.
createProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
createVO
));
createProductSpuResult
.
checkError
();
return
createProductSpuResult
.
getData
();
}
/**
* 更新商品 SPU
*
* @param updateVO 更新商品 SPU VO
*/
public
void
updateProductSpu
(
ProductSpuUpdateReqVO
updateVO
)
{
CommonResult
<
Boolean
>
updateProductSpuResult
=
productSpuRpc
.
updateProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
updateVO
));
updateProductSpuResult
.
checkError
();
}
/**
* 获得商品 SPU
*
* @param productSpuId 商品 SPU编号
* @return 商品 SPU
*/
public
ProductSpuRespVO
getProductSpu
(
Integer
productSpuId
)
{
CommonResult
<
ProductSpuRespDTO
>
getProductSpuResult
=
productSpuRpc
.
getProductSpu
(
productSpuId
);
getProductSpuResult
.
checkError
();
return
ProductSpuConvert
.
INSTANCE
.
convert
(
getProductSpuResult
.
getData
());
}
/**
* 获得商品 SPU列表
*
* @param productSpuIds 商品 SPU编号列表
* @return 商品 SPU列表
*/
public
List
<
ProductSpuRespVO
>
listProductSpus
(
List
<
Integer
>
productSpuIds
)
{
CommonResult
<
List
<
ProductSpuRespDTO
>>
listProductSpuResult
=
productSpuRpc
.
listProductSpus
(
productSpuIds
);
listProductSpuResult
.
checkError
();
return
ProductSpuConvert
.
INSTANCE
.
convertList
(
listProductSpuResult
.
getData
());
}
/**
* 获得商品 SPU分页
*
* @param pageVO 商品 SPU分页查询
* @return 商品 SPU分页结果
*/
public
PageResult
<
ProductSpuRespVO
>
pageProductSpu
(
ProductSpuPageReqVO
pageVO
)
{
CommonResult
<
PageResult
<
ProductSpuRespDTO
>>
pageProductSpuResult
=
productSpuRpc
.
pageProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
pageVO
));
pageProductSpuResult
.
checkError
();
return
ProductSpuConvert
.
INSTANCE
.
convertPage
(
pageProductSpuResult
.
getData
());
}
}
management-web-app/src/main/resources/application.yml
浏览文件 @
ac5ab0b7
...
@@ -53,6 +53,8 @@ dubbo:
...
@@ -53,6 +53,8 @@ dubbo:
version
:
1.0.0
version
:
1.0.0
ProductBrandRpc
:
ProductBrandRpc
:
version
:
1.0.0
version
:
1.0.0
ProductSpuRpc
:
version
:
1.0.0
# Swagger 配置项
# Swagger 配置项
swagger
:
swagger
:
...
...
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/ProductSpuRpc.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuCreateReqDTO
;
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.ProductSpuUpdateReqDTO
;
import
java.util.List
;
/**
* 商品 SPU Rpc 接口
*/
public
interface
ProductSpuRpc
{
/**
* 创建商品 SPU
*
* @param createDTO 创建商品 SPU DTO
* @return 商品 SPU编号
*/
CommonResult
<
Integer
>
createProductSpu
(
ProductSpuCreateReqDTO
createDTO
);
/**
* 更新商品 SPU
*
* @param updateDTO 更新商品 SPU DTO
*/
CommonResult
<
Boolean
>
updateProductSpu
(
ProductSpuUpdateReqDTO
updateDTO
);
/**
* 获得商品 SPU
*
* @param productSpuId 商品 SPU 编号
* @return 商品 SPU
*/
CommonResult
<
ProductSpuRespDTO
>
getProductSpu
(
Integer
productSpuId
);
/**
* 获得商品 SPU列表
*
* @param productSpuIds 商品 SPU 编号列表
* @return 商品 SPU 列表
*/
CommonResult
<
List
<
ProductSpuRespDTO
>>
listProductSpus
(
List
<
Integer
>
productSpuIds
);
/**
* 获得商品 SPU分页
*
* @param pageDTO 商品 SPU分页查询
* @return 商品 SPU分页结果
*/
CommonResult
<
PageResult
<
ProductSpuRespDTO
>>
pageProductSpu
(
ProductSpuPageReqDTO
pageDTO
);
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/dto/ProductSpuCreateReqDTO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* 商品 SPU 创建 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuCreateReqDTO
{
/**
* SPU 名字
*/
@NotEmpty
(
message
=
"SPU 名字不能为空"
)
private
String
name
;
/**
* 卖点
*/
@NotEmpty
(
message
=
"卖点不能为空"
)
private
String
sellPoint
;
/**
* 描述
*/
@NotEmpty
(
message
=
"描述不能为空"
)
private
String
description
;
/**
* 分类编号
*/
@NotNull
(
message
=
"分类编号不能为空"
)
private
Integer
cid
;
/**
* 商品主图地址
*/
@NotEmpty
(
message
=
"商品主图地址不能为空"
)
private
List
<
String
>
picUrls
;
/**
* 是否上架商品
*/
@NotNull
(
message
=
"是否上架商品不能为空"
)
private
Integer
visible
;
/**
* 排序字段
*/
@NotNull
(
message
=
"排序字段不能为空"
)
private
Integer
sort
;
/**
* 价格
*/
@NotNull
(
message
=
"价格不能为空"
)
private
Integer
price
;
/**
* 库存数量
*/
@NotNull
(
message
=
"库存数量不能为空"
)
private
Integer
quantity
;
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/dto/ProductSpuPageReqDTO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
.
dto
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* 商品 SPU 分页 Request DTO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
ProductSpuPageReqDTO
extends
PageParam
{
/**
* SPU 名字
*/
private
String
name
;
/**
* 是否有库存
*/
private
Boolean
hasQuantity
;
}
product
/product-service-impl/src/main/java/cn/iocoder/mall/product/dataobject/ProductSpuD
O.java
→
product
-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/dto/ProductSpuRespDT
O.java
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
product
.
dataobject
;
package
cn
.
iocoder
.
mall
.
product
service
.
rpc
.
spu
.
dto
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* 商品 SPU
* 商品 SPU 信息 Response DTO
*
*/
* TODO 芋艿,后面增加商品普通参数。例如说,正面材料,背面材料,屏幕尺寸。
*/
@Data
@Data
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
public
class
ProductSpu
DO
extends
DeletableD
O
{
public
class
ProductSpu
RespDT
O
{
/**
/**
* SPU 编号
*
商品
SPU 编号
*/
*/
private
Integer
id
;
private
Integer
id
;
// TODO 店铺编号 先不考虑,因为第一个版本,不做 B2B2C
// ========== 基本信息 =========
/**
/**
* SPU 名字
* SPU 名字
*/
*/
...
@@ -39,40 +35,27 @@ public class ProductSpuDO extends DeletableDO {
...
@@ -39,40 +35,27 @@ public class ProductSpuDO extends DeletableDO {
private
Integer
cid
;
private
Integer
cid
;
/**
/**
* 商品主图地址
* 商品主图地址
*
* 数组,以逗号分隔
*
* 建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
*/
*/
private
String
picUrls
;
private
List
<
String
>
picUrls
;
// TODO 运费信息
// ========== 其他信息 =========
/**
/**
* 是否上架商品(是否可见)。
* 是否上架商品
*
* true 为已上架
* false 为已下架
*/
*/
private
Boolean
visible
;
private
Integer
visible
;
/**
/**
* 排序字段
* 排序字段
*/
*/
private
Integer
sort
;
private
Integer
sort
;
// ========== Sku 相关字段 =========
/**
/**
* 价格
* 价格
*
* 目前的计算方式是,以 Sku 最小价格为准
*/
*/
private
Integer
price
;
private
Integer
price
;
/**
/**
* 库存数量
* 库存数量
*
* 目前的计算方式是,以 Sku 库存累加为准
*/
*/
private
Integer
quantity
;
private
Integer
quantity
;
/**
* 创建时间
*/
private
Date
createTime
;
}
}
product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/dto/ProductSpuUpdateReqDTO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* 商品 SPU 更新 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuUpdateReqDTO
{
/**
* 商品 SPU 编号
*/
@NotNull
(
message
=
"商品 SPU 编号不能为空"
)
private
Integer
id
;
/**
* SPU 名字
*/
@NotEmpty
(
message
=
"SPU 名字不能为空"
)
private
String
name
;
/**
* 卖点
*/
@NotEmpty
(
message
=
"卖点不能为空"
)
private
String
sellPoint
;
/**
* 描述
*/
@NotEmpty
(
message
=
"描述不能为空"
)
private
String
description
;
/**
* 分类编号
*/
@NotNull
(
message
=
"分类编号不能为空"
)
private
Integer
cid
;
/**
* 商品主图地址
*/
@NotEmpty
(
message
=
"商品主图地址不能为空"
)
private
List
<
String
>
picUrls
;
/**
* 是否上架商品
*/
@NotNull
(
message
=
"是否上架商品不能为空"
)
private
Integer
visible
;
/**
* 排序字段
*/
@NotNull
(
message
=
"排序字段不能为空"
)
private
Integer
sort
;
/**
* 价格
*/
@NotNull
(
message
=
"价格不能为空"
)
private
Integer
price
;
/**
* 库存数量
*/
@NotNull
(
message
=
"库存数量不能为空"
)
private
Integer
quantity
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/convert/spu/ProductSpuConvert.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
convert
.
spu
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.spu.ProductSpuDO
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuCreateReqDTO
;
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.ProductSpuUpdateReqDTO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuBO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuCreateBO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuPageBO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuUpdateBO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
ProductSpuConvert
{
ProductSpuConvert
INSTANCE
=
Mappers
.
getMapper
(
ProductSpuConvert
.
class
);
ProductSpuDO
convert
(
ProductSpuCreateBO
bean
);
ProductSpuBO
convert
(
ProductSpuDO
bean
);
ProductSpuDO
convert
(
ProductSpuUpdateBO
bean
);
List
<
ProductSpuBO
>
convertList
(
List
<
ProductSpuDO
>
list
);
PageResult
<
ProductSpuBO
>
convertPage
(
IPage
<
ProductSpuDO
>
page
);
ProductSpuCreateBO
convert
(
ProductSpuCreateReqDTO
bean
);
ProductSpuUpdateBO
convert
(
ProductSpuUpdateReqDTO
bean
);
ProductSpuRespDTO
convert
(
ProductSpuBO
bean
);
List
<
ProductSpuRespDTO
>
convertList02
(
List
<
ProductSpuBO
>
list
);
ProductSpuPageBO
convert
(
ProductSpuPageReqDTO
bean
);
PageResult
<
ProductSpuRespDTO
>
convertPage
(
PageResult
<
ProductSpuBO
>
page
);
}
product
/product-biz/src/main/java/cn/iocoder/mall/product/biz
/dataobject/spu/ProductSkuDO.java
→
product
-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/dal/mysql
/dataobject/spu/ProductSkuDO.java
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
product
.
biz
.
dataobject
.
spu
;
package
cn
.
iocoder
.
mall
.
product
service
.
dal
.
mysql
.
dataobject
.
spu
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
cn.iocoder.mall.product.biz.dataobject.attr.ProductAttrDO
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
...
...
product
/product-biz/src/main/java/cn/iocoder/mall/product/biz
/dataobject/spu/ProductSpuDO.java
→
product
-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/dal/mysql
/dataobject/spu/ProductSpuDO.java
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
product
.
biz
.
dataobject
.
spu
;
package
cn
.
iocoder
.
mall
.
product
service
.
dal
.
mysql
.
dataobject
.
spu
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
/**
/**
...
@@ -10,6 +11,7 @@ import lombok.experimental.Accessors;
...
@@ -10,6 +11,7 @@ import lombok.experimental.Accessors;
* TODO 芋艿,后面增加商品普通参数。例如说,正面材料,背面材料,屏幕尺寸。
* TODO 芋艿,后面增加商品普通参数。例如说,正面材料,背面材料,屏幕尺寸。
*/
*/
@Data
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
public
class
ProductSpuDO
extends
DeletableDO
{
public
class
ProductSpuDO
extends
DeletableDO
{
...
...
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/dal/mysql/mapper/spu/ProductSpuMapper.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
dal
.
mysql
.
mapper
.
spu
;
import
cn.iocoder.mall.mybatis.core.query.QueryWrapperX
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.spu.ProductSpuDO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuPageBO
;
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
;
@Repository
public
interface
ProductSpuMapper
extends
BaseMapper
<
ProductSpuDO
>
{
default
IPage
<
ProductSpuDO
>
selectPage
(
ProductSpuPageBO
pageBO
)
{
QueryWrapperX
<
ProductSpuDO
>
query
=
new
QueryWrapperX
<
ProductSpuDO
>().
likeIfPresent
(
"name"
,
pageBO
.
getName
());
// 库存过滤
if
(
pageBO
.
getHasQuantity
()
!=
null
)
{
if
(
pageBO
.
getHasQuantity
())
{
query
.
gt
(
"quantity"
,
0
);
}
else
{
query
.
eq
(
"quantity"
,
0
);
}
}
return
selectPage
(
new
Page
<>(
pageBO
.
getPageNo
(),
pageBO
.
getPageSize
()),
query
);
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/manager/spu/ProductSpuManager.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
manager
.
spu
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.convert.spu.ProductSpuConvert
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuCreateReqDTO
;
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.ProductSpuUpdateReqDTO
;
import
cn.iocoder.mall.productservice.service.spu.ProductSpuService
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuBO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 商品 SPU Manager
*/
@Service
public
class
ProductSpuManager
{
@Autowired
private
ProductSpuService
productSpuService
;
/**
* 创建商品 SPU
*
* @param createDTO 创建商品 SPU DTO
* @return 商品 SPU
*/
public
Integer
createProductSpu
(
ProductSpuCreateReqDTO
createDTO
)
{
ProductSpuBO
productSpuBO
=
productSpuService
.
createProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
createDTO
));
return
productSpuBO
.
getId
();
}
/**
* 更新商品 SPU
*
* @param updateDTO 更新商品 SPU DTO
*/
public
void
updateProductSpu
(
ProductSpuUpdateReqDTO
updateDTO
)
{
productSpuService
.
updateProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
updateDTO
));
}
/**
* 获得商品 SPU
*
* @param productSpuId 商品 SPU编号
* @return 商品 SPU
*/
public
ProductSpuRespDTO
getProductSpu
(
Integer
productSpuId
)
{
ProductSpuBO
productSpuBO
=
productSpuService
.
getProductSpu
(
productSpuId
);
return
ProductSpuConvert
.
INSTANCE
.
convert
(
productSpuBO
);
}
/**
* 获得商品 SPU列表
*
* @param productSpuIds 商品 SPU编号列表
* @return 商品 SPU列表
*/
public
List
<
ProductSpuRespDTO
>
listProductSpus
(
List
<
Integer
>
productSpuIds
)
{
List
<
ProductSpuBO
>
productSpuBOs
=
productSpuService
.
listProductSpus
(
productSpuIds
);
return
ProductSpuConvert
.
INSTANCE
.
convertList02
(
productSpuBOs
);
}
/**
* 获得商品 SPU分页
*
* @param pageDTO 商品 SPU分页查询
* @return 商品 SPU分页结果
*/
public
PageResult
<
ProductSpuRespDTO
>
pageProductSpu
(
ProductSpuPageReqDTO
pageDTO
)
{
PageResult
<
ProductSpuBO
>
pageResultBO
=
productSpuService
.
pageProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
pageDTO
));
return
ProductSpuConvert
.
INSTANCE
.
convertPage
(
pageResultBO
);
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/rpc/spu/ProductSpuRpcImpl.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.manager.spu.ProductSpuManager
;
import
cn.iocoder.mall.productservice.rpc.spu.dto.ProductSpuCreateReqDTO
;
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.ProductSpuUpdateReqDTO
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* 商品 SPU Rpc 实现类
*/
@Service
(
version
=
"${dubbo.provider.ProductSpuRpc.version}"
)
public
class
ProductSpuRpcImpl
implements
ProductSpuRpc
{
@Autowired
private
ProductSpuManager
productSpuManager
;
@Override
public
CommonResult
<
Integer
>
createProductSpu
(
ProductSpuCreateReqDTO
createDTO
)
{
return
success
(
productSpuManager
.
createProductSpu
(
createDTO
));
}
@Override
public
CommonResult
<
Boolean
>
updateProductSpu
(
ProductSpuUpdateReqDTO
updateDTO
)
{
productSpuManager
.
updateProductSpu
(
updateDTO
);
return
success
(
true
);
}
@Override
public
CommonResult
<
ProductSpuRespDTO
>
getProductSpu
(
Integer
productSpuId
)
{
return
success
(
productSpuManager
.
getProductSpu
(
productSpuId
));
}
@Override
public
CommonResult
<
List
<
ProductSpuRespDTO
>>
listProductSpus
(
List
<
Integer
>
productSpuIds
)
{
return
success
(
productSpuManager
.
listProductSpus
(
productSpuIds
));
}
@Override
public
CommonResult
<
PageResult
<
ProductSpuRespDTO
>>
pageProductSpu
(
ProductSpuPageReqDTO
pageDTO
)
{
return
success
(
productSpuManager
.
pageProductSpu
(
pageDTO
));
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/spu/ProductSpuService.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
spu
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.productservice.convert.spu.ProductSpuConvert
;
import
cn.iocoder.mall.productservice.dal.mysql.dataobject.spu.ProductSpuDO
;
import
cn.iocoder.mall.productservice.dal.mysql.mapper.spu.ProductSpuMapper
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuBO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuCreateBO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuPageBO
;
import
cn.iocoder.mall.productservice.service.spu.bo.ProductSpuUpdateBO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.Valid
;
import
java.util.List
;
import
static
cn
.
iocoder
.
mall
.
productservice
.
enums
.
ProductErrorCodeConstants
.
PRODUCT_SPU_NOT_EXISTS
;
/**
* 商品 SPU Service
*/
@Service
@Validated
public
class
ProductSpuService
{
@Autowired
private
ProductSpuMapper
productSpuMapper
;
/**
* 创建商品 SPU
*
* @param createBO 创建商品 SPU BO
* @return 商品 SPU
*/
public
ProductSpuBO
createProductSpu
(
@Valid
ProductSpuCreateBO
createBO
)
{
// 插入到数据库
ProductSpuDO
productSpuDO
=
ProductSpuConvert
.
INSTANCE
.
convert
(
createBO
);
productSpuMapper
.
insert
(
productSpuDO
);
// 返回
return
ProductSpuConvert
.
INSTANCE
.
convert
(
productSpuDO
);
}
/**
* 更新商品 SPU
*
* @param updateBO 更新商品 SPU BO
*/
public
void
updateProductSpu
(
@Valid
ProductSpuUpdateBO
updateBO
)
{
// 校验更新的商品 SPU是否存在
if
(
productSpuMapper
.
selectById
(
updateBO
.
getId
())
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
PRODUCT_SPU_NOT_EXISTS
);
}
// 更新到数据库
ProductSpuDO
updateObject
=
ProductSpuConvert
.
INSTANCE
.
convert
(
updateBO
);
productSpuMapper
.
updateById
(
updateObject
);
}
/**
* 获得商品 SPU
*
* @param productSpuId 商品 SPU编号
* @return 商品 SPU
*/
public
ProductSpuBO
getProductSpu
(
Integer
productSpuId
)
{
ProductSpuDO
productSpuDO
=
productSpuMapper
.
selectById
(
productSpuId
);
return
ProductSpuConvert
.
INSTANCE
.
convert
(
productSpuDO
);
}
/**
* 获得商品 SPU列表
*
* @param productSpuIds 商品 SPU编号列表
* @return 商品 SPU列表
*/
public
List
<
ProductSpuBO
>
listProductSpus
(
List
<
Integer
>
productSpuIds
)
{
List
<
ProductSpuDO
>
productSpuDOs
=
productSpuMapper
.
selectBatchIds
(
productSpuIds
);
return
ProductSpuConvert
.
INSTANCE
.
convertList
(
productSpuDOs
);
}
/**
* 获得商品 SPU分页
*
* @param pageBO 商品 SPU分页查询
* @return 商品 SPU分页结果
*/
public
PageResult
<
ProductSpuBO
>
pageProductSpu
(
ProductSpuPageBO
pageBO
)
{
IPage
<
ProductSpuDO
>
productSpuDOPage
=
productSpuMapper
.
selectPage
(
pageBO
);
return
ProductSpuConvert
.
INSTANCE
.
convertPage
(
productSpuDOPage
);
}
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/spu/bo/ProductSpuBO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
spu
.
bo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.util.List
;
/**
* 商品 SPU 信息 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuBO
{
/**
* 商品 SPU 编号
*/
private
Integer
id
;
/**
* SPU 名字
*/
private
String
name
;
/**
* 卖点
*/
private
String
sellPoint
;
/**
* 描述
*/
private
String
description
;
/**
* 分类编号
*/
private
Integer
cid
;
/**
* 商品主图地址
*/
private
List
<
String
>
picUrls
;
/**
* 是否上架商品
*/
private
Integer
visible
;
/**
* 排序字段
*/
private
Integer
sort
;
/**
* 价格
*/
private
Integer
price
;
/**
* 库存数量
*/
private
Integer
quantity
;
/**
* 创建时间
*/
private
Date
createTime
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/spu/bo/ProductSpuCreateBO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
spu
.
bo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* 商品 SPU 创建 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuCreateBO
{
/**
* SPU 名字
*/
@NotEmpty
(
message
=
"SPU 名字不能为空"
)
private
String
name
;
/**
* 卖点
*/
@NotEmpty
(
message
=
"卖点不能为空"
)
private
String
sellPoint
;
/**
* 描述
*/
@NotEmpty
(
message
=
"描述不能为空"
)
private
String
description
;
/**
* 分类编号
*/
@NotNull
(
message
=
"分类编号不能为空"
)
private
Integer
cid
;
/**
* 商品主图地址
*/
@NotEmpty
(
message
=
"商品主图地址不能为空"
)
private
List
<
String
>
picUrls
;
/**
* 是否上架商品
*/
@NotNull
(
message
=
"是否上架商品不能为空"
)
private
Integer
visible
;
/**
* 排序字段
*/
@NotNull
(
message
=
"排序字段不能为空"
)
private
Integer
sort
;
/**
* 价格
*/
@NotNull
(
message
=
"价格不能为空"
)
private
Integer
price
;
/**
* 库存数量
*/
@NotNull
(
message
=
"库存数量不能为空"
)
private
Integer
quantity
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/spu/bo/ProductSpuPageBO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
spu
.
bo
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* 商品 SPU 分页 BO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
ProductSpuPageBO
extends
PageParam
{
/**
* SPU 名字
*/
private
String
name
;
/**
* 是否有库存
*/
private
Boolean
hasQuantity
;
}
product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/spu/bo/ProductSpuUpdateBO.java
0 → 100644
浏览文件 @
ac5ab0b7
package
cn
.
iocoder
.
mall
.
productservice
.
service
.
spu
.
bo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* 商品 SPU 更新 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuUpdateBO
{
/**
* 商品 SPU 编号
*/
@NotNull
(
message
=
"商品 SPU 编号不能为空"
)
private
Integer
id
;
/**
* SPU 名字
*/
@NotEmpty
(
message
=
"SPU 名字不能为空"
)
private
String
name
;
/**
* 卖点
*/
@NotEmpty
(
message
=
"卖点不能为空"
)
private
String
sellPoint
;
/**
* 描述
*/
@NotEmpty
(
message
=
"描述不能为空"
)
private
String
description
;
/**
* 分类编号
*/
@NotNull
(
message
=
"分类编号不能为空"
)
private
Integer
cid
;
/**
* 商品主图地址
*/
@NotEmpty
(
message
=
"商品主图地址不能为空"
)
private
List
<
String
>
picUrls
;
/**
* 是否上架商品
*/
@NotNull
(
message
=
"是否上架商品不能为空"
)
private
Integer
visible
;
/**
* 排序字段
*/
@NotNull
(
message
=
"排序字段不能为空"
)
private
Integer
sort
;
/**
* 价格
*/
@NotNull
(
message
=
"价格不能为空"
)
private
Integer
price
;
/**
* 库存数量
*/
@NotNull
(
message
=
"库存数量不能为空"
)
private
Integer
quantity
;
}
product-service-project/product-service-app/src/main/resources/application.yaml
浏览文件 @
ac5ab0b7
...
@@ -38,6 +38,8 @@ dubbo:
...
@@ -38,6 +38,8 @@ dubbo:
version
:
1.0.0
version
:
1.0.0
ProductBrandRpc
:
ProductBrandRpc
:
version
:
1.0.0
version
:
1.0.0
ProductSpuRpc
:
version
:
1.0.0
# Dubbo 服务消费者的配置
# Dubbo 服务消费者的配置
consumer
:
consumer
:
ErrorCodeRpc
:
ErrorCodeRpc
:
...
...
product/pom.xml
浏览文件 @
ac5ab0b7
...
@@ -14,13 +14,10 @@
...
@@ -14,13 +14,10 @@
<packaging>
pom
</packaging>
<packaging>
pom
</packaging>
<modules>
<modules>
<module>
product-application
</module>
<module>
product-rpc-api
</module>
<module>
product-rpc-api
</module>
<module>
product-rpc
</module>
<module>
product-rpc
</module>
<module>
product-rest
</module>
<module>
product-rest
</module>
<module>
product-biz
</module>
<module>
product-biz
</module>
<module>
product-biz-api
</module>
<module>
product-mq
</module>
</modules>
</modules>
<dependencyManagement>
<dependencyManagement>
...
...
product/product-service-impl/src/main/java/cn/iocoder/mall/product/dataobject/ProductSkuDO.java
deleted
100644 → 0
浏览文件 @
7aa25e83
package
cn
.
iocoder
.
mall
.
product
.
dataobject
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 商品 SKU
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSkuDO
extends
DeletableDO
{
/**
* sku 编号
*/
private
Integer
id
;
/**
* 商品编号
*/
private
Integer
spuId
;
// TODO 店铺编号
/**
* 状态
*
* 1-正常
* 2-禁用
*/
private
Integer
status
;
/**
* 图片地址
*/
private
String
picUrl
;
/**
* 规格值({@link ProductAttrDO})数组
*
* 数组,以逗号分隔
*/
private
String
attrs
;
/**
* 价格,单位:分
*/
private
Integer
price
;
/**
* 库存数量
*/
private
Integer
quantity
;
// /**
// * 商品在付款减库存的状态下,该Sku上未付款的订单数量
// */
// private Integer withHoldQuantity;
// /**
// * 销量
// */
// private Integer soldNum;
}
product/product-start/src/main/java/cn/iocoder/mall/product/application/controller/users/UsersProductCategoryController.java
deleted
100644 → 0
浏览文件 @
7aa25e83
package
cn
.
iocoder
.
mall
.
product
.
application
.
controller
.
users
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.product.api.ProductCategoryService
;
import
cn.iocoder.mall.product.api.bo.ProductCategoryBO
;
import
cn.iocoder.mall.product.application.convert.ProductCategoryConvert
;
import
cn.iocoder.mall.product.application.vo.users.UsersProductCategoryVO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@RestController
@RequestMapping
(
"users/category"
)
@Api
(
"商品分类"
)
public
class
UsersProductCategoryController
{
@Reference
(
validation
=
"true"
,
version
=
"${dubbo.provider.ProductCategoryService.version}"
)
@Autowired
private
ProductCategoryService
productCategoryService
;
@GetMapping
(
"/list"
)
@ApiOperation
(
"获得指定编号下的子分类的数组"
)
@ApiImplicitParam
(
name
=
"pid"
,
value
=
"指定分类编号"
,
required
=
true
,
example
=
"0"
)
public
CommonResult
<
List
<
UsersProductCategoryVO
>>
list
(
@RequestParam
(
"pid"
)
Integer
pid
)
{
List
<
ProductCategoryBO
>
result
=
productCategoryService
.
getListByPid
(
pid
);
return
CommonResult
.
success
(
ProductCategoryConvert
.
Users
.
INSTANCE
.
convertToVO
(
result
));
}
}
product/product-start/src/main/java/cn/iocoder/mall/product/application/vo/users/UsersProductCategoryVO.java
deleted
100644 → 0
浏览文件 @
7aa25e83
package
cn
.
iocoder
.
mall
.
product
.
application
.
vo
.
users
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
@ApiModel
(
"商品分类(简单)"
)
@Data
@Accessors
(
chain
=
true
)
public
class
UsersProductCategoryVO
{
@ApiModelProperty
(
value
=
"分类编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"分类名"
,
required
=
true
,
example
=
"手机"
)
private
String
name
;
@ApiModelProperty
(
value
=
"分类图片"
,
notes
=
"一般情况下,只有根分类才有图片"
,
example
=
"http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg"
)
private
String
picUrl
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论