Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
5714ddcb
提交
5714ddcb
authored
8月 06, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
迁移购物车模块
上级
b57b2bc9
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
352 行增加
和
44 行删除
+352
-44
CartRpc.java
...n/java/cn/iocoder/mall/orderservice/rpc/cart/CartRpc.java
+37
-4
CartItemDeleteListReqDTO.java
...l/orderservice/rpc/cart/dto/CartItemDeleteListReqDTO.java
+28
-0
CartItemListReqDTO.java
...er/mall/orderservice/rpc/cart/dto/CartItemListReqDTO.java
+26
-0
CartItemRespDTO.java
...coder/mall/orderservice/rpc/cart/dto/CartItemRespDTO.java
+67
-0
CartItemUpdateSelectedReqDTO.java
...derservice/rpc/cart/dto/CartItemUpdateSelectedReqDTO.java
+33
-0
CartConvert.java
...n/iocoder/mall/orderservice/convert/cart/CartConvert.java
+12
-0
CartItemMapper.java
...ll/orderservice/dal/mysql/mapper/cart/CartItemMapper.java
+16
-0
CartManager.java
...n/iocoder/mall/orderservice/manager/cart/CartManager.java
+53
-2
CartRpcImpl.java
...va/cn/iocoder/mall/orderservice/rpc/cart/CartRpcImpl.java
+30
-5
CartService.java
...n/iocoder/mall/orderservice/service/cart/CartService.java
+25
-1
CartItemListQueryBO.java
...all/orderservice/service/cart/bo/CartItemListQueryBO.java
+25
-0
CartService.java
...n/java/cn/iocoder/mall/order/biz/service/CartService.java
+0
-21
CartServiceImpl.java
...va/cn/iocoder/mall/order/biz/service/CartServiceImpl.java
+0
-11
没有找到文件。
order-service-project/order-service-api/src/main/java/cn/iocoder/mall/orderservice/rpc/cart/CartRpc.java
浏览文件 @
5714ddcb
package
cn
.
iocoder
.
mall
.
orderservice
.
rpc
.
cart
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemUpdateQuantityReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.*
;
import
java.util.List
;
/**
* 购物车 Rpc 接口
...
...
@@ -20,9 +21,41 @@ public interface CartRpc {
/**
* 更新购物车商品数量
*
* @param updateQuantityReqDTO 更新商品数量
* @param updateQuantityReqDTO 更新商品数量 DTO
* @return 成功
*/
CommonResult
<
Boolean
>
updateCartItemQuantity
(
CartItemUpdateQuantityReqDTO
updateQuantityReqDTO
);
/**
* 更新购物车商品是否选中
*
* @param updateSelectedReqDTO 更新商品是否选中 DTO
* @return 成功
*/
CommonResult
<
Boolean
>
updateCartItemSelected
(
CartItemUpdateQuantityReqDTO
updateQuantityReqDTO
);
CommonResult
<
Boolean
>
updateCartItemSelected
(
CartItemUpdateSelectedReqDTO
updateSelectedReqDTO
);
/**
* 删除购物车商品列表
*
* @param deleteListReqDTO 删除商品列表 DTO
* @return 成功
*/
CommonResult
<
Boolean
>
deleteCartItems
(
CartItemDeleteListReqDTO
deleteListReqDTO
);
/**
* 查询用户在购物车中的商品数量
*
* @param userId 用户编号
* @return 商品数量
*/
CommonResult
<
Integer
>
sumCartItemQuantity
(
Integer
userId
);
/**
* 查询用户在购物车种的商品列表
*
* @param listReqDTO 查询条件 DTO
* @return 购物车中商品列表信息
*/
CommonResult
<
List
<
CartItemRespDTO
>>
listCartItems
(
CartItemListReqDTO
listReqDTO
);
}
order-service-project/order-service-api/src/main/java/cn/iocoder/mall/orderservice/rpc/cart/dto/CartItemDeleteListReqDTO.java
0 → 100644
浏览文件 @
5714ddcb
package
cn
.
iocoder
.
mall
.
orderservice
.
rpc
.
cart
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 购物车删除商品列表 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CartItemDeleteListReqDTO
implements
Serializable
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
userId
;
/**
* 商品 SKU 编号列表
*/
@NotNull
(
message
=
"商品 SKU 编号列表不能为空"
)
private
List
<
Integer
>
skuIds
;
}
order-service-project/order-service-api/src/main/java/cn/iocoder/mall/orderservice/rpc/cart/dto/CartItemListReqDTO.java
0 → 100644
浏览文件 @
5714ddcb
package
cn
.
iocoder
.
mall
.
orderservice
.
rpc
.
cart
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 购物车的商品信息查询 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CartItemListReqDTO
implements
Serializable
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
userId
;
/**
* 是否选中
*/
private
Boolean
selected
;
}
order-service-project/order-service-api/src/main/java/cn/iocoder/mall/orderservice/rpc/cart/dto/CartItemRespDTO.java
0 → 100644
浏览文件 @
5714ddcb
package
cn
.
iocoder
.
mall
.
orderservice
.
rpc
.
cart
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* 购物车的商品信息 Response DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CartItemRespDTO
implements
Serializable
{
// ========= 基础字段 BEGIN =========
/**
* 编号,唯一自增。
*/
private
Integer
id
;
/**
* 是否选中
*/
private
Boolean
selected
;
// ========= 基础字段 END =========
// ========= 买家信息 BEGIN =========
/**
* 用户编号
*/
private
Integer
userId
;
// ========= 买家信息 END =========
// ========= 商品信息 BEGIN =========
/**
* 商品 SPU 编号
*/
private
Integer
spuId
;
/**
* 商品 SKU 编号
*/
private
Integer
skuId
;
/**
* 商品购买数量
*/
private
Integer
quantity
;
// ========= 商品信息 END =========
// ========= 优惠信息 BEGIN =========
// /**
// * 商品营销活动编号
// */
// private Integer activityId;
// /**
// * 商品营销活动类型
// */
// private Integer activityType;
// ========= 优惠信息 END =========
}
order-service-project/order-service-api/src/main/java/cn/iocoder/mall/orderservice/rpc/cart/dto/CartItemUpdateSelectedReqDTO.java
0 → 100644
浏览文件 @
5714ddcb
package
cn
.
iocoder
.
mall
.
orderservice
.
rpc
.
cart
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 购物车更新是否选中 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CartItemUpdateSelectedReqDTO
implements
Serializable
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
userId
;
/**
* 商品 SKU 编号列表
*/
@NotNull
(
message
=
"商品 SKU 编号列表不能为空"
)
private
List
<
Integer
>
skuIds
;
/**
* 是否选中
*/
@NotNull
(
message
=
"是否选中不能为空"
)
private
Boolean
selected
;
}
order-service-project/order-service-app/src/main/java/cn/iocoder/mall/orderservice/convert/cart/CartConvert.java
浏览文件 @
5714ddcb
...
...
@@ -2,10 +2,16 @@ package cn.iocoder.mall.orderservice.convert.cart;
import
cn.iocoder.mall.orderservice.dal.mysql.dataobject.cart.CartItemDO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemListReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemRespDTO
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemAddBO
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemBO
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemListQueryBO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
CartConvert
{
...
...
@@ -15,4 +21,10 @@ public interface CartConvert {
CartItemAddBO
convert
(
CartItemAddReqDTO
bean
);
List
<
CartItemBO
>
convertList
(
List
<
CartItemDO
>
list
);
CartItemListQueryBO
convert
(
CartItemListReqDTO
bean
);
List
<
CartItemRespDTO
>
convertList02
(
List
<
CartItemBO
>
list
);
}
order-service-project/order-service-app/src/main/java/cn/iocoder/mall/orderservice/dal/mysql/mapper/cart/CartItemMapper.java
浏览文件 @
5714ddcb
...
...
@@ -2,6 +2,7 @@ package cn.iocoder.mall.orderservice.dal.mysql.mapper.cart;
import
cn.iocoder.mall.mybatis.core.query.QueryWrapperX
;
import
cn.iocoder.mall.orderservice.dal.mysql.dataobject.cart.CartItemDO
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemListQueryBO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -9,6 +10,7 @@ import org.springframework.stereotype.Repository;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
@Repository
...
...
@@ -29,4 +31,18 @@ public interface CartItemMapper extends BaseMapper<CartItemDO> {
ids
.
forEach
(
id
->
updateById
(
updateObject
.
setId
(
id
)));
}
default
Integer
selectSumQuantityByUserId
(
Integer
userId
)
{
// SQL sum 查询
List
<
Map
<
String
,
Object
>>
result
=
selectMaps
(
new
QueryWrapper
<
CartItemDO
>()
.
select
(
"SUM(quantity) AS sumQuantity"
)
.
eq
(
"user_id"
,
userId
));
// 获得数量
return
(
Integer
)
result
.
get
(
0
).
get
(
"sumQuantity"
);
}
default
List
<
CartItemDO
>
selectList
(
CartItemListQueryBO
queryBO
)
{
return
selectList
(
new
QueryWrapperX
<
CartItemDO
>().
eq
(
"user_id"
,
queryBO
.
getUserId
())
.
eq
(
"selected"
,
queryBO
.
getSelected
()));
}
}
order-service-project/order-service-app/src/main/java/cn/iocoder/mall/orderservice/manager/cart/CartManager.java
浏览文件 @
5714ddcb
...
...
@@ -4,15 +4,17 @@ import cn.iocoder.common.framework.enums.CommonStatusEnum;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.orderservice.convert.cart.CartConvert
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemUpdateQuantityReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.*
;
import
cn.iocoder.mall.orderservice.service.cart.CartService
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemBO
;
import
cn.iocoder.mall.productservice.rpc.sku.ProductSkuRpc
;
import
cn.iocoder.mall.productservice.rpc.sku.dto.ProductSkuRespDTO
;
import
org.apache.dubbo.config.annotation.DubboReference
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
static
cn
.
iocoder
.
mall
.
orderservice
.
enums
.
OrderErrorCodeConstants
.
CARD_ITEM_SKU_NOT_FOUND
;
/**
...
...
@@ -52,6 +54,55 @@ public class CartManager {
updateQuantityReqDTO
.
getQuantity
(),
skuDTO
.
getQuantity
());
}
/**
* 更新购物车商品是否选中
*
* @param updateSelectedReqDTO 更新商品是否选中 DTO
*/
public
void
updateCartItemSelected
(
CartItemUpdateSelectedReqDTO
updateSelectedReqDTO
)
{
cartService
.
updateCartItemSelected
(
updateSelectedReqDTO
.
getUserId
(),
updateSelectedReqDTO
.
getSkuIds
(),
updateSelectedReqDTO
.
getSelected
());
}
/**
* 删除购物车商品列表
*
* @param deleteListReqDTO 删除商品列表 DTO
*/
public
void
deleteCartItems
(
CartItemDeleteListReqDTO
deleteListReqDTO
)
{
cartService
.
deleteCartItems
(
deleteListReqDTO
.
getUserId
(),
deleteListReqDTO
.
getSkuIds
());
}
/**
* 查询用户在购物车中的商品数量
*
* @param userId 用户编号
* @return 商品数量
*/
public
Integer
sumCartItemQuantity
(
Integer
userId
)
{
return
cartService
.
sumCartItemQuantity
(
userId
);
}
/**
* 查询用户在购物车种的商品列表
*
* @param listReqDTO 查询条件 DTO
* @return 购物车中商品列表信息
*/
public
List
<
CartItemRespDTO
>
listCartItems
(
CartItemListReqDTO
listReqDTO
)
{
List
<
CartItemBO
>
cartItemBOs
=
cartService
.
listCartItems
(
CartConvert
.
INSTANCE
.
convert
(
listReqDTO
));
return
CartConvert
.
INSTANCE
.
convertList02
(
cartItemBOs
);
}
/**
* 校验商品 SKU 是否合法
* 1. 是否存在
* 2. 是否下架
*
* @param skuId 商品 SKU 编号
* @return 商品 SKU 信息
*/
private
ProductSkuRespDTO
checkProductSku
(
Integer
skuId
)
{
CommonResult
<
ProductSkuRespDTO
>
getProductSkuResult
=
productSkuRpc
.
getProductSku
(
skuId
);
getProductSkuResult
.
checkError
();
...
...
order-service-project/order-service-app/src/main/java/cn/iocoder/mall/orderservice/rpc/cart/CartRpcImpl.java
浏览文件 @
5714ddcb
...
...
@@ -2,11 +2,14 @@ package cn.iocoder.mall.orderservice.rpc.cart;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.orderservice.manager.cart.CartManager
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemUpdateQuantityReqDTO
;
import
cn.iocoder.mall.orderservice.rpc.cart.dto.*
;
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
;
@DubboService
public
class
CartRpcImpl
implements
CartRpc
{
...
...
@@ -16,13 +19,35 @@ public class CartRpcImpl implements CartRpc {
@Override
public
CommonResult
<
Boolean
>
addCartItem
(
CartItemAddReqDTO
addItemReqDTO
)
{
cartManager
.
addCartItem
(
addItemReqDTO
);
return
CommonResult
.
success
(
true
);
return
success
(
true
);
}
@Override
public
CommonResult
<
Boolean
>
updateCartItem
Selected
(
CartItemUpdateQuantityReqDTO
updateQuantityReqDTO
)
{
public
CommonResult
<
Boolean
>
updateCartItem
Quantity
(
CartItemUpdateQuantityReqDTO
updateQuantityReqDTO
)
{
cartManager
.
updateCartItemSelected
(
updateQuantityReqDTO
);
return
CommonResult
.
success
(
true
);
return
success
(
true
);
}
@Override
public
CommonResult
<
Boolean
>
updateCartItemSelected
(
CartItemUpdateSelectedReqDTO
updateSelectedReqDTO
)
{
cartManager
.
updateCartItemSelected
(
updateSelectedReqDTO
);
return
success
(
true
);
}
@Override
public
CommonResult
<
Boolean
>
deleteCartItems
(
CartItemDeleteListReqDTO
deleteListReqDTO
)
{
cartManager
.
deleteCartItems
(
deleteListReqDTO
);
return
success
(
true
);
}
@Override
public
CommonResult
<
Integer
>
sumCartItemQuantity
(
Integer
userId
)
{
return
success
(
cartManager
.
sumCartItemQuantity
(
userId
));
}
@Override
public
CommonResult
<
List
<
CartItemRespDTO
>>
listCartItems
(
CartItemListReqDTO
listReqDTO
)
{
return
success
(
cartManager
.
listCartItems
(
listReqDTO
));
}
}
order-service-project/order-service-app/src/main/java/cn/iocoder/mall/orderservice/service/cart/CartService.java
浏览文件 @
5714ddcb
...
...
@@ -6,6 +6,8 @@ import cn.iocoder.mall.orderservice.convert.cart.CartConvert;
import
cn.iocoder.mall.orderservice.dal.mysql.dataobject.cart.CartItemDO
;
import
cn.iocoder.mall.orderservice.dal.mysql.mapper.cart.CartItemMapper
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemAddBO
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemBO
;
import
cn.iocoder.mall.orderservice.service.cart.bo.CartItemListQueryBO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
...
...
@@ -99,13 +101,35 @@ public class CartService {
* @param userId 用户编号
* @param skuIds 商品 SKU 编号的数组
*/
public
void
delete
List
(
Integer
userId
,
List
<
Integer
>
skuIds
)
{
public
void
delete
CartItems
(
Integer
userId
,
List
<
Integer
>
skuIds
)
{
// 查询 CartItemDO 列表
List
<
CartItemDO
>
itemDOs
=
cartItemMapper
.
selectListByUserIdAndSkuIds
(
userId
,
skuIds
);
if
(
CollectionUtils
.
isEmpty
(
itemDOs
))
{
return
;
}
// 批量标记删除
cartItemMapper
.
deleteBatchIds
(
CollectionUtils
.
convertSet
(
itemDOs
,
CartItemDO:
:
getId
));
}
/**
* 查询用户在购物车中的商品数量
*
* @param userId 用户编号
* @return 商品数量
*/
public
Integer
sumCartItemQuantity
(
Integer
userId
)
{
return
cartItemMapper
.
selectSumQuantityByUserId
(
userId
);
}
/**
* 查询用户在购物车种的商品列表
*
* @param queryBO 查询条件 BO
* @return 购物车中商品列表信息
*/
public
List
<
CartItemBO
>
listCartItems
(
CartItemListQueryBO
queryBO
)
{
List
<
CartItemDO
>
cartItemDOs
=
cartItemMapper
.
selectList
(
queryBO
);
return
CartConvert
.
INSTANCE
.
convertList
(
cartItemDOs
);
}
}
order-service-project/order-service-app/src/main/java/cn/iocoder/mall/orderservice/service/cart/bo/CartItemListQueryBO.java
0 → 100644
浏览文件 @
5714ddcb
package
cn
.
iocoder
.
mall
.
orderservice
.
service
.
cart
.
bo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* 购物车的商品信息查询 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CartItemListQueryBO
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
userId
;
/**
* 是否选中
*/
private
Boolean
selected
;
}
order/order-biz/src/main/java/cn/iocoder/mall/order/biz/service/CartService.java
浏览文件 @
5714ddcb
...
...
@@ -3,27 +3,6 @@ package cn.iocoder.mall.order.biz.service;
public
interface
CartService
{
// Boolean deleteList(Integer userId, List<Integer> skuIds);
//
//
// /**
// * 查询用户在购物车中的商品数量
// *
// * @param userId 用户编号
// * @return 商品数量
// */
// Integer count(Integer userId);
//
// /**
// * 显示买家购物车中的商品列表,并根据 selected 进行过滤。
// *
// * @param userId 用户编号
// * @param selected 是否选中。若为空,则不进行筛选
// * @return 购物车中商品列表信息
// */
// List<CartItemBO> list(Integer userId, @Nullable Boolean selected);
//
// // ========== 购物车与订单相关的逻辑 ==========
//
// /**
...
...
order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/CartServiceImpl.java
浏览文件 @
5714ddcb
...
...
@@ -45,17 +45,6 @@ public class CartServiceImpl implements CartService {
@Autowired
private
CartMapper
cartMapper
;
@Override
public
Integer
count
(
Integer
userId
)
{
return
cartMapper
.
selectQuantitySumByUserIdAndStatus
(
userId
,
CartItemStatusEnum
.
ENABLE
.
getValue
());
}
@Override
public
List
<
CartItemBO
>
list
(
Integer
userId
,
Boolean
selected
)
{
List
<
CartItemDO
>
items
=
cartMapper
.
selectByUserIdAndStatusAndSelected
(
userId
,
CartItemStatusEnum
.
ENABLE
.
getValue
(),
selected
);
return
CartConvert
.
INSTANCE
.
convert
(
items
);
}
@Override
public
CalcOrderPriceBO
calcOrderPrice
(
CalcOrderPriceDTO
calcOrderPriceDTO
)
{
// TODO 芋艿,补充一些表单校验。例如说,需要传入用户编号。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论