• 大小: 14.93M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-01-19
  • 语言: Java
  • 标签: 网上书城  java  书城  

资源简介


1.功能需求

本系统主要涉及到3中对象:游客(未登录)商城注册用户管理员

游客(未登录):可以登录、注册、商品查看,能在线浏览商城中已有的书籍。不能直接购买和添加到购物车。

商城注册用户:可以进行商品查看、添加商品到购物车、购物车管理、生成订单、订单管理、在线支付。实体书购买则需要通过添加购物车,设置收货地址,填写相关收货信息,确认一切无误后,生成订单再在线支付,等待图书管理员以邮递的形式将实体书寄给用户。

管理员:可以添加商品、商品管理、查看订单 、榜单查看(导出)。管理员可以添加新的书籍和将出售完的书籍下架,系统还需要统计一段时间内各类书籍网络版和实体版的出售数量,并建立榜单来吸引用户。

2.功能分析

本系统目前设定12大功能:

1、用户注册     2、用户登录      3、管理员添加商品     4、查看商品列表     5、查看商品详情      6、将商品添加购物车

7、查看购物车    8、修改购物车     9、生成订单    10、订单查看(取消)   11、在线支付     12、下载销售榜单

1.用户注册

       用户需要填写用户名、密码、确认密码、昵称、邮箱、验证码。需要用户填写一次性的验证码,验证码输入正确,其他信息不为空,且邮箱格式输入正确,才可以注册,用户点击注册按钮,系统会向用户发送激活邮件,用户需要在限定时间内点击激活邮件内的激活链接进行激活,激活成功则注册成功,可以进行登录操作。

2.用户登录

       当用注册成功后才可以进行登录操作,如果登录成功,判断是否勾选了记住用户名,系统设置Cookie保存用户名7天;判断是否勾选自动登录,如果勾选了,系统设置Cookie保存用户名和密码7天,7天内自动登录。如果登录失败,显示用户名或密码错误。如果用户未激活,则无法登录成功。如果用户名不存在,则登录不成功。

      用户登录成功后会有一个注销按钮,点击注销按钮,可以注销用户。

3.添加商品

      管理员有权限添加商品,添加商品时需要添加一个商品图片,我们使用文件上传。添加商品时需要输入商品名称、商品价格、商品类别、商品数量、商品图片、商品描述。非管理员添加商品上传文件会显示权限不足。图片添加成功后会跳转到主页面。

4.查看商品列表

        可以以列表的形式查看所有商品的简略信息,商品会以图片的形式显示,通过点击商品名称或者商品图片,可以查看商品的详细信息。也可以根据商品id查找相应商品。

5.查看商品详情

       点击商品名称或者商品图片,可以查看商品的详细信息,商品详情页面会显示商品名称、商品价格、商品类别、商品数量、商品描述、商品图片以及添加到购物车等信息。

6.添加到购物车

        本系统对购物车功能进行了简化,没有使用到数据库,直接使用session存储信息。添加商品到购物车流程:点击添加到购物车,将商品id传递Servlet ,从Session中取出购物车对象,判断商品是否已经在购物车中,如果不在,添加商品到购物车数量 1 。如果商品不在购物车中,需要根据商品 id 查询商品所有信息,添加购物车。

7.查看购物车

       当点击查看购物车中商品时,会跳转到一个jsp页面,购物车是存储在session中的,那么在jsp页面上就可以直接得到session中的商品信息,包括商品名称、商品单价、可购买数量、购买数量、总价等信息。在购物车页面还可以清空购物车,删除购物车中单项商品,删除一项后,判断购物车是否为空,如果为空,移除购物车对象 。在删除商品时会有删除确认操作,确认删除后才可以删除。还可以修改购买的数量, 通过JavaScript 控制购物数量修改。可以点击 -按钮完成商品数量修改操作,也可以直接在文本框中输入相应数量进行修改。

8.修改购物车信息

       在购物车页面还可以清空购物车,删除购物车中单项商品,删除一项后,判断购物车是否为空,如果为空,移除购物车对象 。在删除商品时会有删除确认操作,确认删除后才可以删除。还可以修改购买的数量, 通过JavaScript 控制购物数量修改。可以点击 -按钮完成商品数量修改操作,也可以直接在文本框中输入相应数量进行修改。

9.生成订单

       在购物车页面,点击结算会出生成订单,跳转到订单页面,显示订单信息,需要填写收货地址。当订单生成后,需要对以下的表进行操作:1.订单表中要插入数据; 2.商品表中的商品数量要进行修改(修改商品的库存) 3.订单与用户之间也存在关系,添加订单时,也需要得到当前用户的id。

10.订单查看(取消)

       查看订单时,会根据用户的权限显示不同的信息,管理员可以查看做所有的订单,注册用户只能查看当前用户的订单。查询订单基本信息时,可以查询下单用户昵称和用户名,查询订单项信息时,可以查询商品的名称和单价。订单取消 : 删除订单表信息时,同时删除订单项信息 (订单项信息依赖 订单信息 ,必须先删除订单项)。注意事项 :1) 可以取消未支付的订单,如果订单已经支付,将无法取消 ;2) 管理员不能取消任何用户未支付订单,普通用户只能取消 自己的未支付的订单。

11.在线支付

       本系统的支付操作,使用了在线支付操作epay第三方支付平台,在显示订单页面上,显示的订单信息中,包含了当前支付状态。会显示  "已支付"  "未支付",如果是未支付,会有一个连接访问支付页面,并将当前订单的id,以及当前订单的金额传递到支付页面。在支付页面上可以选择银行,表单提交时,将订单编号,金额,以及银行进行提交。借助第三方支付工具进行支付,支付成功后,修改订单状态,修改订单状态要根据订单编号修改。

1) 网站进行支付,根据易宝支付接口请求规范,生成易宝需要数据,将数据提交到易宝指定网址 https://www.yeepay.com/app-merchant-proxy/node

* 在提交支付请求给易宝,需要将请求中数据,使用易宝提供密钥和算法进行加密,获得数字签名 hmac码 ,将hmac码发送给易宝

2) 易宝会连接银行,进行支付

3) 支付后,浏览器会以重定向方式访问 网站回调程序,易宝在收到银行转账后,会以Socket方式通知网站

* 在浏览器重定向通知后,提供给用户支付成功显示页面 (不要去修改订单状态)

* 在网站收到易宝点对点通知后,回复易宝success,修改订单状态

数字签名原理:将数据 使用密钥和算法加密后 获得数字签名hmac,将数据和数字签名hmac一起发送给易宝,易宝采用同样密钥和算法对数据进行加密获得数字签名hmac,比较请求中数字签名hmac与加密后获得数字签名hmac是否一致,如果一致 签名hmac有效 (数据没有被篡改 )

流程入口: 未支付订单可以进行支付,管理员不允许支付  

在线支付

1) pay.jsp 银行选择页面

2) OnlinePayServlet 准备易宝支付参数

* 提供密钥和算法  商家编号  真实的  将PaymentUtil 复制 utils包  , 将 merchantInfo.properties 复制 src

* responseURL 支付成功后 回调地址 ,该地址会收到 浏览器重定向和服务器点对点两次通知 ,确保该地址 可以被易宝访问  (estore项目必须要配置缺省虚拟主机)

将OnlinePayServlet准备易宝参数,传递JSP 确认

3) confirm.jsp 通过form的隐藏域,提交参数给易宝网址 https://www.yeepay.com/app-merchant-proxy/node

4) CallbackServlet 回调程序,收到浏览器重定向和服务器点对点两个通知 ,浏览器重定向,显示支付成功,不要修改订单状态。服务器点对点,修改订单状态,回复success 。

在显示订单的页面上,会提供一个删除订单的连接。删除订单注意事项 :1.删除订单要将orders表中数据删除---根据id删除。2.需要删除orderItem表中数据。 3.需要修改商品的数量 ,也就是说需要对products表进行update操作。

以上操作,都需要进行事务控制。

12.下载销售榜单

       导出销售榜单,可以获得商品销售情况,统计已支付订单项内容。榜单中包括销售信息、销售数量、订单支付情况等。榜单文件可以使用 POI类库导出为Excel。


资源截图

代码片段和文件信息

package cn.itcast.estore.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface PrivilegeInfo {

String value(); //权限名称
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-22 21:27  资料+源码+笔记\
     目录           0  2018-10-23 21:39  资料+源码+笔记\bookEstore\
     文件       59904  2018-10-14 17:01  资料+源码+笔记\bookEstore.doc
     文件         529  2014-09-27 09:38  资料+源码+笔记\bookEstore\.classpath
     目录           0  2014-09-27 09:38  资料+源码+笔记\bookEstore\.myeclipse\
     文件         303  2018-10-23 20:26  资料+源码+笔记\bookEstore\.mymetadata
     文件        1753  2014-09-27 17:49  资料+源码+笔记\bookEstore\.project
     目录           0  2018-10-23 20:35  资料+源码+笔记\bookEstore\.settings\
     文件         500  2014-09-27 09:38  资料+源码+笔记\bookEstore\.settings\.jsdtscope
     文件        1040  2014-09-27 17:50  资料+源码+笔记\bookEstore\.settings\com.genuitec.eclipse.j2eedt.core.prefs
     文件         120  2018-10-23 20:35  资料+源码+笔记\bookEstore\.settings\org.eclipse.core.resources.prefs
     文件         629  2014-09-29 17:22  资料+源码+笔记\bookEstore\.settings\org.eclipse.jdt.core.prefs
     文件         468  2014-09-27 17:50  资料+源码+笔记\bookEstore\.settings\org.eclipse.wst.common.component
     文件         252  2014-09-27 09:38  资料+源码+笔记\bookEstore\.settings\org.eclipse.wst.common.project.facet.core.xml
     文件          49  2014-09-27 09:38  资料+源码+笔记\bookEstore\.settings\org.eclipse.wst.jsdt.ui.superType.container
     文件           6  2014-09-27 09:38  资料+源码+笔记\bookEstore\.settings\org.eclipse.wst.jsdt.ui.superType.name
     文件        9231  2014-10-08 20:19  资料+源码+笔记\bookEstore\estoresystem.sql
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\
     文件         328  2014-09-27 09:39  资料+源码+笔记\bookEstore\src\c3p0-config.xml
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\cn\
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\cn\itcast\
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\cn\itcast\estore\
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\cn\itcast\estore\annotation\
     文件         394  2018-10-23 20:27  资料+源码+笔记\bookEstore\src\cn\itcast\estore\annotation\PrivilegeInfo.java
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\cn\itcast\estore\dao\
     文件        1868  2018-10-23 20:27  资料+源码+笔记\bookEstore\src\cn\itcast\estore\dao\OrderDao.java
     文件        1924  2018-10-23 20:27  资料+源码+笔记\bookEstore\src\cn\itcast\estore\dao\OrderItemDao.java
     文件         973  2018-10-23 20:28  资料+源码+笔记\bookEstore\src\cn\itcast\estore\dao\PrivilegeDao.java
     文件        2961  2018-10-23 20:28  资料+源码+笔记\bookEstore\src\cn\itcast\estore\dao\ProductDao.java
     文件        1826  2018-10-23 20:28  资料+源码+笔记\bookEstore\src\cn\itcast\estore\dao\UserDao.java
     目录           0  2014-09-29 21:53  资料+源码+笔记\bookEstore\src\cn\itcast\estore\domain\
............此处省略681个文件信息

评论

共有 条评论