迁移购物车模块
This commit is contained in:
parent
b57b2bc931
commit
5714ddcbe8
@ -1,8 +1,9 @@
|
|||||||
package cn.iocoder.mall.orderservice.rpc.cart;
|
package cn.iocoder.mall.orderservice.rpc.cart;
|
||||||
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
import cn.iocoder.common.framework.vo.CommonResult;
|
||||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO;
|
import cn.iocoder.mall.orderservice.rpc.cart.dto.*;
|
||||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemUpdateQuantityReqDTO;
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 购物车 Rpc 接口
|
* 购物车 Rpc 接口
|
||||||
@ -20,9 +21,41 @@ public interface CartRpc {
|
|||||||
/**
|
/**
|
||||||
* 更新购物车商品数量
|
* 更新购物车商品数量
|
||||||
*
|
*
|
||||||
* @param updateQuantityReqDTO 更新商品数量
|
* @param updateQuantityReqDTO 更新商品数量 DTO
|
||||||
* @return 成功
|
* @return 成功
|
||||||
*/
|
*/
|
||||||
CommonResult<Boolean> updateCartItemSelected(CartItemUpdateQuantityReqDTO updateQuantityReqDTO);
|
CommonResult<Boolean> updateCartItemQuantity(CartItemUpdateQuantityReqDTO updateQuantityReqDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新购物车商品是否选中
|
||||||
|
*
|
||||||
|
* @param updateSelectedReqDTO 更新商品是否选中 DTO
|
||||||
|
* @return 成功
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
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 =========
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
@ -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.dal.mysql.dataobject.cart.CartItemDO;
|
||||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO;
|
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.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.Mapper;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface CartConvert {
|
public interface CartConvert {
|
||||||
|
|
||||||
@ -15,4 +21,10 @@ public interface CartConvert {
|
|||||||
|
|
||||||
CartItemAddBO convert(CartItemAddReqDTO bean);
|
CartItemAddBO convert(CartItemAddReqDTO bean);
|
||||||
|
|
||||||
|
List<CartItemBO> convertList(List<CartItemDO> list);
|
||||||
|
|
||||||
|
CartItemListQueryBO convert(CartItemListReqDTO bean);
|
||||||
|
|
||||||
|
List<CartItemRespDTO> convertList02(List<CartItemBO> list);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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.mybatis.core.query.QueryWrapperX;
|
||||||
import cn.iocoder.mall.orderservice.dal.mysql.dataobject.cart.CartItemDO;
|
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.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@ -9,6 +10,7 @@ import org.springframework.stereotype.Repository;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
@ -29,4 +31,18 @@ public interface CartItemMapper extends BaseMapper<CartItemDO> {
|
|||||||
ids.forEach(id -> updateById(updateObject.setId(id)));
|
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()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,15 +4,17 @@ 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.vo.CommonResult;
|
import cn.iocoder.common.framework.vo.CommonResult;
|
||||||
import cn.iocoder.mall.orderservice.convert.cart.CartConvert;
|
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.*;
|
||||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemUpdateQuantityReqDTO;
|
|
||||||
import cn.iocoder.mall.orderservice.service.cart.CartService;
|
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.ProductSkuRpc;
|
||||||
import cn.iocoder.mall.productservice.rpc.sku.dto.ProductSkuRespDTO;
|
import cn.iocoder.mall.productservice.rpc.sku.dto.ProductSkuRespDTO;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
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 java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.mall.orderservice.enums.OrderErrorCodeConstants.CARD_ITEM_SKU_NOT_FOUND;
|
import static cn.iocoder.mall.orderservice.enums.OrderErrorCodeConstants.CARD_ITEM_SKU_NOT_FOUND;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,6 +54,55 @@ public class CartManager {
|
|||||||
updateQuantityReqDTO.getQuantity(), skuDTO.getQuantity());
|
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) {
|
private ProductSkuRespDTO checkProductSku(Integer skuId) {
|
||||||
CommonResult<ProductSkuRespDTO> getProductSkuResult = productSkuRpc.getProductSku(skuId);
|
CommonResult<ProductSkuRespDTO> getProductSkuResult = productSkuRpc.getProductSku(skuId);
|
||||||
getProductSkuResult.checkError();
|
getProductSkuResult.checkError();
|
||||||
|
@ -2,11 +2,14 @@ package cn.iocoder.mall.orderservice.rpc.cart;
|
|||||||
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
import cn.iocoder.common.framework.vo.CommonResult;
|
||||||
import cn.iocoder.mall.orderservice.manager.cart.CartManager;
|
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.*;
|
||||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemUpdateQuantityReqDTO;
|
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||||
|
|
||||||
@DubboService
|
@DubboService
|
||||||
public class CartRpcImpl implements CartRpc {
|
public class CartRpcImpl implements CartRpc {
|
||||||
|
|
||||||
@ -16,13 +19,35 @@ public class CartRpcImpl implements CartRpc {
|
|||||||
@Override
|
@Override
|
||||||
public CommonResult<Boolean> addCartItem(CartItemAddReqDTO addItemReqDTO) {
|
public CommonResult<Boolean> addCartItem(CartItemAddReqDTO addItemReqDTO) {
|
||||||
cartManager.addCartItem(addItemReqDTO);
|
cartManager.addCartItem(addItemReqDTO);
|
||||||
return CommonResult.success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonResult<Boolean> updateCartItemSelected(CartItemUpdateQuantityReqDTO updateQuantityReqDTO) {
|
public CommonResult<Boolean> updateCartItemQuantity(CartItemUpdateQuantityReqDTO updateQuantityReqDTO) {
|
||||||
cartManager.updateCartItemSelected(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));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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.dataobject.cart.CartItemDO;
|
||||||
import cn.iocoder.mall.orderservice.dal.mysql.mapper.cart.CartItemMapper;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -99,13 +101,35 @@ public class CartService {
|
|||||||
* @param userId 用户编号
|
* @param userId 用户编号
|
||||||
* @param skuIds 商品 SKU 编号的数组
|
* @param skuIds 商品 SKU 编号的数组
|
||||||
*/
|
*/
|
||||||
public void deleteList(Integer userId, List<Integer> skuIds) {
|
public void deleteCartItems(Integer userId, List<Integer> skuIds) {
|
||||||
// 查询 CartItemDO 列表
|
// 查询 CartItemDO 列表
|
||||||
List<CartItemDO> itemDOs = cartItemMapper.selectListByUserIdAndSkuIds(userId, skuIds);
|
List<CartItemDO> itemDOs = cartItemMapper.selectListByUserIdAndSkuIds(userId, skuIds);
|
||||||
|
if (CollectionUtils.isEmpty(itemDOs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 批量标记删除
|
// 批量标记删除
|
||||||
cartItemMapper.deleteBatchIds(CollectionUtils.convertSet(itemDOs, CartItemDO::getId));
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
}
|
@ -3,27 +3,6 @@ package cn.iocoder.mall.order.biz.service;
|
|||||||
public interface CartService {
|
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);
|
|
||||||
//
|
|
||||||
// // ========== 购物车与订单相关的逻辑 ==========
|
// // ========== 购物车与订单相关的逻辑 ==========
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
|
@ -45,17 +45,6 @@ public class CartServiceImpl implements CartService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private CartMapper cartMapper;
|
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
|
@Override
|
||||||
public CalcOrderPriceBO calcOrderPrice(CalcOrderPriceDTO calcOrderPriceDTO) {
|
public CalcOrderPriceBO calcOrderPrice(CalcOrderPriceDTO calcOrderPriceDTO) {
|
||||||
// TODO 芋艿,补充一些表单校验。例如说,需要传入用户编号。
|
// TODO 芋艿,补充一些表单校验。例如说,需要传入用户编号。
|
||||||
|
Loading…
Reference in New Issue
Block a user