购物商城项目思路之购物车模块

购物车:

即使用户不登录也可以将商品加入购物车,购物车使用session实现.
封装实体对象:
购物项:CartItem
商品基本信息: product
购买数量: count
小计: subtotal
购物车:Cart
多个购物项: List<购物项>

总金额: total

案例1-将商品加入购物车

需求分析:
在商品详情页面上,当点击"加入购物车"按钮时,向服务器发送一个加入购物车的请求.
技术分析:
封装商品信息,并将封装好的商品信息放入购物车实体内,再将购物车实体放入session中.
session
步骤分析:
前台:
发送加入购物车的请求
/day03store/cart?method=addCartItemToCart
pid
count
后台:
编写CartServlet 继承 BaseServlet
//编写公共的 addCartItemToCart 方法
//1.获取请求携带的商品pid
//2.获取请求携带的count的值
//3.将 要加入购物车中的商品信息拼成购物项
//商品的基本信息  购买数量  小计

//4.将封装好的购物项加入购物车实体中,并将购物车实体放入session中.

案例2-将商品从购物车中删除

需求分析:
在购物车详情页面上,当点击"删除"超链接时,向服务器发送一个删除购物项的请求.
步骤分析:
前台:
/day03store/cart?method=removeCartItemFromCart
pid=10
后台:
web:
编写公共的 removeCartItemFromCart 方法
//1.获取请求携带的商品pid
//2.获取session中的购物车对象
//3.将该购物项从购物车中删除.
//4.将购物车实体放回session中

案例3-清空购物车

需求分析:
在购物车详情页面上,当点击"清空购物车"超链接时,向服务器发送一个清空购物车的请求.
步骤分析:
前台:
/day03store/cart?method=clearCart
后台:
web:
编写公共的 clearCart 方法
//1.获取session中的购物车实体对象
//2.调用方法清空
//3.将购物车实体放回session中

案例4-生成订单

需求分析:
在购物车详情页面上,点击"提交订单"按钮时,向服务器发送一个生成订单的请求.
将购物车中的商品信息,转成订单所需要的信息,并保存到数据库中.
将购物车中的商品信息  ====   订单所需要的商品信息
订单实体:
订单id : 后台生成
收货地址:待定
收货人:待定
联系方式:待定
用户实体(用户id):从session中获取
订单状态: 后台定义
订单生成日期: 后台定义
订单总金额:从购物车中获取
订单项集合: 从购物车中获取
订单项实体:
订单项id
商品信息
购买数量
小计
所属订单实体(订单id)


步骤分析:
前台:
点击"提交订单"按钮时,直接方法生成订单的请求
/day03store/cart?method=createOrder
后台:
web:
//零: 判断用户是否登录
HttpSession session = request.getSession();
user = session.getAttr("user");
if(user!=null){
//一: 生成订单实体信息
Orders order = new Orders();
//1.1订单id : 后台生成
orders.setOid(UUID);
//1.2用户实体(用户id):从session中获取
orders.setUser(user);
//1.3订单状态: 后台定义
orders.setState(0);
//1.4订单生成日期: 后台定义
orders.setOrdertime(new Date());
//1.5订单总金额:从购物车中获取
cart = session.getAttr("cart");
orders.setTotal(cart.getTotal());
//1.6订单项集合: 从购物车中获取
// 将购物项转成订单项
//获取所有的购物项集合
List<CartItem> cartItemList = cart.getCartItemList();
for(CartItem ci:cartItemList){
// 将每一个购物项转成订单项
OrderItem oi = new OrderItem();
//订单项id
oi.setItemId(UUID);
//商品信息
oi.setProduct(ci.getProduct());
//购买数量
oi.setCount(ci.getCount());
//小计
oi.setSubTotal(ci.getSubTotal());
//所属订单实体(订单id)
oi.setOrders(order);
// 将订单项放入订单项集合中
orders.getList().add(oi);
}
//二: 调用sevice完成订单的添加功能
service.createOrder(order);
}
service:
createOrder(order){
//开启手动事务
//调用dao添加订单的基本信息
dao.addOrder(order);
//遍历订单项list
//调用dao添加订单项的基本信息
dao.addCartItem(cartItem);
}
dao:
//添加订单的基本信息
addOrder(order){

}
//添加订单项的基本信息
addCartItem(cartItem){

}





猜你喜欢

转载自blog.csdn.net/weixin_42286648/article/details/80854014