基于 Spring Boot 3.x 的电商后台管理系统,提供完整的后台管理功能,包括商品管理、订单管理、营销管理、数据统计等核心模块。
- 项目名称:电商后台管理系统
- 作者:xiaoins
- 版本:v1.0
- 运行环境:JDK 21、MySQL 8.0、Redis 6+
- 核心框架:
- Spring Boot 3.3.4
- Spring Security 6.x
- Spring Data Redis
- MyBatis-Plus 3.5.5
- Flyway(数据库迁移)
- 认证鉴权:JWT (JSON Web Token)
- API文档:Knife4j 4.4.0 (OpenAPI 3)
- 工具库:Lombok、Hutool、Guava
- ✅ 用户登录/登出
- ✅ JWT Token认证
- ✅ 基于角色的权限控制(RBAC)
- ✅ 密码加密存储(BCrypt)
- ✅ 用户CRUD
- ✅ 角色管理
- ✅ 权限配置
- ✅ 商品分类管理(树形结构)
- ✅ 商品CRUD
- ✅ 商品上下架
- ✅ 批量操作(上架/下架/删除)
- ✅ 商品列表查询(分页、筛选)
- ✅ 订单列表查询
- ✅ 订单详情查看
- ✅ 订单发货
- ✅ 订单取消
- ✅ 优惠券管理
- ✅ 活动管理
- ✅ 优惠券发放
- ✅ 概览统计
- ✅ 订单统计
- ✅ 商品统计
- ✅ 用户统计
- ✅ 操作日志
- ✅ 系统配置
admin/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/xiaoins/admin/
│ │ │ ├── common/ # 通用模块(响应、异常、工具类)
│ │ │ ├── security/ # 安全模块(JWT、Spring Security配置)
│ │ │ ├── auth/ # 认证模块(登录、登出)
│ │ │ ├── user/ # 用户管理
│ │ │ ├── category/ # 商品分类
│ │ │ ├── product/ # 商品管理
│ │ │ ├── order/ # 订单管理
│ │ │ ├── marketing/ # 营销管理
│ │ │ ├── stats/ # 数据统计
│ │ │ ├── system/ # 系统管理
│ │ │ └── AdminApplication.java
│ │ └── resources/
│ │ ├── application.yml # 主配置文件
│ │ ├── application-dev.yml # 开发环境配置
│ │ ├── application-prod.yml # 生产环境配置
│ │ └── db/migration/ # Flyway数据库迁移脚本
│ │ ├── V1__init_schema.sql
│ │ └── V2__seed_basic_data.sql
│ └── test/
├── pom.xml
└── README.md
- 安装 JDK 21
- 安装 MySQL 8.0+
- 安装 Redis 6.0+
- 安装 Maven 3.8+
- 创建数据库:
CREATE DATABASE mall_admin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 修改配置文件
application-dev.yml,配置数据库连接:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mall_admin?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: your_password- Flyway 会自动执行数据库迁移脚本,创建表结构并初始化数据
- 克隆项目到本地
- 进入项目目录
- 启动 Redis 服务
- 执行以下命令:
cd admin
mvn clean install
mvn spring-boot:run或者使用 IDE(如 IntelliJ IDEA)直接运行 AdminApplication 类。
- API文档地址:http://localhost:8080/api/admin/v1/doc.html
- 健康检查:http://localhost:8080/api/admin/v1/actuator/health
系统初始化时会自动创建以下账号:
| 用户名 | 密码 | 角色 | 说明 |
|---|---|---|---|
| admin | admin123 | 超级管理员 | 拥有所有权限 |
| operator | admin123 | 运营管理员 | 商品、订单、营销管理权限 |
| analyst | admin123 | 数据分析员 | 仅查看数据统计权限 |
POST /auth/login- 用户登录POST /auth/logout- 用户登出
GET /categories/tree- 获取分类树POST /categories- 创建分类PUT /categories/{id}- 更新分类DELETE /categories/{id}- 删除分类
GET /products- 分页查询商品GET /products/{id}- 获取商品详情POST /products- 创建商品PUT /products/{id}- 更新商品DELETE /products/{id}- 删除商品POST /products/{id}/publish- 上架商品POST /products/{id}/unpublish- 下架商品POST /products/batch-publish- 批量上架POST /products/batch-unpublish- 批量下架POST /products/batch-delete- 批量删除
GET /stats/overview- 概览统计
更多接口详情请访问 API 文档页面。
{
"code": "0",
"message": "成功",
"data": {},
"traceId": "c9f8a7b6d5e4"
}| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| A0001 | 系统错误 |
| A0002 | 参数错误 |
| A0401 | 未认证,请先登录 |
| A0402 | Token无效或已过期 |
| A0301 | 无权限访问 |
| U1001 | 用户不存在 |
| U1003 | 密码错误 |
| P1001 | 商品不存在 |
| O1001 | 订单不存在 |
更多错误码请查看 ResultCode 枚举类。
- Controller层:接收请求,参数校验,调用Service
- Service层:业务逻辑处理
- Mapper层:数据库操作(MyBatis-Plus)
- Entity层:数据库实体
- DTO层:数据传输对象(请求)
- VO层:视图对象(响应)
- 使用 Lombok 简化代码
- 使用
@Valid进行参数校验 - 统一异常处理(
@ControllerAdvice) - 使用 Swagger 注解编写 API 文档
- 日志记录使用 slf4j
使用 Flyway 进行数据库版本管理:
- 在
src/main/resources/db/migration/目录下创建 SQL 脚本 - 文件命名规则:
V{version}__{description}.sql - 示例:
V3__add_user_avatar_column.sql
jwt:
secret: YourSecretKey # JWT密钥(生产环境请修改)
expiration: 7200000 # 过期时间(2小时)
header: Authorization # 请求头名称
prefix: Bearer # Token前缀business:
order:
timeout-minutes: 30 # 订单超时时间
auto-receive-days: 7 # 自动收货时间
login:
max-fail-count: 3 # 最大失败次数
lock-minutes: 30 # 锁定时间# 构建镜像
docker build -t mall-admin:1.0 .
# 运行容器
docker run -d -p 8080:8080 --name mall-admin mall-admin:1.0- 修改 JWT 密钥
- 配置生产环境数据库连接
- 配置 Redis 连接
- 关闭调试日志
- 配置文件上传路径
- 完善订单发货流程
- 实现退款审核功能
- 完善营销活动规则
- 增加更多统计图表
- 实现操作日志记录切面
- 添加 Redis 缓存优化
- 完善单元测试
- Docker化部署
Apache License 2.0
- 作者:xiaoins
- 邮箱:xiaoins1124@gmail.com
注意:本项目为学习项目,不建议直接用于生产环境。