├── .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`)); --------------------------------------------------------------------------------