Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
16fd9dc4
提交
16fd9dc4
authored
8月 25, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
移除已经迁移的商城代码
上级
e5c4c747
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
0 行增加
和
360 行删除
+0
-360
ProductSpuManager.java
...mall/managementweb/manager/product/ProductSpuManager.java
+0
-22
ProductSpuFeign.java
.../iocoder/mall/productservice/rpc/spu/ProductSpuFeign.java
+0
-20
ProductSpuAndSkuCreateReqDTO.java
...ductservice/rpc/spu/dto/ProductSpuAndSkuCreateReqDTO.java
+0
-90
ProductSpuAndSkuUpdateReqDTO.java
...ductservice/rpc/spu/dto/ProductSpuAndSkuUpdateReqDTO.java
+0
-96
ProductSpuController.http
.../mall/productservice/controller/ProductSpuController.http
+0
-13
ProductSpuController.java
.../mall/productservice/controller/ProductSpuController.java
+0
-18
ProductSpuManager.java
...er/mall/productservice/manager/spu/ProductSpuManager.java
+0
-63
ProductSkuService.java
...er/mall/productservice/service/sku/ProductSkuService.java
+0
-38
没有找到文件。
归档/management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/product/ProductSpuManager.java
浏览文件 @
16fd9dc4
...
...
@@ -24,28 +24,6 @@ public class ProductSpuManager {
@Autowired
private
ProductSpuFeign
productSpuFeign
;
/**
* 创建商品 SPU
*
* @param createVO 创建商品 SPU VO
* @return 商品 SPU
*/
public
Integer
createProductSpu
(
ProductSpuCreateReqVO
createVO
)
{
CommonResult
<
Integer
>
createProductSpuResult
=
productSpuFeign
.
createProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
createVO
));
createProductSpuResult
.
checkError
();
return
createProductSpuResult
.
getData
();
}
/**
* 更新商品 SPU
*
* @param updateVO 更新商品 SPU VO
*/
public
void
updateProductSpu
(
ProductSpuUpdateReqVO
updateVO
)
{
CommonResult
<
Boolean
>
updateProductSpuResult
=
productSpuFeign
.
updateProductSpu
(
ProductSpuConvert
.
INSTANCE
.
convert
(
updateVO
));
updateProductSpuResult
.
checkError
();
}
/**
* 获得商品 SPU
*
...
...
归档/product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/ProductSpuFeign.java
浏览文件 @
16fd9dc4
...
...
@@ -23,26 +23,6 @@ public interface ProductSpuFeign {
@GetMapping
(
value
=
"/product/spu/get"
)
CommonResult
<
ProductSpuRespDTO
>
getProductSpu
(
@RequestParam
(
"productSpuId"
)
Integer
productSpuId
);
/**
* 创建商品 SPU
*
* @param createDTO 创建商品 SPU DTO
* @return 商品 SPU编号
*/
@PostMapping
(
value
=
"/product/spu/create"
)
CommonResult
<
Integer
>
createProductSpu
(
@RequestBody
ProductSpuAndSkuCreateReqDTO
createDTO
);
/**
* 更新商品 SPU
*
* @param updateDTO 更新商品 SPU DTO
*/
@PostMapping
(
value
=
"/product/spu/update"
)
CommonResult
<
Boolean
>
updateProductSpu
(
@RequestBody
ProductSpuAndSkuUpdateReqDTO
updateDTO
);
/**
* 获得商品 SPU列表
*
...
...
归档/product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/dto/ProductSpuAndSkuCreateReqDTO.java
deleted
100644 → 0
浏览文件 @
e5c4c747
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.Valid
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 商品 SPU 和 SKU 创建 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuAndSkuCreateReqDTO
implements
Serializable
{
/**
* SKU 信息
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
Sku
implements
Serializable
{
/**
* 规格值数组
*/
@NotNull
(
message
=
"规格值数组不能为空"
)
private
List
<
Integer
>
attrValueIds
;
/**
* 价格,单位:分
*/
@NotNull
(
message
=
"价格不能为空"
)
@Min
(
value
=
1L
,
message
=
"最小价格为 1"
)
private
Integer
price
;
/**
* 库存数量
*/
@NotNull
(
message
=
"库存数量不能为空"
)
@Min
(
value
=
1L
,
message
=
"最小库存为 1"
)
private
Integer
quantity
;
}
// ========== 基本信息 =========
/**
* 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
Boolean
visible
;
// ========== SKU =========
/**
* SKU 数组
*/
@NotNull
(
message
=
"SKU 不能为空"
)
@Valid
private
List
<
Sku
>
skus
;
}
归档/product-service-project/product-service-api/src/main/java/cn/iocoder/mall/productservice/rpc/spu/dto/ProductSpuAndSkuUpdateReqDTO.java
deleted
100644 → 0
浏览文件 @
e5c4c747
package
cn
.
iocoder
.
mall
.
productservice
.
rpc
.
spu
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.Valid
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 商品 SPU 和 SKU 更新 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductSpuAndSkuUpdateReqDTO
implements
Serializable
{
/**
* SKU 信息
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
Sku
implements
Serializable
{
/**
* 规格值数组
*/
@NotNull
(
message
=
"规格值数组不能为空"
)
private
List
<
Integer
>
attrValueIds
;
/**
* 价格,单位:分
*/
@NotNull
(
message
=
"价格不能为空"
)
@Min
(
value
=
1L
,
message
=
"最小价格为 1"
)
private
Integer
price
;
/**
* 库存数量
*/
@NotNull
(
message
=
"库存数量不能为空"
)
@Min
(
value
=
1L
,
message
=
"最小库存为 1"
)
private
Integer
quantity
;
}
/**
* 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
Boolean
visible
;
// ========== SKU =========
/**
* SKU 数组
*/
@NotNull
(
message
=
"SKU 不能为空"
)
@Valid
private
List
<
Sku
>
skus
;
}
归档/product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/controller/ProductSpuController.http
deleted
100644 → 0
浏览文件 @
e5c4c747
### /product/spu/get 获得商品 SPU
GET http://localhost:38082/product/spu/get?productSpuId=32
###
### /product/spu/get 获得商品 SPU
GET http://localhost:38082/product/spu/lislistProductSpuIdst?lastSpuId=30&limit=10
###
### /product/spu/get 获得商品 SPU
GET http://localhost:38082/product/spu/getProductSpuDetail?productSpuId=32&fields=attr,sku
###
归档/product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/controller/ProductSpuController.java
浏览文件 @
16fd9dc4
...
...
@@ -31,24 +31,6 @@ public class ProductSpuController {
return
success
(
productSpuManager
.
getProductSpu
(
productSpuId
));
}
/**
* 更新商品 SPU
*
* @param updateDTO 更新商品 SPU DTO
*/
@PostMapping
(
"/update"
)
@ApiOperation
(
"更新商品 SPU"
)
public
CommonResult
<
Boolean
>
updateProductSpu
(
@Valid
@RequestBody
ProductSpuAndSkuUpdateReqDTO
updateDTO
)
{
productSpuManager
.
updateProductSpu
(
updateDTO
);
return
success
(
true
);
}
@PostMapping
(
"/create"
)
@ApiOperation
(
"创建商品 SPU"
)
public
CommonResult
<
Integer
>
createProductSpu
(
@Valid
@RequestBody
ProductSpuAndSkuCreateReqDTO
createDTO
)
{
return
success
(
productSpuManager
.
createProductSpu
(
createDTO
));
}
@GetMapping
(
"/list"
)
@ApiOperation
(
"获得商品 SPU 列表"
)
@ApiImplicitParam
(
name
=
"productSpuIds"
,
value
=
"商品 SPU 编号列表"
,
required
=
true
)
...
...
归档/product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/manager/spu/ProductSpuManager.java
浏览文件 @
16fd9dc4
...
...
@@ -51,69 +51,6 @@ public class ProductSpuManager {
@Autowired
private
ProductMQProducer
productMQProducer
;
private
static
ProductSpuManager
self
()
{
return
(
ProductSpuManager
)
AopContext
.
currentProxy
();
}
/**
* 创建商品 SPU 和 SKU
*
* @param createDTO 创建商品 SPU 和 SKU DTO
* @return 商品 SPU
*/
public
Integer
createProductSpu
(
ProductSpuAndSkuCreateReqDTO
createDTO
)
{
// 创建商品 SPU 和 SKU。注意,这里要调用 self() 方法,因为需要创建事务,否则会失效
Integer
spuId
=
self
().
createProductSpu0
(
createDTO
);
// 发送商品创建的 MQ 消息
productMQProducer
.
sendProductUpdateMessage
(
spuId
);
return
spuId
;
}
@Transactional
public
Integer
createProductSpu0
(
ProductSpuAndSkuCreateReqDTO
createDTO
)
{
// 校验商品分类是否合法
this
.
checkProductCategory
(
createDTO
.
getCid
());
// 创建商品 SKU 对象,并进行校验
List
<
ProductSkuCreateOrUpdateBO
>
skuBOs
=
ProductSpuConvert
.
INSTANCE
.
convert
(
createDTO
.
getSkus
());
this
.
checkProductAttr
(
skuBOs
);
// 插入商品 SPU 记录
ProductSpuCreateBO
spuCreateBO
=
ProductSpuConvert
.
INSTANCE
.
convert
(
createDTO
).
setSort
(
0
);
spuCreateBO
.
setPrice
(
skuBOs
.
stream
().
min
(
Comparator
.
comparing
(
ProductSkuCreateOrUpdateBO:
:
getPrice
)).
get
().
getPrice
());
// 求最小价格
spuCreateBO
.
setQuantity
(
skuBOs
.
stream
().
mapToInt
(
ProductSkuCreateOrUpdateBO:
:
getQuantity
).
sum
());
// 求库存之和
ProductSpuBO
spuBO
=
productSpuService
.
createProductSpu
(
spuCreateBO
);
// 插入商品 SKU 记录
productSkuService
.
createProductSkus
(
spuBO
.
getId
(),
skuBOs
);
return
spuBO
.
getId
();
}
/**
* 更新商品 SPU
*
* @param updateDTO 更新商品 SPU DTO
*/
public
void
updateProductSpu
(
ProductSpuAndSkuUpdateReqDTO
updateDTO
)
{
// 更新商品 SPU 和 SKU。注意,这里要调用 self() 方法,因为需要创建事务,否则会失效
self
().
updateProductSpu0
(
updateDTO
);
// 发送商品创建的 MQ 消息
productMQProducer
.
sendProductUpdateMessage
(
updateDTO
.
getId
());
}
@Transactional
public
void
updateProductSpu0
(
ProductSpuAndSkuUpdateReqDTO
updateDTO
)
{
// 校验商品分类是否合法
this
.
checkProductCategory
(
updateDTO
.
getCid
());
// 创建商品 SKU 对象,并进行校验
List
<
ProductSkuCreateOrUpdateBO
>
skuBOs
=
ProductSpuConvert
.
INSTANCE
.
convert02
(
updateDTO
.
getSkus
());
this
.
checkProductAttr
(
skuBOs
);
// 更新商品 SPU 记录
ProductSpuUpdateBO
spuUpdateBO
=
ProductSpuConvert
.
INSTANCE
.
convert
(
updateDTO
);
spuUpdateBO
.
setPrice
(
skuBOs
.
stream
().
min
(
Comparator
.
comparing
(
ProductSkuCreateOrUpdateBO:
:
getPrice
)).
get
().
getPrice
());
// 求最小价格
spuUpdateBO
.
setQuantity
(
skuBOs
.
stream
().
mapToInt
(
ProductSkuCreateOrUpdateBO:
:
getQuantity
).
sum
());
// 求库存之和
productSpuService
.
updateProductSpu
(
spuUpdateBO
);
// 更新商品 SKU 记录
productSkuService
.
updateProductSkus
(
updateDTO
.
getId
(),
skuBOs
);
}
/**
* 获得商品 SPU
*
...
...
归档/product-service-project/product-service-app/src/main/java/cn/iocoder/mall/productservice/service/sku/ProductSkuService.java
浏览文件 @
16fd9dc4
...
...
@@ -31,44 +31,6 @@ public class ProductSkuService {
productSkuMapper
.
insertList
(
skus
);
}
@Transactional
public
void
updateProductSkus
(
Integer
spuId
,
List
<
ProductSkuCreateOrUpdateBO
>
skuUpdateBOs
)
{
List
<
ProductSkuDO
>
existsSkus
=
productSkuMapper
.
selectListBySpuIdAndStatus
(
spuId
,
CommonStatusEnum
.
ENABLE
.
getValue
());
List
<
ProductSkuDO
>
insertSkus
=
new
ArrayList
<>();
// 1、找不到,进行插入
List
<
Integer
>
deleteSkus
=
new
ArrayList
<>();
// 2、多余的,删除
List
<
ProductSkuDO
>
updateSkus
=
new
ArrayList
<>();
// 3、找的到,进行更新。
for
(
ProductSkuCreateOrUpdateBO
skuUpdateDTO
:
skuUpdateBOs
)
{
ProductSkuDO
existsSku
=
findProductSku
(
skuUpdateDTO
.
getAttrValueIds
(),
existsSkus
);
// 3、找的到,进行更新。
if
(
existsSku
!=
null
)
{
// 移除
existsSkus
.
remove
(
existsSku
);
// 创建 ProductSkuDO
updateSkus
.
add
(
ProductSkuConvert
.
INSTANCE
.
convert
(
skuUpdateDTO
).
setId
(
existsSku
.
getId
()));
continue
;
}
// 1、找不到,进行插入
ProductSkuDO
insertSku
=
ProductSkuConvert
.
INSTANCE
.
convert
(
skuUpdateDTO
)
.
setSpuId
(
spuId
).
setStatus
(
CommonStatusEnum
.
ENABLE
.
getValue
());
insertSkus
.
add
(
insertSku
);
}
// 2、多余的,删除
if
(!
existsSkus
.
isEmpty
())
{
deleteSkus
.
addAll
(
existsSkus
.
stream
().
map
(
ProductSkuDO:
:
getId
).
collect
(
Collectors
.
toList
()));
}
// 执行修改 Sku
if
(!
insertSkus
.
isEmpty
())
{
productSkuMapper
.
insertList
(
insertSkus
);
}
if
(!
updateSkus
.
isEmpty
())
{
updateSkus
.
forEach
(
productSkuDO
->
productSkuMapper
.
updateById
(
productSkuDO
));
}
if
(!
deleteSkus
.
isEmpty
())
{
productSkuMapper
.
deleteBatchIds
(
deleteSkus
);
}
}
/**
* 获得 sku 数组中,指定规格的 sku
*
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论