├── .gitmodules
├── LICENSE
├── README.md
├── docs
└── 功能需求文档.md
└── sql
├── create_database.sql
├── create_table_books.sql
├── create_table_orders.sql
└── create_table_users.sql
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "E-book-client"]
2 | path = E-book-client
3 | url = git://github.com/liuzhengwei127/E-book-client.git
4 | [submodule "E-book-server"]
5 | path = E-book-server
6 | url = git://github.com/liuzhengwei127/E-book-server.git
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 五柳寄书
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # EBook
2 | EBook是一个简单在线图书购买平台Demo,项目采用Spring Boot+SpringMVC+Vue开发
3 |
4 | 项目演示地址:[http://47.100.236.223/ebook](http://47.100.236.223/ebook)
5 |
6 | > 建议用chrome或Firefox食用,由于服务器带宽较低,初次加载会较慢
7 |
8 |
9 |
10 | # 技术栈
11 |
12 | ## 后端技术栈
13 |
14 | 1. Maven
15 | 2. SpringBoot
16 | 3. SpringActuator
17 | 4. SpringSecurity
18 | 5. MyBatis
19 | 6. MySQL
20 | 7. Jackson
21 | 8. Lombok
22 | 9. Fastjson
23 |
24 | ## 前端技术栈
25 |
26 | 1. Vue
27 | 2. ElementUI
28 | 3. Bootstrap
29 | 4. axios
30 | 5. vue-router
31 | 6. vuex
32 | 7. vue-lazyload
33 | 8. vue-cli
34 |
35 | # 功能
36 |
37 | ## 用户功能
38 |
39 | * 首页
40 | * 登入登出、登录态一定时间保留
41 | * 浏览所有书籍并查看书籍详情
42 | * 购物车
43 | * 书籍搜索
44 | * 下单
45 | * 个人订单查看
46 | * 个人购买统计
47 |
48 | ## 管理员功能
49 |
50 | * 书籍信息管理
51 | * 用户权限管理
52 | * 所有订单管理
53 | * 搜索特定订单
54 | * 统计数据管理
55 |
56 | # 文档
57 | [功能需求文档](/docs/功能需求文档.md)
58 |
59 | # 快速开始
60 |
61 | ### E-book-client
62 | 1.克隆E-book-client到本地
63 |
64 | 2.安装依赖``npm install``
65 |
66 | 3.启动项目``npm run serve``
67 |
68 | # 更新记录
69 |
70 | ## 2019.3.11 更新
71 |
72 | 本次更新版本:
73 |
74 | v0.3
75 |
76 | 本次更新基本完成了前端所有的静态页面,包括书籍、订单、购物车、搜索等,并用Vue框架实现交互逻辑
77 |
78 | > 前端有了基本的样子
79 |
80 |
81 |
82 | ## 2019.4.3 更新
83 |
84 | 本次更新版本:
85 |
86 | v0.6
87 |
88 | 本次更新开发了后端,用SpringBoot+SpringMVC+JDBCTemplate基本实现后端基本功能,并以Mysql创建数据库
89 |
90 | > 整个项目能够基本使用
91 |
92 |
93 |
94 | ## 2019.4.12 更新
95 |
96 | 本次更新版本:
97 |
98 | v0.8
99 |
100 | 后端用ORM框架Mybatis重构了数据库连接与操作相关代码
101 |
102 | 并添加SpringActuator来监控后端程序运行状态
103 |
104 | > 本次更新将代码部署到了云服务器上
105 |
106 |
107 |
108 | ## 2019.4.17 更新
109 |
110 | 本次更新版本:
111 |
112 | v1.0
113 |
114 | 利用v-charts实现了统计的图表呈现
115 |
116 |
117 |
118 | ## 2019.4.22更新
119 |
120 | 本次更新版本:
121 |
122 | v1.4
123 |
124 | 利用Mongodb+Mysql双数据库源存储项目数据
125 |
126 | 基于阿里云短信服务开发了手机号注册功能
127 |
128 |
129 |
130 | ## 2019.4.28更新
131 |
132 | 本次更新版本:
133 |
134 | v2.0
135 |
136 | 使用SpringSecurity对后端端口进行了保护
137 |
138 | 基于SpringBootMail服务开发了邮箱密码找回功能
139 |
140 | 图片懒加载的使用(虽然加载还是很慢...可能是服务器带宽太小)
141 |
142 |
143 |
144 | # 版本历史
145 |
146 | 当前版本:v2.0
147 |
148 | #### 以下是版本历史
149 |
150 | V1.0:
151 |
152 | 1.前端用Vue框架,后端用SpringBoot+SpringMVC+JDBC,前后端基本打通
153 |
154 | 2.实现所有功能
155 |
156 | 3.后端用ORM框架(Mybatis)重构,优化数据库连接与操作代码
157 |
158 |
159 |
160 | V2.0:
161 |
162 | 1.关系数据库(Mysql)+Nosql数据库(MongoDB) 双数据库源管理数据
163 |
164 | 2.利用短信验证功能实现注册与登录
165 |
166 | 3.应用安全性保证(Spring Security)
167 |
168 | 4.实现邮件发送,并依此开发找回密码功能
169 |
170 |
171 |
172 |
173 |
174 |
175 | # 问题与讨论
176 | * 欢迎star
177 | * 有问题可用Issues反馈交流,请给出详细信息
178 |
179 | ## License
180 | [MIT](LICENSE)
--------------------------------------------------------------------------------
/docs/功能需求文档.md:
--------------------------------------------------------------------------------
1 | ### 用户管理:
2 |
3 | 管理员身份登录后,可以看到该功能;用户分为两种角色:顾客和管理员
4 |
5 | 1. 管理员可以禁用/解禁用户,被禁用的用户将无法登录系统
6 |
7 | ### 用户登录与注册
8 |
9 | 1. 用户登录需要输入用户名和密码
10 | 2. 被禁用用户无法登录系统,并且会提示用户“您的账户已经被禁用”
11 | 3. 根据用户名来确认其为管理员还是顾客,不同角色的界面具有差异
12 | 4. 新用户注册需要填写用户名、密码、重复密码、邮箱
13 | 5. 需要校验用户名是否重复,两次输入的密码是否相同、邮箱是否符合格式要求
14 |
15 | ### 书籍管理
16 |
17 | 管理员身份登录后,可以看到该功能
18 |
19 | 1. 管理员可以刘兰数据库中已有的书籍,以列表形式显示,包括书名、作者、封面、ISBN编号和库存量
20 | 2. 在列表上方提供搜索功能,管理员可以用书名来过滤想要查找的书籍
21 | 3. 管理员在列表中可以修改每本图书的上述属性,包括库存量
22 | 4. 管理员可以删除旧图书,可以添加新图书
23 |
24 | ### 浏览书籍
25 |
26 | 此部分功能可以复用“书籍管理”中的功能
27 |
28 | 1. 顾客和管理员都可以浏览数据库中已有的书籍,以列表形式显示,包括书名、作者、封面、ISBN编号和库存量
29 | 2. 在列表上方提供搜索功能,用户可以用书名来过滤想要查找的书籍
30 | 3. 选中某本书后,通过Ajax方式显示书的详细信息
31 |
32 | ### 购买书籍
33 |
34 | 1. 当用户浏览书籍时,可以选择将某本书放入购物车
35 | 2. 用户可以浏览购物车,看到自己放入购物车的所以书籍
36 | 3. 在购物车中点击购买书籍之后,清空购物车,同时书籍库存相应地减少
37 | 4. 购买书籍后,生成订单,存入数据库
38 |
39 | ### 订单管理
40 |
41 | 1. 顾客可以查看自己的所有订单
42 | 2. 管理员可以查看系统中所有的订单,并且可以使用搜索功能来实现过滤
43 |
44 | ### 统计
45 |
46 | 1. 管理员可以统计在指定时间范围内各种书的销量情况、每个用户的累计消费情况
47 | 2. 顾客可以统计在指定时间范围内自己购买书籍的情况
--------------------------------------------------------------------------------
/sql/create_database.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE ebook;
--------------------------------------------------------------------------------
/sql/create_table_books.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `ebookk`.`books` (
2 | `name` VARCHAR(50) NULL,
3 | `author` VARCHAR(50) NULL,
4 | `ISBN` VARCHAR(50) NOT NULL,
5 | `outline` VARCHAR(1000) NULL,
6 | `stock` INT NULL,
7 | `PRICE` FLOAT NULL,
8 | `url` VARCHAR(100) NULL,
9 | `press` VARCHAR(50) NULL,
10 | `year` VARCHAR(4) NULL,
11 | `pages` INT NULL,
12 | PRIMARY KEY (`ISBN`));
--------------------------------------------------------------------------------
/sql/create_table_orders.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `ebook`.`orders` (
2 | `id` INT NOT NULL,
3 | `account` VARCHAR(50) NULL DEFAULT NULL,
4 | `ISBN` VARCHAR(50) NOT NULL,
5 | `count` SMALLINT NULL DEFAULT NULL,
6 | `date` DATETIME NULL DEFAULT NULL,
7 | PRIMARY KEY (`id`, `ISBN`),
8 | INDEX `account_idx` (`account` ASC) VISIBLE,
9 | INDEX `ISBN_idx` (`ISBN` ASC) VISIBLE,
10 | CONSTRAINT `account`
11 | FOREIGN KEY (`account`)
12 | REFERENCES `ebookk`.`users` (`account`)
13 | ON DELETE NO ACTION
14 | ON UPDATE NO ACTION,
15 | CONSTRAINT `ISBN`
16 | FOREIGN KEY (`ISBN`)
17 | REFERENCES `ebookk`.`books` (`ISBN`)
18 | ON DELETE NO ACTION
19 | ON UPDATE NO ACTION);
--------------------------------------------------------------------------------
/sql/create_table_users.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `ebook`.`users` (
2 | `account` VARCHAR(50) NOT NULL,
3 | `password` VARCHAR(50) NULL,
4 | `name` VARCHAR(50) NULL,
5 | `allowed` TINYINT NULL,
6 | `ismanager` TINYINT NULL,
7 | PRIMARY KEY (`account`));
--------------------------------------------------------------------------------