十日冲刺之地十日

 昨天进行:


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>

 

遇到问题:知识掌握少,出现乱码问题,,未解决。

燃尽图:

原文地址:https://www.cnblogs.com/xuemo/p/6854400.html