BookSaleHub是一个功能完善、用户体验良好、安全可靠的在线图书销售系统,采用前后端分离架构设计。系统满足游客浏览、用户购买及管理员管理等多方面需求,为用户提供便捷的图书购买体验。
- 框架:React.js
- UI组件库:Ant Design
- 状态管理:Redux
- 路由管理:React Router
- HTTP客户端:Axios
- 构建工具:Webpack
- 框架:Spring Boot
- ORM框架:MyBatis-Plus
- 数据库:MySQL
- 缓存:Redis
- 搜索引擎:Elasticsearch
- 消息队列:RabbitMQ
- 安全框架:Spring Security + JWT
- API文档:Swagger
+------------------+ +------------------+ +------------------+
| | | | | |
| 前端应用层 | | 后端服务层 | | 数据持久层 |
| | | | | |
+------------------+ +------------------+ +------------------+
| | | | | |
| - 用户界面 | | - 用户服务 | | - MySQL数据库 |
| - 管理员界面 | | - 图书服务 | | - Redis缓存 |
| | | - 订单服务 | | - Elasticsearch |
| | | - 购物车服务 | | |
| | | - 支付服务 | | |
| | | - 搜索服务 | | |
| | | | | |
+------------------+ +------------------+ +------------------+
- 图书分类浏览:支持按类别、作者、出版社等多维度浏览图书
- 图书搜索:支持关键词搜索、高级搜索、搜索结果排序
- 图书详情:展示书名、作者、出版社、ISBN、价格、库存、简介、封面图片等信息
- 用户注册:支持邮箱或手机号注册,包含验证流程
- 用户登录:支持多种登录方式(用户名、邮箱、手机号)
- 权限管理:基于角色的访问控制(RBAC)
- 第三方登录:支持微信、QQ等第三方账号登录(可选功能)
- 购物车管理:添加、删除图书,编辑数量
- 收藏夹:收藏喜欢的图书
- 结算流程:选择收货地址、支付方式
- 支付集成:模拟支付流程
- 订单创建:生成订单号,记录订单信息
- 订单状态:待付款、已付款、已发货、已完成、已取消等状态管理
- 订单查询:查看当前订单及历史订单
- 订单详情:查看订单中的图书信息、收货信息、支付信息等
- 个人中心:展示用户基本信息
- 信息修改:修改用户名、邮箱、手机号等
- 地址管理:添加、编辑、删除收货地址
- 密码修改:修改登录密码
- 图书管理:添加、编辑、上下架图书
- 订单处理:发货、退货、修改订单状态
- 用户管理:查看用户信息、禁用/启用用户账号
- 统计分析:销售统计、用户活跃度分析等
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| username | VARCHAR(50) | 用户名 |
| password | VARCHAR(100) | 密码(加密存储) |
| VARCHAR(100) | 邮箱 | |
| phone | VARCHAR(20) | 手机号 |
| avatar | VARCHAR(255) | 头像URL |
| role | TINYINT | 角色(0-游客,1-注册用户,2-管理员) |
| status | TINYINT | 状态(0-禁用,1-正常) |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| title | VARCHAR(100) | 书名 |
| author | VARCHAR(100) | 作者 |
| publisher | VARCHAR(100) | 出版社 |
| publish_date | DATE | 出版日期 |
| isbn | VARCHAR(20) | ISBN |
| category_id | BIGINT | 分类ID(外键) |
| price | DECIMAL(10,2) | 价格 |
| stock | INT | 库存 |
| cover_url | VARCHAR(255) | 封面图片URL |
| description | TEXT | 图书简介 |
| status | TINYINT | 状态(0-下架,1-上架) |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| name | VARCHAR(50) | 分类名称 |
| parent_id | BIGINT | 父分类ID |
| level | TINYINT | 分类级别 |
| sort | INT | 排序值 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| user_id | BIGINT | 用户ID(外键) |
| book_id | BIGINT | 图书ID(外键) |
| quantity | INT | 数量 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| order_no | VARCHAR(50) | 订单号 |
| user_id | BIGINT | 用户ID(外键) |
| total_amount | DECIMAL(10,2) | 订单总金额 |
| pay_amount | DECIMAL(10,2) | 实付金额 |
| pay_type | TINYINT | 支付方式(1-支付宝,2-微信,3-银行卡) |
| status | TINYINT | 订单状态(0-待付款,1-已付款,2-已发货,3-已完成,4-已取消) |
| shipping_id | BIGINT | 收货地址ID(外键) |
| payment_time | DATETIME | 支付时间 |
| shipping_time | DATETIME | 发货时间 |
| receive_time | DATETIME | 收货时间 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| order_id | BIGINT | 订单ID(外键) |
| book_id | BIGINT | 图书ID(外键) |
| book_title | VARCHAR(100) | 图书名称(冗余) |
| book_cover | VARCHAR(255) | 图书封面(冗余) |
| price | DECIMAL(10,2) | 购买时价格 |
| quantity | INT | 购买数量 |
| total_price | DECIMAL(10,2) | 总价 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| user_id | BIGINT | 用户ID(外键) |
| receiver_name | VARCHAR(50) | 收货人姓名 |
| receiver_phone | VARCHAR(20) | 收货人电话 |
| receiver_province | VARCHAR(50) | 省份 |
| receiver_city | VARCHAR(50) | 城市 |
| receiver_district | VARCHAR(50) | 区/县 |
| receiver_address | VARCHAR(255) | 详细地址 |
| is_default | TINYINT | 是否默认(0-否,1-是) |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
POST /api/user/register- 用户注册POST /api/user/login- 用户登录GET /api/user/info- 获取用户信息PUT /api/user/info- 更新用户信息PUT /api/user/password- 修改密码GET /api/user/address- 获取收货地址列表POST /api/user/address- 添加收货地址PUT /api/user/address/{id}- 更新收货地址DELETE /api/user/address/{id}- 删除收货地址
GET /api/books- 获取图书列表(支持分页、排序、筛选)GET /api/books/{id}- 获取图书详情GET /api/categories- 获取分类列表GET /api/books/search- 搜索图书
GET /api/cart- 获取购物车列表POST /api/cart- 添加商品到购物车PUT /api/cart/{id}- 更新购物车商品数量DELETE /api/cart/{id}- 删除购物车商品DELETE /api/cart- 清空购物车
POST /api/orders- 创建订单GET /api/orders- 获取订单列表GET /api/orders/{id}- 获取订单详情PUT /api/orders/{id}/cancel- 取消订单PUT /api/orders/{id}/pay- 支付订单GET /api/orders/{id}/status- 查询订单状态
POST /api/admin/books- 添加图书PUT /api/admin/books/{id}- 更新图书信息PUT /api/admin/books/{id}/status- 上架/下架图书GET /api/admin/orders- 获取所有订单PUT /api/admin/orders/{id}/ship- 发货GET /api/admin/users- 获取用户列表PUT /api/admin/users/{id}/status- 禁用/启用用户
- 身份认证:采用JWT(JSON Web Token)进行身份验证
- 密码安全:使用BCrypt算法加密存储用户密码
- HTTPS协议:使用HTTPS协议保障传输安全
- CSRF防护:实现跨站请求伪造防护机制
- XSS防护:输入验证和输出编码,防止跨站脚本攻击
- SQL注入防护:使用参数化查询和ORM框架
- 权限控制:基于角色的访问控制(RBAC)
+------------------+ +------------------+ +------------------+
| | | | | |
| Nginx | | 应用服务器集群 | | 数据库服务器 |
| (负载均衡) | | (Docker容器) | | |
| | | | | |
+------------------+ +------------------+ +------------------+
| | |
| | |
v v v
+------------------+ +------------------+ +------------------+
| | | | | |
| 静态资源服务器 | | Redis集群 | | Elasticsearch |
| (CDN) | | (缓存) | | (搜索引擎) |
| | | | | |
+------------------+ +------------------+ +------------------+
-
前端优化
- 资源压缩与合并
- 懒加载与按需加载
- 浏览器缓存策略
- CDN加速静态资源
-
后端优化
- 数据库索引优化
- 查询语句优化
- Redis缓存热点数据
- 分页查询与限流
-
搜索优化
- Elasticsearch实现高效搜索
- 搜索结果缓存
- 搜索建议与自动补全
- 微服务架构:系统设计为可向微服务架构演进
- 模块化设计:功能模块化,便于扩展和维护
- API版本控制:支持API版本控制,便于迭代升级
- 配置中心:使用配置中心管理系统配置,支持动态调整
- JDK 11+
- Node.js 14+
- MySQL 8.0+
- Redis 6.0+
- Maven 3.6+
- npm 6.0+
-
前端部署
# 安装依赖 npm install # 构建生产环境代码 npm run build # 将构建产物部署到Nginx或其他Web服务器
-
后端部署
# 打包 mvn clean package # 运行 java -jar booksalehub-0.0.1-SNAPSHOT.jar
-
Docker部署(推荐)
# 构建镜像 docker-compose build # 启动服务 docker-compose up -d
booksalehub-frontend/
├── public/ # 静态资源
├── src/
│ ├── api/ # API请求
│ ├── assets/ # 资源文件
│ ├── components/ # 公共组件
│ ├── hooks/ # 自定义Hooks
│ ├── layouts/ # 布局组件
│ ├── pages/ # 页面组件
│ ├── redux/ # Redux状态管理
│ ├── routes/ # 路由配置
│ ├── utils/ # 工具函数
│ ├── App.js # 应用入口
│ └── index.js # 主入口
├── .env # 环境变量
├── package.json # 项目依赖
└── README.md # 项目说明
booksalehub-backend/
├── src/
│ ├── main/
│ │ ├── java/com/booksalehub/
│ │ │ ├── config/ # 配置类
│ │ │ ├── controller/ # 控制器
│ │ │ ├── dto/ # 数据传输对象
│ │ │ ├── entity/ # 实体类
│ │ │ ├── exception/ # 异常处理
│ │ │ ├── mapper/ # MyBatis映射器
│ │ │ ├── service/ # 服务层
│ │ │ │ ├── impl/ # 服务实现
│ │ │ ├── util/ # 工具类
│ │ │ └── BookSaleHubApplication.java # 应用入口
│ │ └── resources/
│ │ ├── mapper/ # MyBatis XML映射文件
│ │ ├── application.yml # 应用配置
│ │ └── application-dev.yml # 开发环境配置
│ └── test/ # 测试代码
├── pom.xml # Maven配置
└── README.md # 项目说明
- Fork本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建Pull Request
本项目采用MIT许可证 - 详情见LICENSE文件
- 项目维护者:Your Name
- 项目仓库:GitHub Repository
© 2023 BookSaleHub. All Rights Reserved.