您当前的位置: 首页 >  分布式

83分布式电商项目 - Cookie存储购物车

杨林伟 发布时间:2019-07-19 14:33:05 ,浏览量:4

使用 cookie 存储购物车数据。服务层负责逻辑,控制层负责读写 cookie 。

服务接口层
public interface CartService {

	/**
	 * 需求:添加购物车数据
	 * @param cartList
	 * @param itemId
	 * @param num
	 * @return PygResult
	 */
	List addGoodsToCartList(List cartList, Long itemId, Integer num);
}
服务实现层

实现思路:


1.根据商品 SKU ID 查询 SKU 商品信息

2.获取商家 ID

3.根据商家 ID 判断购物车列表中是否存在该商家的购物车

4.如果购物车列表中不存在该商家的购物车
-- 4.1 新建购物车对象
-- 4.2 将新建的购物车对象添加到购物车列表

5.如果购物车列表中存在该商家的购物车,查询购物车明细列表中是否存在该商品
-- 5.1. 如果没有,新增购物车明细
-- 5.2. 如果有,在原购物车明细上添加数量,更改金额

CartServiceImpl实现代码:

 @Service
public class CartServiceImpl implements CartService {

@Autowired
private TbItemMapper itemMapper;

@Override
public List addGoodsToCartList(List cartList, Long itemId, Integer num) {
	//1.根据商品 SKU ID 查询 SKU 商品信息
	TbItem item = itemMapper.selectByPrimaryKey(itemId);
	if(item==null){
		throw new RuntimeException("商品不存在")
	};
	if(!item.getStatus().equals("1")){
		throw new RuntimeException("商品状态无效");
	}
	
	//2.获取商家 ID
	String sellerId = item.getSellerId();
	
	//3.根据商家 ID 判断购物车列表中是否存在该商家的购物车
	Cart cart = searchCartBySellerId(cartList,sellerId);

	//4.如果购物车列表中不存在该商家的购物车
	if(cart==null){
		//4.1 新建购物车对象 ,
		cart=new Cart();
		cart.setSellerId(sellerId);
		cart.setSellerName(item.getSeller());
		TbOrderItem orderItem = createOrderItem(item,num);
		List orderItemList=new ArrayList();
		orderItemList.add(orderItem);
		cart.setOrderItemList(orderItemList);
		//4.2 将购物车对象添加到购物车列表
		cartList.add(cart);
	}else{
		//5.如果购物车列表中存在该商家的购物车
		// 判断购物车明细列表中是否存在该商品
		TbOrderItem orderItem = searchOrderItemByItemId(cart.getOrderItemList(),itemId);
  if(orderItem==null){
			//5.1. 如果没有,新增购物车明细
		orderItem=createOrderItem(item,num);
		cart.getOrderItemList().add(orderItem);
	}else{
		//5.2. 如果有,在原购物车明细上添加数量,更改金额	
		orderItem.setNum(orderItem.getNum()+num);orderItem.setTot
	alFee(newBigDecimal(orderItem.getNum()*orderItem.getPrice().doubleValue()) );
		//如果数量操作后小于等于 0,则移除
		if(orderItem.getNum()            
关注
打赏
1688896170
查看更多评论
0.1063s