第1章 任务_订单模块
1_模型的抽取
2_提交订单
3_查询我的订单
4_订单详情
5_支付功能
6_权限过滤器
第2章 1_模型的抽取
2.1 分析超市小票
会员ID:1231231
流水号:hrwj_ba_31_sy003_1002
交易时间:2017年3月10日08:41:53
商品名称 商品价格 商品数量 小计
好日子 15 2 30
芙蓉王 25 2 50
黄鹤楼 15 3 45
大前门 10 1 10
总金额:135元
设计表,存储小票上的数据
会员id 流水号 交易时间 商品名称 商品价格 商品数量 小计 总金额
1231231 XXX XXXX 好日子 15 2 30 135
1231231 XXX XXXX 芙蓉王 25 2 50 135
1231231 XXX XXXX 黄鹤楼 15 3 45 135
1231231 XXX XXXX 大前门 10 1 10 135
弊端:数据冗余严重 DB原则:存储最少的数据,办更多的事情
用户表user(uid,username,password,name,birthday,telephone,state,code…)
一个表专注于交易描述 ,订单表 orders
订单id(流水号) 会员id 交易时间 总金额 收货人姓名 地址 电话 订单状态(1234)
1123 1231231 XXXX 135
1124 1234444 YYYY 200
orders表中的会员id列参照了用户表uid
订单状态:
买家:下单未付款,付款未发货,已发货,签收
卖家: 未付款,发货,未签收,已收货(结束)
一个表专注于每笔订单详细交易情况,订单项orderitem
订单项id 商品id 数量 小计 所在订单编号
001 p003 2 30 1123
002 p005 2 50 1123
003 p101 3 45 1123
004 p220 1 10 1123
005 p334 1 101 1124
006 p556 3 54 1124
007 p445 5 45 1124
orderitem表中的商品id参照了商品表的pid
orderitem表中的所在订单编号参照了订单表的订单id
2.2 提交订单原理分析
用户点击提交订单,将购物车中的数据以订单/订单项形式保存下来,清空购物车
保存订单:
为订单表中插入一行数据,描述本次交易,这行数据部分数据是通过程序赋予,部分数据来自购物车的,部分数据来自session中的用户
oid:UUIDUtils orderTime:new Date(); total: 从购物车获取
state:1 address: null name:null telephone:null uid:从session中的用户获取
保存订单项:
向订单项表中插入数据,描述当前订单的详细的购买信息,部分数据来自于购物车,部分数据需要通过程序赋予
itemid: UUIDUtils quantity:来自于购物车中的购物项
total:来自于购物车中的购物项 pid:来自于购物车上的购物项下商品对象pid
oid:来自于当前订单id
提交订单时,订单以及订单项必须同时成功(事务)
2.3 实现订单模块相关程序
OrderServlet OrderService OrderServiceImp OrderDao OrderDaoImp
Order{ User user, List list=new ArrayList(); …}
OrderItem{ Product product,Order order;}
2.4 步骤实现
2_OrderServlet__>saveOrder
//确认用户登录状态
//创建订单对象,为订单对象赋值
//遍历购物项的同时,创建订单项
//调用业务层功能:保存订单
//清空购物车
//将订单放入request
//转发/jsp/order_info.jsp
return “/jsp/order_info.jsp”;
3_OrderService
利用事务保存订单,订单项
4_OrderDao
5_/jsp/order_info.jsp
获取到订单信息
总结:
1_模型的抽取
2_业务层事务