# 日常学习系统

相关源文件：

- [UserDailyArticleMapper.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/mapper/UserDailyArticleMapper.java)
- [UserDailyWordMapper.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/mapper/UserDailyWordMapper.java)
- [CourseServiceImpl.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/CourseServiceImpl.java)
- [DailyArticleServiceImpl.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java)
- [DailyWordServiceImpl.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java)
- [UserDailyArticleMapper.xml](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/mapper/UserDailyArticleMapper.xml)
- [UserDailyWordMapper.xml](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/mapper/UserDailyWordMapper.xml)

## 目的和范围

日常学习系统是SmartClass后端的核心组件，它通过文章和词汇的形式为用户提供日常教育内容。这个系统通过新鲜内容的传递、用户互动机制（点赞、收藏）和进度跟踪来实现持续的学习机会。日常学习系统专注于内容管理和用户与内容的互动，作为平台其他部分的补充，比如AI虚拟形象聊天系统（参见[AI Avatar Chat System](https://deepwiki.com/Ubanillx/smartclass-backend/2-ai-avatar-chat-system)）。

来源：[DailyArticleServiceImpl.java1-223](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L1-L223) [DailyWordServiceImpl.java1-188](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L1-L188)

## 系统架构

### 日常学习系统概览

来源：[DailyArticleServiceImpl.java13-16](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L13-L16) [DailyWordServiceImpl.java13-16](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L13-L16)

### 系统数据流

"数据库""UserDaily(Article/Word)Mapper""DailyArticle/WordService""DailyArticle/WordController"用户"数据库""UserDaily(Article/Word)Mapper""DailyArticle/WordService""DailyArticle/WordController"用户请求日常内容根据日期获取内容查询内容返回内容返回内容 VO显示内容点赞/收藏内容更新点赞/收藏状态保存交互更新记录更新内容指标确认更新返回成功确认操作

来源：[DailyArticleServiceImpl.java146-178](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L146-L178) [DailyWordServiceImpl.java139-160](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L139-L160)

## 日常文章子系统

日常文章组件按照主题和难度等级向用户提供教育文章。

### 日常文章数据模型

| 字段 | 类型 | 描述 |
|---|---|---|
| id | Long | 主键 |
| title | String | 文章标题 |
| content | String | 完整文章内容 |
| summary | String | 短摘要（为空时自动生成） |
| author | String | 文章作者 |
| source | String | 文章来源 |
| category | String | 文章类别 |
| tags | String | 逗号分隔的标签 |
| difficulty | Integer | 难度等级（1-5） |
| publishDate | Date | 文章发布日期 |
| readTime | Integer | 预计阅读时间（分钟） |
| viewCount | Integer | 浏览次数 |
| likeCount | Integer | 点赞次数 |
| adminId | Long | 添加文章的管理员ID |
| isDelete | Integer | 软删除标志（0=有效，1=已删除） |

来源：[DailyArticleServiceImpl.java38-66](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L38-L66) [DailyArticleServiceImpl.java101-144](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L101-L144)

### 关键文章操作

来源：[DailyArticleServiceImpl.java38-217](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L38-L217)

## 日常单词子系统

日常单词组件通过每日提供新单词，配以详细解释和示例来提供词汇学习。

### 日常单词数据模型

| 字段 | 类型 | 描述 |
|---|---|---|
| id | Long | 主键 |
| word | String | 词汇单词 |
| translation | String | 单词翻译或含义 |
| phonetic | String | 音标发音 |
| example | String | 使用单词的示例句子 |
| exampleTrans | String | 示例的翻译 |
| category | String | 单词类别（如名词、动词） |
| tags | String | 逗号分隔的标签 |
| difficulty | Integer | 难度等级（1-5） |
| publishDate | Date | 单词发布日期 |
| likeCount | Integer | 点赞次数 |
| adminId | Long | 添加单词的管理员ID |
| isDelete | Integer | 软删除标志（0=有效，1=已删除） |

来源：[DailyWordServiceImpl.java38-58](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L38-L58) [DailyWordServiceImpl.java93-124](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L93-L124)

### 关键单词操作

来源：[DailyWordServiceImpl.java38-182](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L38-L182)

## 用户互动与追踪

系统通过关系表维护了用户如何与学习内容互动的详细记录。

### 用户-文章互动

来源：[UserDailyArticleMapper.xml7-21](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/mapper/UserDailyArticleMapper.xml#L7-L21) [UserDailyArticleMapper.java19-42](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/mapper/UserDailyArticleMapper.java#L19-L42)

### 用户-单词互动

来源：[UserDailyWordMapper.xml7-21](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/mapper/UserDailyWordMapper.xml#L7-L21) [UserDailyWordMapper.java19-42](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/mapper/UserDailyWordMapper.java#L19-L42)

## 集成点

### 用户系统集成

日常学习系统与用户管理系统集成以：

1. 跟踪用户对学习内容的互动
2. 根据用户的偏好和历史个性化学习体验
3. 支持用户收藏和喜欢的内容以供将来参考

### 内容推荐引擎

来源：[DailyArticleServiceImpl.java181-217](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L181-L217) [DailyWordServiceImpl.java127-182](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L127-L182)

## 技术实现

### 服务层

系统使用Spring Boot的服务架构模式实现：

1. **DailyArticleService**：处理与文章相关的业务逻辑
    
    - 文章的创建、检索和更新
    - 浏览量和点赞量管理
    - 文章推荐
2. **DailyWordService**：处理与单词相关的业务逻辑
    
    - 单词的创建和检索
    - 点赞量管理
    - 随机单词选择

来源：[DailyArticleServiceImpl.java35-218](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L35-L218) [DailyWordServiceImpl.java35-183](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L35-L183)

### 数据访问层

系统使用MyBatis-Plus进行数据访问：

1. **Mapper接口**：
    
    - `DailyArticleMapper`：文章的增删改查操作
    - `DailyWordMapper`：单词的增删改查操作
    - `UserDailyArticleMapper`：管理用户-文章关系
    - `UserDailyWordMapper`：管理用户-单词关系
2. **复杂查询**：
    
    - 自定义XML映射以检索用户收藏内容
    - 使用JOIN查询提高数据检索效率
    - 根据过滤条件动态构建查询

来源：[UserDailyArticleMapper.xml28-49](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/mapper/UserDailyArticleMapper.xml#L28-L49) [UserDailyWordMapper.xml30-50](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/mapper/UserDailyWordMapper.xml#L30-L50)

### 视图对象（VO）

系统使用数据传输对象模式将内部实体转换为客户端友好的格式：

1. **DailyArticleVO**：面向客户端的文章数据表示
2. **DailyWordVO**：面向客户端的单词数据表示

这些VO隐藏了内部实现细节，只向客户端应用程序暴露所需的属性。

来源：[DailyArticleServiceImpl.java82-98](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyArticleServiceImpl.java#L82-L98) [DailyWordServiceImpl.java74-90](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/service/impl/DailyWordServiceImpl.java#L74-L90)