# 学习系统数据字典配置文档
## 概述
本文档描述了学习系统中使用的所有数据字典配置,包括字典类型、字典值和使用说明。
## 字典列表
### 1. 课程难度 (course_difficulty)
**用途**: 定义课程的难度等级
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 初级 | beginner | 1 | success | 适合初学者的基础课程 |
| 中级 | intermediate | 2 | warning | 需要一定基础的进阶课程 |
| 高级 | advanced | 3 | danger | 面向专业人士的高级课程 |
### 2. 课程状态 (course_status)
**用途**: 定义课程的发布状态
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 草稿 | draft | 1 | info | 课程正在编辑中,未发布 |
| 已发布 | published | 2 | success | 课程已发布,学生可以学习 |
| 已下架 | archived | 3 | danger | 课程已下架,不再提供学习 |
### 3. 章节状态 (chapter_status)
**用途**: 定义章节的发布状态
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 草稿 | draft | 1 | info | 章节正在编辑中,未发布 |
| 已发布 | published | 2 | success | 章节已发布,可以学习 |
| 隐藏 | hidden | 3 | warning | 章节已隐藏,暂时不显示 |
### 4. 知识点状态 (knowledge_status)
**用途**: 定义知识点的发布状态
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 草稿 | draft | 1 | info | 知识点正在编辑中,未发布 |
| 已发布 | published | 2 | success | 知识点已发布,可以学习 |
| 隐藏 | hidden | 3 | warning | 知识点已隐藏,暂时不显示 |
### 5. 题目类型 (question_type)
**用途**: 定义题目的类型
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 单选题 | single_choice | 1 | - | 只能选择一个正确答案 |
| 多选题 | multiple_choice | 2 | success | 可以选择多个正确答案 |
| 判断题 | true_false | 3 | warning | 判断对错的题目 |
| 填空题 | fill_blank | 4 | danger | 需要填写答案的题目 |
### 6. 题目难度 (question_difficulty)
**用途**: 定义题目的难度等级
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 简单 | easy | 1 | success | 基础题目,容易解答 |
| 中等 | medium | 2 | warning | 中等难度题目 |
| 困难 | hard | 3 | danger | 高难度题目,需要深入思考 |
### 7. 学习状态 (learning_status)
**用途**: 定义用户的学习状态
| 标签 | 值 | 排序 | 标签类型 | 说明 |
|------|----|----|---------|------|
| 未开始 | not_started | 1 | info | 用户还未开始学习该课程 |
| 学习中 | learning | 2 | warning | 用户正在学习该课程 |
| 已完成 | completed | 3 | success | 用户已完成该课程的学习 |
| 已暂停 | paused | 4 | danger | 用户暂停了该课程的学习 |
## 使用方法
### 1. 后端使用
在Go代码中,可以直接使用字典值:
```go
// 创建课程时设置难度
course := learning.Course{
Title: "Go语言入门",
Difficulty: "beginner", // 使用字典值
Status: "draft",
}
```
### 2. 前端使用
#### 2.1 导入字典工具
```javascript
import { LearningDict } from '@/utils/learningDict'
```
#### 2.2 获取标签和类型
```javascript
// 获取课程难度标签
const difficultyLabel = LearningDict.CourseDifficulty.getLabel('beginner') // 返回: '初级'
// 获取课程难度标签类型
const difficultyType = LearningDict.CourseDifficulty.getType('beginner') // 返回: 'success'
// 获取所有选项
const difficultyOptions = LearningDict.CourseDifficulty.getOptions()
```
#### 2.3 在Vue组件中使用
```vue
{{ getDifficultyLabel(course.difficulty) }}
```
### 3. 数据库初始化
执行以下SQL脚本来初始化字典数据:
```sql
-- 执行字典初始化脚本
source server/sql/learning_dictionaries.sql;
```
## 扩展说明
### 添加新的字典值
1. **后端**: 在 `server/source/system/dictionary_detail.go` 中添加新的字典详情
2. **前端**: 在 `web/src/utils/learningDict.js` 中添加对应的选项和工具函数
3. **数据库**: 执行相应的SQL语句添加新的字典记录
### 修改现有字典值
1. 更新数据库中的字典记录
2. 更新前端字典工具文件
3. 确保所有使用该字典值的地方都已更新
## 注意事项
1. **一致性**: 确保前后端使用的字典值完全一致
2. **扩展性**: 新增字典值时要考虑向后兼容性
3. **国际化**: 如需支持多语言,可以扩展字典工具函数
4. **缓存**: 前端可以考虑缓存字典数据以提高性能
## 维护记录
| 日期 | 版本 | 修改内容 | 修改人 |
|------|------|----------|--------|
| 2024-01-XX | 1.0 | 初始版本,包含7个基础字典 | System |
---
*本文档会随着系统功能的扩展而持续更新*