昨天进行:
12.生成订单
在购物车中,当购物完成后,用户点击 生成订单 生成订单
访问一个addOrder.jsp -- 列出订单的基本信息,要求用户输入收货地址和支付方式
AddOrderServlet -- 创建Order对象设置基本值,其中Money需要在后台根据购物车实时计算出来 调用OrderService中生成订单的方法生成订单, 清空购物车 回到主页
OrderService -- 中生成订单的方法 在订单表中插入一条记录 在订单项表中插入记录保存此订单和商品之间的关系 从商品表中的库存数量中扣除购买数量 需要进行事务管理
OrderDao -- 增加订单的方法 增加订单项的方法
ProductDao -- 增加扣除商品数量的方法
今天进行:(订单的增删改查,,和在线支付的尝试,榜单)
13.订单查询
在主页中 提供 订单查询
OrderListServlet 获取当前客户的用户号,调用Service中查询指定用户订单的方法,查询出这个用户所有订单,存入request域,带到页面显示
OrderService 提供根据用户id查询订单的方法
OrderDao 提供根据用户id查询订单的方法
orderList.jsp 展示所有订单
订单号 ok
用户名称 --- 用户表中查
订单金额 ok
支付状态 ok
收货地址 ok
下单时间 ok
------------------------------------------------------
商品名称 购买数量 单价 总金额 --------------------------------订单项 表 商品表
------------------------------------------------------
萨摩犬 1 999 999
哈士奇 1 888 888
....
...
------------------------------------------------------
14.订单删除
在订单列表 对于未支付的订单 提供 订单删除
DelOrderServlet 获取订单id 调用service中根据订单id删除订单的方法,删除后再重新回到订单列表页面
OrderService 提供根据订单id删除订单的方法 将订单相关商品的库存数量加回去 删除订单项表中的记录 删除订单记录 -- 事务控制
OrderDao中提供根据订单编号删除订单项和 订单的方法
ProdDao中提供修改库存数量的方法
15.在线支付(在真正的开发中,一些功能可能不是我们自己开发的,而是调用第三方接口来实现)
在订单列表页面 对于未支付的订单 提供 在线支付
pay.jsp 页面中选择要支付的银行
PayServlet 准备访问易宝所需要的所有的参数,将这些参数保存到request域中,再转发到confirm.jsp页面
confirm.jsp 将request域中的所有访问易宝的参数取出,组织表单 提交到易宝
CallBackServlet处理支付完成后的回调
16.销售榜单下载:管理员可能需要查看商品销售的数据-- 多表查询 csv格式的文件 文件下载
index.jsp中提供销售榜单下载连接
SaleListServlet 调用Service中查询销售榜单的方法 将查询到的销售榜单组织成csv格式的文件后提供下载
OrderService 查询销售榜单
OrderDao 查询销售榜单:查询所有已支付订单找对应的订单项信息找到销售出去的商品,做一个销售数量的sum()操作
select products.id prod_id,products.name prod_name,sum(orderitem.buynum ) sale_num
from orders ,orderitem ,products
where
orders.id=orderitem.order_id
and
orderitem.product_id=products.id
and
orders.paystate = 1
group by products.id
order by sale_num desc;
商品编号 商品名称 总销售数量
1 xxx 100
2 yyy 10
17.权限控制
部分代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <h1>订单列表</h1><hr> <c:forEach items="${requestScope.list}" var="olf"> <h3> 订单号:${olf.id }<br> </h3> 用户名称 :${olf.username }<br> 订单金额 :${olf.money }<br> 支付状态 : <c:if test="${olf.paystate == 0}"> <font color="red">未支付</font> <a href="/DelOrderServlet?id=${olf.id }">订单删除</a> <a href="/pay.jsp?id=${olf.id }&money=${olf.money }">在线支付</a> </c:if> <c:if test="${olf.paystate != 0}"> <font color="blue">已支付</font> </c:if> <br> 收货地址 :${olf.receiverinfo }<br> 下单时间 :${olf.ordertime }<br> <table width="100%" border="1"> <tr> <th>商品名称</th> <th>商品种类</th> <th>购买数量</th> <th>商品单价</th> <th>总金额</th> </tr> <c:forEach items="${olf.prodMap}" var="entry"> <tr> <td>${entry.key.name }</td> <td>${entry.key.category }</td> <td>${entry.value }</td> <td>${entry.key.price }</td> <td>${entry.key.price * entry.value }</td> </tr> </c:forEach> </table> <hr> </c:forEach> </body> </html>
遇到问题:知识掌握少,出现乱码问题,,未解决。
燃尽图: