网上商城类似于现实世界当中的商店,
差别是利用电子商务的各种手段,达成从买到卖的过程的虚拟商店,从而减少中间环节,消除运输成本和代理中间的差价,造就对普通消费和加大市场流通带来巨大的发展空间。
1.2商城类别| 英文类别 | 介绍 | 典型代表 |
|---|---|---|
| B2B | Business To Business,商家对商家 | B2B典型代表有阿里巴巴。 |
| B2C | Business To Customer,商家对顾客销售 | B2C典型代表有当当网、京东商城; |
| C2C | Customer to Customer,客户和客户 | C2C典型代表有转转、咸鱼等。 |
| O2O | Online To offline,线上线下相结合 | 020典型代表有象屿商城。 |
后台常见功能模块
。商品管理:包括后台商品库存管理、上货、出货、编辑管理和商品分类管理、商品品牌管理等。
。订单管理:在线订单程序,使消费者能够顺利的通过WEB在线的方式,直接生成购买订单。
。商品促销:一般的购物系统多有商品促销功能,通过商品促销功能,能够迅速的促进商城的消费积极性。
。支付方式:即通过网上钱包、电子支付卡。进行网上资金流转换的业务流程;国内主流支付方式包括:支付宝、财富通、网银在线等。
还有部分网上商城支持货到付款,如京东商城、第九大道、鹏程万里贸易商城。
。配送方式:购物系统集成的物流配送方式,从而方便消费者对物流方式进行在线选择。如:EMS、顺丰等等。
。会员模块:在购物系统中,集成会员注册是吸引会员进行二次购买和提升转换率的方式。
前端界面功能模块
。模板风格自定义:即通过系统内置的模板引擎,可以方便的通过后台可视化编辑,设计出符合自身需求的风格界面。
。商品多图展示:随着电子商务的发展商品图片成为吸引消资首的弟一妥系,多图展小即据从EI/cy,m消费者的购物欲望。
。自定义广告模块:内置在系统中的广告模块,网站管理员能够顺利的通过操作就可以在前端界面中添加各种广告图片。
。商品展示:通过前端界面,以标准的或者其他个性化的方式向用户展示商品各类信息,完成购物系统内信息流的传递。
。购物车:用户可对想要购买的商品进行网上订购,在购物过程中,随时增删商品。
| 分类 | 名称 | 语种 |
|---|---|---|
| 操作系统 | 开发在Windowows10,上线在Linux centOs7.0 | 简体中文 |
| 数据库平台 | MySQL5.7+ | |
| 应用服务器 | Tomcat8+ | |
| java开发工具 | idea2020+ | |
| 框架 | JavaEE+ | |
| 项目名称 | 小米商城 mi_shop |
技术栈
| 技术名称 | 详情 | 备注 |
|---|---|---|
| java | JavaOOP java集合 java 反射多线程 | 数据库属性配置文件读取,用到Properties类 |
| JDBC | druid 连接池技术,DButils 框架, | DButils是JDBC的轻量级封装框架 |
| java Email | 注册发邮件,发送激活连接 | 必须先配置邮件的SMTP服务 |
| JavaWeb | B/S架构 HTTP协议 GET,POST请求 | |
| Servlet | Servlet Filter Listener | |
| Ajax | 原生的Ajax,JQuery Ajax ,AXios技术 | |
| Web 前端技术 | HTML,CSS JavaScript;JQuery 框架 bootstrap框架 | |
| JSON | 使用fastjson框架 | |
| T-SQL | DDM,DDL,DQL,DCL语言的编写 | 在MySQL客户端Native中写SQL脚本 |
主要功能
| 序号 | 模块名称 | 主要功能 |
|---|---|---|
| 1 | 商品显示模块 | 分页显示所有商品查看单个商品详细信息搜索商品 |
| 2 | 用户模块 | 新用户注册用户登录用户退出 |
| 3 | 购物车模块 | 加入商品到购物车修改所购商品数量 |
| 4 | 订单模块 | 提交订单并显示订单信息用户确认后生成正式订单用户查看历史订单 |
| 5 | 支付模块 | 完成在线支付功能 |
| 6 | 收货地址 | 管理收货地址 |
| 7 | 后台模块 | 主要实现商品的增删改查 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uYnqtYQw-1652444797481)(C:UsersAdministratorPictures网站流程图.jpg)]
3.数据表设计说明 用户模块涉及的表用户模块主要涉及到用户登录和注册功能以及地址选择功能
所以,用户模块设计两张用户表和地址表
用户表
存储用户信息标红会员和管理员
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| username | varchar | not null | 用户昵称 | |
| password | varchar | not null | 密码使用md5加密 | |
| varchar | not null | 邮箱 | ||
| gender | varchar | 性别 | ||
| flag | int | 默认0 | 状态标记 0未激活 1激活 2无效 | |
| role | int | 角色 : 0管理员 1会员 | ||
| code | varchar | 激活码 |
业务分析:
1.注册后的用户必须激活后才能登陆
2.注册后生成一个激活码链接给用户进行激活操作
收货地址 tb_address
存储用户的收货地址
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| detail | varchar(200) | not null | 详细地址 | |
| name | varchar(20) | not null | 收件人姓名 | |
| phone | varchar(11) | not null | 手机号 | |
| uid | int | 外键 | 用户ID | |
| level | int | 地址顺序 1是最高 |
业务分析:
1.一个用户可以有多个收货地址,详细地址不能相同
2.地址排序,通过level的设置排序 .而且用户可以设置这个值
商品模块涉及的表
商品模块可以对商品的类别进行管理
对商品信息进行管理
商品类别表 tb_goods_type
用于管理商品类别
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| name | varchar(50) | not null | 类型名称 | |
| level | int | not null | 类型级别123 | |
| Parent | int | not null | 上一级的序号 默认0 |
商品表 tb _goods
对商城商品管理的数据表
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| name | varchar(50) | 商品名 | ||
| pubdate | date | not null | 上架时间 | |
| picture | varchar(11) | 商品图片 | ||
| price | decimal(8,2) | 价格 | ||
| star | int | 评分 | ||
| intro | 商品详情 | |||
| typeid | int | 外键 | 商品类型ID | |
| gnum | int | default 100 | 商品数量,[库存] | |
| gstate | int | default 0 | 0是上架 1是下架 |
业务分析:
1.商品的 上架 没有下架 库存等
2.评分 可以通过评分进行排序
3.通过商品名称或类型进行搜索
…
购物车模块涉及的表
购物车模块有购物车表,订单表和订单详情表
购物车表 tb_car
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| pid | int | 商品ID | ||
| num | int | 购买数量[要减少商品库存数] | ||
| money | int | 订单金额 |
订单模块涉及的表
订单模块涉及的表有`订单表 (tb_order)和订单详情表(tb_orderdetail)
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| uid | int | 外键 | 用户ID | |
| moeny | decimal(8,2) | 订单总金额 | ||
| statue | int | 订单状态:0未支付 `1支付失败,3发货 4到货 5评价 | ||
| time | datetime | |||
| aid | int | 外键 | 收货地址id |
订单详情表 (tb_orderdetail)
| 字段 | 类型 | 主键 | 约束 | 备注 |
|---|---|---|---|---|
| id | int | 是 | 自增 | 主键 |
| Oid | int | 外键 | 订单ID | |
| pid | int | 外键 | 商品id | |
| num | int | 购买数量 | ||
| Money | decimal(8,2) | 金额 |
项目在开发过程中采用经典的三层架构(Web - Service - Dao),且前后端分离。因此,一些实时的前端渲染不再使用 JSP 实现,而通过 AJAX 实现。各层技术选型归纳如下:
4.1 Web 层Servlet:前端控制程序
HTML:前端页面(前后端分离架构,不适用JSP)
Filter:过滤器
BeanUtils:数据封装
fastjson:json 序列化工具,前后端数据通用传输格式
JavaMail:Java 邮件工具
4.3 Dao 层mysql:关系数据库
druid:数据库连接池
dbutils:数据库简易工具框架
代码文件结构如下图,以下对 java 文件夹下的不同目录中的代码功能做简要介绍
5.1domaincom.mi.shoping.domain中定义具体的 Bean 封装类,这些类中的私有 fields 与数据库中对应表的字段一一对应。
用户表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w39xYgk5-1652444797483)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201028012.png)]
商品类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fEG6X6zk-1652444797484)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201219955.png)]
订单表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9uOS3YKA-1652444797485)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201141680.png)]
购物车类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tHYLjqc1-1652444797487)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220510142442126.png)]
收货地址表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xW3pCWva-1652444797487)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201301892.png)]
5.2 dao
com.mi.shoping.dao 和 com.abe.dao.impl 对应项目架构中的 Dao 层,dao 中定义的数据库操作接口,dao.impl 中定义具体的实现类。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HFvRhn4J-1652444797488)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201641531.png)]
5.3 service
com.mi.shoping.service 和 com.mi.shoping.service.impl对应项目架构中的 Service 层。service 中定义业务逻辑接口,service.impl 中定义具体的业务逻辑实现类,根据不同的业务需求调用不同的 dao 实现类对象对数据库做 CRUD。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMVlwZn3-1652444797489)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201801401.png)]
5.4web
com.mi.shoping.web.servlet和 com.mi.shoping.web.filter 对应项目架构中的 Web 层。根据不同的 Web 应用定义相应的 Servlet 代码。项目中依据不同的执行实体分别定义了对应的 Servlet 类。后续开发还将抽取 Servlet 中的通用功能,并单独封装为一个抽象类 BaseServlet,并作为其它 Servlet 的父类。使得代码结构更加整洁,便于维护和扩展。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gRZztNuP-1652444797489)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220513201912963.png)]
5.4web
com.mi.shoping.web.servlet和 com.mi.shoping.web.filter 对应项目架构中的 Web 层。根据不同的 Web 应用定义相应的 Servlet 代码。项目中依据不同的执行实体分别定义了对应的 Servlet 类。后续开发还将抽取 Servlet 中的通用功能,并单独封装为一个抽象类 BaseServlet,并作为其它 Servlet 的父类。使得代码结构更加整洁,便于维护和扩展。
[外链图片转存中…(img-gRZztNuP-1652444797489)]



