Baishop电子商务系统设计文档.docx
《Baishop电子商务系统设计文档.docx》由会员分享,可在线阅读,更多相关《Baishop电子商务系统设计文档.docx(44页珍藏版)》请在冰点文库上搜索。
Baishop电子商务系统设计文档
Baishop电子商务系统文档
概述
Baishop是一款B2C电子商务网站,通过界面主题改版,可以成为通用的电子商务构建平台,您可以非常方便的开一个网上商店,在网上开展自己的生意。
网站采用纯Java编写,基于JDK6.0,使用MySQL数据库。
设计原则
◆先进性:
系统采用面向对象开发方法,模块化分布式软件体系和多层化系统技术架构,等业界先进架构和技术。
◆可靠性:
系统具有高度的健壮性,具备处理各种非正常状态和事件的能力,确保7*24小时运行。
◆简易实用性:
系统人机界面友好,Web标准支持良好,安装、使用非常简单,方便定制所需页面。
◆可扩展性:
系统提供高度的可扩展性,可通过添加插件,可提供多种特殊的功能;可通过选择不同主题,方便地改变页面的显示效果。
◆可维护性:
系统通过Spring框架,实现依赖注入功能,可通过XML来配置类的关系和属性注入,而无需修改源代码。
◆可自定义性:
用户可自定义选择系统提供的版式布局,主题风格,模块功能,也可以添加定义页面,在自定义页面中,可拖拉添加和移除模块功能。
◆多种数据库:
本系统持久层使用iBATIS框架,实现代码与数据持久层的分开,将数据库操作的SQL语句配置在XML中,可随时修改和替换XML中的SQL,来改变对数据库的操作和变换。
实现功能
◆商品展示、大图展示、分类展示、详细描述。
◆商品评论,商品留言,商品推荐。
◆商品的关键字搜索、分类搜索。
◆购物车、下单流程。
◆在线支付、货到付款。
◆在线客服、疑难解答。
◆购买记录、付款记录、收货地址。
◆积分兑换、积分查询。
◆会员注册、商品管理、订单管理、库存管理。
◆用户管理、客服管理、权限管理。
◆商品促销活动管理、业务分析与统计。
◆商品推广,商品的RSS聚合。
◆静态促销网页生成。
◆
开发工具
◆系统架构:
B/S
◆编程语言:
Java
◆应用框架:
后台Spring3.x+Ibatis2.x,MVC使用为SpringMVC+Velocity模板引擎,前端脚本jQuery1.5
◆开发工具:
Eclipse3.7
◆运行环境:
Nginx+Tomcat7.x(JBoss7.x)+Jdk1.6(JRockit)
◆操作系统:
Linux
◆数据库:
MySQL5.x及以上
体系结构
网络拓扑图
系统部署图
系统设计
主题风格
目前系统提供了以下主题风格,用户如果有设计能力,也可以在WEB-RES/themes/目录中扩展添加第三方主题。
默认主题(default)
模块功能
技术架构
架构图
Web层
Velocity(模块引擎)【前台公网主站使用】
在前台使用。
Extjs4(界面JS框架)【后台ERP系统使用】
ExtJS是一种主要用于创建前端用户界面。
ExtJS是一个基本与后台技术无关的前端javascript框架。
ExtJS的主要优点是功能强大、控件丰富、界面美观、使用简单。
2011年4月22日,Extjs4.0正式发布,主要有以下改进:
核心改进:
简化架构和重塑基础。
这些变化不单提供了产品性能,还提高了其健壮性。
测试框架:
在所有支持的浏览器上对框架进行了持续全面的测试。
类系统:
Extjs实现一个功能更完整的类系统,包括类的导入和继承等,在4.0中框架不再扩展数组或函数等原生对象,因此,与其它的框架同时加载到页面时,再也不会产生冲突。
应用架构:
在ExtJS4,引入了一个标准化的几乎适合任何ExtJS应用程序的MVC风格的应用架构。
使用MVC,开发团队只需要学习一种架构就能理解任何ExtJS4的应用。
大量的界面控件:
包括Windows、Forms、ComboBox、Grid、Tabs、Tree、ToolbarsandMenus、DataView、Charts、LayoutManagers、DragandDrop、Dreawing、Direct
全新的图表库:
ExtJS4中包含全新的、插件自由的图表库,包括饼图、线图、面积图、雷达图等等,所有这些都是动画的、易于配置的和可扩展的。
Springmvc(MVC框架)
SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
SpringMVC是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架。
SpringMVC它是一个纯正的servlet系统,是单例模式,在性能上,会比struts、webwork优越很多。
SpringMVC易于同其它View框架(Velocity,Freemake,Titles等)无缝集成,采用IOC便于包含多种视图技术。
Springsecurity(WEB安全框架)
SpringSecurity为基于J2EE企业应用软件提供了全面安全服务框架。
SpringSecurity安全包括两个主要操作:
第一个被称为“认证”,是为用户建立一个系统能识别的身份验证。
SpringSecurity广泛支持各种身份验证模式,这些验证模型绝大多数都由第三方提供,如:
JA-SIGCentralAuthenticationService(这是一个流行的开源单点登录系统)。
第二个叫“授权”,指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,用户身份已经由身份验证过程建立。
Springvalidator(表单验证)
Spring-Validator的主要意图是为SpringMVC提供简洁、可配置的验证机制,提高Spring的开发效率。
主要功能是:
提供Spring客户端验证机制,就是通过读取配制,在JSP页面中生成相应的javascript,然后点击submit的时候,Alert出相应的信息。
提供Spring服务器端通用的可配置的验证,就是通过服务端beans注入的方式,使用validatorapi进行验证。
Servcice层
Springioc(控制反转)
控制反转模式(也称作依赖性注入)的基本概念是:
不创建对象,但是描述创建它们的方式。
在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。
容器负责将这些联系在一起。
Springaop(切面编程)
AOP即面向切面的编程,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。
AOP的核心构造是切面,它将那些影响多个类的行为封装到可重用的模块中。
Springremoting(远程服务)
Remoting实际上是一种企业分布式计算的组件。
在同一服务器(Java虚拟机)内进行调用的服务(或类)并不需要把自己暴露为一种远程服务;但是,如果你需要与一个外部程序(在不同的服务器上或在一个不同的组织中)进行通讯的话,那么,必须把它实现为一个远程服务。
Spring框架为把业务类暴露为远程服务提供了一种独特而灵活的方式。
Spring目前提供了对RMI、HttpInvoker、Hessian、Burlap、JMS及WebService等Remoting技术的集成。
Spring屏蔽了这些实现技术的差异,用户只需开发简单的Java对象(PlainOldJavaObjects,POJO)然后按照Spring规定的格式进行配置文件的编写即可。
下面介绍几种常用优秀的方式,不常用或不好用的就不说了:
Hessian:
Hessian是一个由CauchoTechnology开发的轻量级二进制RPC协议,它使用一种定制的串行化技术来实现跨网络发送Java对象。
Hessian的优点是可以透过防火墙,使用简单的方法提供了RMI的功能。
除了对Java支持外,Hessian还提供对于例如PHP,Python,C++和C#等其它语言的实现支持。
HttpInvoker:
HttpInvoker是Spring专门提供的Remoting策略,HttpInvoker将参数和返回值通过Java的序列化机制进行编组和反编组,它具有RMI的支持所有可序列化对象的优点。
HttpInvoker是使用Http协议传输二进制流的,传输效率比Hessian要高,但HttpInvoker只支持JAVA语言。
JMSRPC:
JMS是一种应用于异步消息传递的标准API,JMS也是应用于不同程序间通讯的。
JMS的优点:
不用等待、面向消息、位置独立、确保投送。
Spring可以实现基于JMS的RPC服务,可以实现异步远程方法调用。
Dao层
Spring+ibatis(持久层框架)
iBATIS是一个‘半自动’ORM的实现,最直接的好处就是不但为程序员提供了对象与关系数据库之间的映射,同时提供操作方法与SQL间的直接影射,设计者可以直接为一个方法指定一条SQL语句,从而取得更加准确的数据,同时为优化查询、连接查询提供了方便。
iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验。
iBatis可以进行细粒度的优化,SQL的执行全部掌握在程序员手中。
它与Hibernate相比,提供了更多的灵活性与可控性。
SpringDAO模型提供了对iBATIS的良好支持,可以让ibatis集成到Spring的声明式事务中。
Springtransaction+jta(分布式事务管理)
Spring框架提供了一致的事务管理抽象。
主要特点如下:
提供一致的编程模型,如JTA、JDBC、Hibernate、iBATIS、JPA和JDO。
提供声明式事务管理,包括XML配置和注解方式。
JTA,即JavaTransactionAPI,译为Java事务API。
JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。
Spring可以集成JTA,让JTA应用在Spring强大的声明式事务中。
数据库
系统库baishop-ass
系统用户表:
bai_admins
后台管理系统登录用户表
Fields
字段
类型
键
默认值
说明
user_id
int(11)unsigned
主键
自增
用户的自增id
username
vrchar(64)
UQE
‘’
用户名
password
vrchar(64)
‘’
密码
name
varchar(64)
‘’
姓名
code
varchar(64)
UQE
‘’
工号
sex
vrchar(4)
‘’
性别:
’男’、’女’
position
varchar(64)
0
职务
mobile
varchar(64)
‘’
手机
email
varchar(64)
‘’
邮箱
reg_time
datetime
1000-01-0100:
00:
00
注册时间
update_time
datetime
1000-01-0100:
00:
00
修改时间
last_login_time
datetime
1000-01-0100:
00:
00
最后一次登录时间
last_login_ip
Varchar(64)
‘’
最后一次登录ip
visit_count
bigint(20)unsigned
0
登录次数
is_allow_login
tinyint
1
是否允许登录,枚举101:
1,允许;0,不允许
enable
tinyint
1
是否启用,枚举102:
1,启用;0,禁用
Indexes
名称
类型
字段
primary
PRIMARY
user_id
uqe_username
UNIQUE
username
uqe_code
UNIQUE
code
系统角色表:
bai_roles
后台管理系统用户角色表
Fields
字段
类型
键
默认值
说明
role_id
int(11)unsigned
主键
自增
角色的自增id
role_pid
int(11)unsigned
IDX1
0
角色的父id
role_name
vrchar(64)
UQE
‘’
角色名
role_type
vrchar(32)
‘’
角色类型:
ROLE_ADMIN(管理员)
ROLE_USER(普通用户)
role_desc
Varchar(255)
‘’
描述
sort
int(11)unsigned
IDX
0
角色显示顺序,数字越大越靠后
leaf
tinyint
0
是否是叶子节点
Indexes
名称
类型
字段
primary
PRIMARY
user_id
uqe_role_name
UNIQUE
role_name
idx_role_pid
INDEX
role_pid
idx_role_sort
INDEX
sort
系统模块表:
bai_modules
后台管理系统功能模块表
Fields
字段
类型
键
默认值
说明
module_id
int(11)unsigned
主键
自增
模块的自增id
module_pid
int(11)unsigned
IDX1
0
模块的父id
text
varchar(64)
UQE
‘’
模块名称
type
vrchar(32)
‘’
模块类型。
SYSTEM(子系统)、
GROUP(模块组)、
MODULE(应用模块)、
FUNCTION(操作功能)、
CONSTANT(操作常量)
url
varchar(255)
‘’
模块URL,必须以“http:
//”或“/”开头,要么为空串。
在url后面可以带“_blank”参数,表示在新的窗口打开;或“_self”参数,表示在当前窗口打开;或不加参数,表示在框架中打开;参数以空格分隔
iconCls
varchar(32)
‘’
模块图标
expanded
tinyint
1
是否展开
sort
int(11)unsigned
IDX2
0
模块的排序
Indexes
名称
类型
字段
primary
primary
module_id
uqe_modules_text
UNIQUE
text
idx_modules_pid
INDEX
module_pid
idx_modules_sort
INDEX
sort
组织架构表:
bai_depts
组织架构(部门)信息表。
Fields
字段
类型
键
默认值
说明
dept_id
int(11)unsigned
主键
自增
部门ID
dept_pid
int(11)unsigned
IDX
0
上级部门的ID
dept_code
Varchar(64)
UQE
‘’
编码
dept_name
Varchar(64)
‘’
名称
city_pinyin
Varchar(64)
‘’
简拼
city_remark
Varchar(255)
‘’
备注
Indexes
名称
类型
字段
primary
PRIMARY
dept_id
uqe_dept_code
UNIQUE
dept_code
用户角色关系表:
bai_admins_roles
后台管理用户和角色关系表
Fields
字段
类型
键
默认值
说明
user_id
int(11)unsigned
主键
0
用户ID
role_id
int(11)unsigned
0
角色ID
Indexes
名称
类型
字段
primary
PRIMARY
user_id,role_id
idx_user_id
INDEX
user_id
角色模块关系表:
bai_roles_modules
后台管理角色和模块关系表
Fields
字段
类型
键
默认值
说明
role_id
int(11)unsigned
主键
0
角色ID
module_id
int(11)unsigned
0
模块ID
Indexes
名称
类型
字段
primary
PRIMARY
role_id,module_id
idx_role_id
INDEX
role_id
用户模块关系表:
bai_admins_modules
后台管理角色和模块关系表
Fields
字段
类型
键
默认值
说明
user_id
int(11)unsigned
主键
0
用户ID
module_id
int(11)unsigned
0
模块ID
Indexes
名称
类型
字段
primary
PRIMARY
user_id,module_id
idx_user_id
INDEX
user_id
用户组织架构关系表:
bai_admins_depts
企业人员与组织架构(部门)关系表
Fields
字段
类型
键
默认值
说明
user_id
int(11)unsigned
主键
0
用户ID
dept_id
int(11)unsigned
0
部门ID
Indexes
名称
类型
字段
primary
PRIMARY
user_id,dept_id
idx_user_id
INDEX
user_id
系统参数表:
bai_params
用来记录一些全局的设置和选项。
Fields
字段
类型
键
默认值
说明
params_id
int(11)unsigned
主键
自增
参数的ID
params_name
varchar(64)
IDXUQE
‘’
参数名称
params_value
Varchar(2000)
‘’
参数的值
params_remark
Varchar(255)
‘’
备注
Indexes
名称
类型
字段
primary
PRIMARY
params_id
idx_params_name
INDEX
UNIQUE
params_name
表内容
参数
说明
mall_keywords
商城网站搜索关键字
mall_description
商城网站搜索描述
mall_copyright
商城网站版权所有
系统枚举表:
bai_enums
用来记录一些全部的枚举选项。
Fields
字段
类型
键
默认值
说明
enums_id
int(11)unsigned
主键
枚举ID
enums_type
varchar(64)
IDXUQE
枚举类型
enums_code
varchar(64)
枚举码
enums_text
Varchar(2000)
‘’
枚举值
enums_remark
Varchar(255)
‘’
备注
Indexes
名称
类型
字段
primary
primary
enums_id
idx_enums_type_key
INDEX
UNIQUE
enums_type
enums_code
idx_enums_type
INDEX
enums_type
idx_enums_code
INDEX
enums_code
表内容
枚举
说明
键:
值
100
是否XX
1:
是
0:
否
101
是否允许
1:
允许
0:
不允许
102
是否启用
1:
启用
0:
禁用
103
是否可见
1:
可见
0:
不可见
104
性别
0,保密;1,男;2,女
201
属性输入类型
0,不可输入;1,文本输入;2,单选输入;3,多选输入
301
订单状态
0,未确认;1,已确认;2,已完成;3,已取消;4,退货;5,无效
302
商品配送情况
0,未发货;1,已发货;2,已收货;3,备货中
303
支付状态
0,未付款;1,付款中;2,已付款
304
缺货处理方式
1,等待所有商品备齐后再发;
2,取消订单;
3,与店主协商
305
发票类型
0,个人;1,企业
306
支付类别
1,货到付款;
2,网银支付;
3,支付平台;
307
配送时间方式
1,工作日、双休日与假日均可送货
2,只有双休日、假日送货(工作日不用送货)
3,只有工作日送货(双休日、假日不用送)写字楼/商用地址客户选择
学校地址(该地址白天没人,请尽量安排其他时间送货)特别安排可能超出预计送货天数
行政区划表:
bai_city
城市区划信息表。
Fields
字段
类型
键
默认值
说明
city_id
int(11)unsigned
主键
自增
城市ID
city_pid
int(11)unsigned
IDX
0
上级区域的ID
city_code
Varchar(64)
UQE
‘’
编码
city_name
Varchar(64)
‘’
名称
city_pinyin
Varchar(64)
‘’
简拼
city_remark
Varchar(255)
‘’
备注
Indexes
名称
类型
字段
primary
PRIMARY
city_id
uqe_city_code
UNIQUE
city_code
远程服务访问权限表:
bai_remote_auths
远程服务访问的权限信息。
Fields
字段
类型
键
默认值
说明
id
int(11)unsigned
主键
自增
用户的自增id
user
Varchar(64)
‘’
用户名
password
Varchar(64)
‘’
密码
provide
Varchar(128)
‘’
用户提供的用途
auths
Varchar(8000)
权限列表,JSON格式,’all’代表所有权限,一般格式如下:
{UsersService:
['UsersgetUsers(longuserId)','UsersgetUsers(Stringusername)']}
Indexes
名称
类型
字段
primary
PRIMARY
id
uqe_user
UNIQUE
user
商城库