【实例简介】
# 知识库管理系统
基于Spring Boot Vue3构建的企业级知识库管理系统,支持文章管理、分类管理、用户权限控制等功能。
## 🚀 功能特性
### 文章管理
- ✅ 文章列表展示(支持分类筛选、关键词搜索)
- ✅ 文章创建/编辑/删除
- ✅ 文章内容支持Markdown格式
- ✅ 文章内容支持图片上传
- ✅ 文章序号和知识库单号显示
- ✅ 文章导出(PDF/Markdown格式)
### 分类管理
- ✅ 分类列表展示
- ✅ 分类创建/编辑/删除
- ✅ 分类删除限制(存在文章的分类不能删除)
- ✅ 点击分类查看该分类下的文章
### 用户管理(管理员权限)
- ✅ 用户列表展示
- ✅ 用户创建/编辑/删除
- ✅ 角色权限分配
### 权限控制
- ✅ 基于角色的访问控制(RBAC)
- ✅ 三种角色:管理员(ADMIN)、高级用户(ADVANCED)、普通用户(NORMAL)
- ✅ 导出权限控制(仅管理员和高级用户可导出)
- ✅ 分类可见性控制(普通用户只能查看分配的分类)
### 系统设置
- ✅ 自定义系统名称
- ✅ 清除缓存功能
### 用户体验
- ✅ 登录状态保持
- ✅ 头像下拉菜单(系统设置、退出登录)
- ✅ 操作成功/失败自动消失提示(2秒)
## 🛠️ 技术栈
### 后端
| 技术 | 版本 | 说明 |
|------|------|------|
| Java | 21 | 编程语言 |
| Spring Boot | 3.2.x | 后端框架 |
| Spring Security | 6.2.x | 安全框架 |
| Spring Data JPA | 3.2.x | ORM框架 |
| MySQL | 8.0 | 数据库 |
| Apache PDFBox | 3.0.x | PDF导出 |
### 前端
| 技术 | 版本 | 说明 |
|------|------|------|
| Vue | 3.4.x | 前端框架 |
| Vite | 5.2.x | 构建工具 |
| TypeScript | 5.4.x | 类型系统 |
| Element Plus | 2.6.x | UI组件库 |
| Pinia | 2.1.x | 状态管理 |
| Axios | 1.6.x | HTTP客户端 |
## 📦 项目结构
```
knsys/
├── backend/ # 后端代码
│ ├── src/main/java/com/example/knsys/
│ │ ├── controller/ # REST API控制器
│ │ ├── service/ # 业务逻辑层
│ │ ├── repository/ # 数据访问层
│ │ ├── entity/ # 数据库实体
│ │ ├── dto/ # 数据传输对象
│ │ ├── config/ # 配置类
│ │ └── KnSysApplication.java # 启动类
│ └── src/main/resources/
│ ├── application.yml # 应用配置
│ └── schema.sql # 数据库初始化脚本
│
└── frontend/ # 前端代码
├── src/
│ ├── components/ # Vue组件
│ ├── api/ # API接口封装
│ ├── types/ # TypeScript类型定义
│ ├── stores/ # Pinia状态管理
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── public/ # 静态资源
├── index.html # HTML模板
├── vite.config.ts # Vite配置
├── tsconfig.json # TypeScript配置
└── package.json # 依赖配置
```
## 🔧 快速开始
### 环境要求
- JDK 21
- Node.js 20
- MySQL 8.0
### 后端启动
1. **配置数据库**
```sql
CREATE DATABASE knsys CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. **修改配置文件**
编辑 `backend/src/main/resources/application.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/knsys
username: your_username
password: your_password
```
3. **启动后端服务**
```bash
cd backend
mvn spring-boot:run
```
服务将在 `http://localhost:8080` 启动
### 前端启动
1. **安装依赖**
```bash
cd frontend
npm install
```
2. **启动开发服务器**
```bash
npm run dev
```
服务将在 `http://localhost:5173` 启动
## 🔐 登录信息
系统启动后会自动创建默认管理员账号:
| 用户名 | 密码 | 角色 |
|--------|------|------|
| admin | admin123 | 管理员 |
| test1 | 123123 | 普通用户 |
### 角色说明
| 角色 | 权限 |
|------|------|
| **管理员 (ADMIN)** | 完整权限,可管理所有功能 |
| **高级用户 (ADVANCED)** | 可查看所有分类,可导出文章 |
| **普通用户 (NORMAL)** | 只能查看分配的分类,不能导出 |
## 🌐 API接口
### 认证接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/auth/login` | POST | 用户登录 |
| `/api/auth/logout` | POST | 用户登出 |
| `/api/auth/current` | GET | 获取当前用户信息 |
### 用户接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/users` | GET | 获取用户列表 |
| `/api/users` | POST | 创建用户 |
| `/api/users/{id}` | GET | 获取用户详情 |
| `/api/users/{id}` | PUT | 更新用户信息 |
| `/api/users/{id}` | DELETE | 删除用户 |
### 分类接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/categories` | GET | 获取分类列表 |
| `/api/categories` | POST | 创建分类 |
| `/api/categories/{id}` | GET | 获取分类详情 |
| `/api/categories/{id}` | PUT | 更新分类 |
| `/api/categories/{id}` | DELETE | 删除分类 |
### 文章接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/articles` | GET | 获取文章列表 |
| `/api/articles` | POST | 创建文章 |
| `/api/articles/{id}` | GET | 获取文章详情 |
| `/api/articles/{id}` | PUT | 更新文章 |
| `/api/articles/{id}` | DELETE | 删除文章 |
| `/api/articles/export` | GET | 导出文章 |
## 📝 开发说明
### 数据库初始化
系统启动时会自动执行 `schema.sql` 创建表结构,并创建默认管理员账号。
### 文件上传
图片上传目录为 `backend/uploads/`,需确保该目录存在且有写入权限。
### CORS配置
后端已配置允许前端跨域访问,开发环境下无需额外配置。
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交Issue和Pull Request!
【实例截图】
【核心代码】
网友评论
我要评论