├── .github
└── ISSUE_TEMPLATE
│ └── bug_report.md
├── .gitignore
├── .mvn
└── wrapper
│ └── maven-wrapper.properties
├── DETAIL.md
├── Dockerfile
├── LICENSE
├── README.md
├── doc
├── DifyAPI.md
├── swagger.png
├── 主页1.jpg
├── 主页2.jpg
├── 学习任务.jpg
├── 对话1.jpg
├── 对话2.jpg
├── 对话详情页.jpg
├── 我的页面1.jpg
├── 我的页面2.jpg
├── 我的页面3.jpg
├── 课程.jpg
├── 课程学习页.jpg
└── 课程表.jpg
├── docker-compose.yml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── settings.xml
├── sql
├── create_table.sql
└── post_es_mapping.json
└── src
├── main
├── java
│ └── com
│ │ └── ubanillx
│ │ └── smartclass
│ │ ├── MainApplication.java
│ │ ├── annotation
│ │ └── AuthCheck.java
│ │ ├── aop
│ │ ├── AuthInterceptor.java
│ │ └── LogInterceptor.java
│ │ ├── common
│ │ ├── BaseResponse.java
│ │ ├── DeleteRequest.java
│ │ ├── ErrorCode.java
│ │ ├── PageRequest.java
│ │ └── ResultUtils.java
│ │ ├── config
│ │ ├── CorsConfig.java
│ │ ├── CosClientConfig.java
│ │ ├── DifyConfig.java
│ │ ├── JsonConfig.java
│ │ ├── MyBatisPlusConfig.java
│ │ └── WxOpenConfig.java
│ │ ├── constant
│ │ ├── CommonConstant.java
│ │ ├── FileConstant.java
│ │ └── UserConstant.java
│ │ ├── controller
│ │ ├── AiAvatarChatController.java
│ │ ├── AiAvatarController.java
│ │ ├── AnnouncementController.java
│ │ ├── CourseCategoryController.java
│ │ ├── CourseChapterController.java
│ │ ├── CourseController.java
│ │ ├── CourseFavouriteController.java
│ │ ├── CourseMaterialController.java
│ │ ├── CourseReviewController.java
│ │ ├── CourseSectionController.java
│ │ ├── DailyArticleController.java
│ │ ├── DailyArticleFavourController.java
│ │ ├── DailyArticleThumbController.java
│ │ ├── DailyWordController.java
│ │ ├── DailyWordFavourController.java
│ │ ├── DailyWordLearningController.java
│ │ ├── DailyWordThumbController.java
│ │ ├── FileController.java
│ │ ├── PostController.java
│ │ ├── PostFavourController.java
│ │ ├── PostThumbController.java
│ │ ├── TeacherController.java
│ │ ├── UserAiAvatarController.java
│ │ ├── UserController.java
│ │ ├── UserLearningRecordController.java
│ │ ├── UserLearningStatsController.java
│ │ ├── UserLevelController.java
│ │ └── WxMpController.java
│ │ ├── esdao
│ │ └── PostEsDao.java
│ │ ├── exception
│ │ ├── BusinessException.java
│ │ ├── GlobalExceptionHandler.java
│ │ └── ThrowUtils.java
│ │ ├── generate
│ │ └── CodeGenerator.java
│ │ ├── job
│ │ ├── cycle
│ │ │ └── IncSyncPostToEs.java
│ │ └── once
│ │ │ └── FullSyncPostToEs.java
│ │ ├── manager
│ │ └── CosManager.java
│ │ ├── mapper
│ │ ├── AchievementMapper.java
│ │ ├── AiAvatarChatHistoryMapper.java
│ │ ├── AiAvatarMapper.java
│ │ ├── AnnouncementMapper.java
│ │ ├── CourseCategoryMapper.java
│ │ ├── CourseChapterMapper.java
│ │ ├── CourseFavouriteMapper.java
│ │ ├── CourseMapper.java
│ │ ├── CourseMaterialMapper.java
│ │ ├── CourseReviewMapper.java
│ │ ├── CourseSectionMapper.java
│ │ ├── DailyArticleMapper.java
│ │ ├── DailyWordMapper.java
│ │ ├── PostFavourMapper.java
│ │ ├── PostMapper.java
│ │ ├── PostThumbMapper.java
│ │ ├── TeacherMapper.java
│ │ ├── UserAiAvatarMapper.java
│ │ ├── UserAnnouncementReaderMapper.java
│ │ ├── UserArticleRecordMapper.java
│ │ ├── UserDailyArticleMapper.java
│ │ ├── UserDailyWordMapper.java
│ │ ├── UserLearningRecordMapper.java
│ │ ├── UserLearningStatsMapper.java
│ │ ├── UserLevelMapper.java
│ │ └── UserMapper.java
│ │ ├── model
│ │ ├── dto
│ │ │ ├── DeleteRequest.java
│ │ │ ├── UserArticleRecord.java
│ │ │ ├── achievement
│ │ │ │ ├── AchievementAddRequest.java
│ │ │ │ ├── AchievementQueryRequest.java
│ │ │ │ └── AchievementUpdateRequest.java
│ │ │ ├── aiavatar
│ │ │ │ ├── AiAvatarAddRequest.java
│ │ │ │ ├── AiAvatarQueryRequest.java
│ │ │ │ └── AiAvatarUpdateRequest.java
│ │ │ ├── announcement
│ │ │ │ ├── AnnouncementAddRequest.java
│ │ │ │ ├── AnnouncementQueryRequest.java
│ │ │ │ └── AnnouncementUpdateRequest.java
│ │ │ ├── chat
│ │ │ │ ├── ChatMessageAddRequest.java
│ │ │ │ ├── ChatMessageQueryRequest.java
│ │ │ │ ├── ChatSessionQueryRequest.java
│ │ │ │ ├── ChatSessionUpdateRequest.java
│ │ │ │ ├── StopStreamingRequest.java
│ │ │ │ ├── TextToAudioRequest.java
│ │ │ │ ├── UploadFileRequest.java
│ │ │ │ └── UploadFileResponse.java
│ │ │ ├── course
│ │ │ │ ├── CourseAddRequest.java
│ │ │ │ ├── CourseFavourAddRequest.java
│ │ │ │ ├── CourseQueryRequest.java
│ │ │ │ └── CourseUpdateRequest.java
│ │ │ ├── dailyarticle
│ │ │ │ ├── DailyArticleAddRequest.java
│ │ │ │ ├── DailyArticleQueryRequest.java
│ │ │ │ └── DailyArticleUpdateRequest.java
│ │ │ ├── dailyword
│ │ │ │ ├── DailyWordAddRequest.java
│ │ │ │ ├── DailyWordQueryRequest.java
│ │ │ │ └── DailyWordUpdateRequest.java
│ │ │ ├── dify
│ │ │ │ ├── DifyChatRequest.java
│ │ │ │ ├── DifyChatResponse.java
│ │ │ │ └── DifyStreamChunk.java
│ │ │ ├── file
│ │ │ │ ├── UploadFileRequest.java
│ │ │ │ └── UploadVideoRequest.java
│ │ │ ├── learningrecord
│ │ │ │ ├── UserLearningRecordAddRequest.java
│ │ │ │ ├── UserLearningRecordQueryRequest.java
│ │ │ │ └── UserLearningRecordUpdateRequest.java
│ │ │ ├── post
│ │ │ │ ├── PostAddRequest.java
│ │ │ │ ├── PostEditRequest.java
│ │ │ │ ├── PostEsDTO.java
│ │ │ │ ├── PostQueryRequest.java
│ │ │ │ └── PostUpdateRequest.java
│ │ │ ├── postfavour
│ │ │ │ ├── PostFavourAddRequest.java
│ │ │ │ └── PostFavourQueryRequest.java
│ │ │ ├── postthumb
│ │ │ │ └── PostThumbAddRequest.java
│ │ │ ├── teacher
│ │ │ │ ├── TeacherAddRequest.java
│ │ │ │ ├── TeacherQueryRequest.java
│ │ │ │ └── TeacherUpdateRequest.java
│ │ │ ├── user
│ │ │ │ ├── UserAddRequest.java
│ │ │ │ ├── UserLoginByPhoneRequest.java
│ │ │ │ ├── UserLoginRequest.java
│ │ │ │ ├── UserQueryRequest.java
│ │ │ │ ├── UserRegisterByPhoneRequest.java
│ │ │ │ ├── UserRegisterRequest.java
│ │ │ │ ├── UserUpdateMyRequest.java
│ │ │ │ └── UserUpdateRequest.java
│ │ │ ├── useraiavatar
│ │ │ │ ├── UserAiAvatarAddRequest.java
│ │ │ │ ├── UserAiAvatarQueryRequest.java
│ │ │ │ └── UserAiAvatarUpdateRequest.java
│ │ │ └── userlevel
│ │ │ │ ├── UserLevelAddRequest.java
│ │ │ │ ├── UserLevelQueryRequest.java
│ │ │ │ └── UserLevelUpdateRequest.java
│ │ ├── entity
│ │ │ ├── Achievement.java
│ │ │ ├── AiAvatar.java
│ │ │ ├── AiAvatarChatHistory.java
│ │ │ ├── Announcement.java
│ │ │ ├── Course.java
│ │ │ ├── CourseCategory.java
│ │ │ ├── CourseChapter.java
│ │ │ ├── CourseFavourite.java
│ │ │ ├── CourseMaterial.java
│ │ │ ├── CourseReview.java
│ │ │ ├── CourseSection.java
│ │ │ ├── DailyArticle.java
│ │ │ ├── DailyWord.java
│ │ │ ├── Post.java
│ │ │ ├── PostFavour.java
│ │ │ ├── PostThumb.java
│ │ │ ├── Teacher.java
│ │ │ ├── User.java
│ │ │ ├── UserAiAvatar.java
│ │ │ ├── UserAnnouncementReader.java
│ │ │ ├── UserDailyArticle.java
│ │ │ ├── UserDailyWord.java
│ │ │ ├── UserLearningRecord.java
│ │ │ ├── UserLearningStats.java
│ │ │ └── UserLevel.java
│ │ ├── enums
│ │ │ ├── FileUploadBizEnum.java
│ │ │ ├── UserGenderEnum.java
│ │ │ └── UserRoleEnum.java
│ │ └── vo
│ │ │ ├── AchievementVO.java
│ │ │ ├── AiAvatarBriefVO.java
│ │ │ ├── AiAvatarVO.java
│ │ │ ├── AnnouncementVO.java
│ │ │ ├── ChatHistoryListVO.java
│ │ │ ├── ChatMessageVO.java
│ │ │ ├── ChatSessionVO.java
│ │ │ ├── CourseReviewVO.java
│ │ │ ├── CourseVO.java
│ │ │ ├── DailyArticleVO.java
│ │ │ ├── DailyWordVO.java
│ │ │ ├── LoginUserVO.java
│ │ │ ├── PostVO.java
│ │ │ ├── TeacherVO.java
│ │ │ ├── UserAiAvatarVO.java
│ │ │ ├── UserLearningRecordVO.java
│ │ │ ├── UserLevelVO.java
│ │ │ └── UserVO.java
│ │ ├── service
│ │ ├── AchievementService.java
│ │ ├── AiAvatarChatHistoryService.java
│ │ ├── AiAvatarService.java
│ │ ├── AnnouncementService.java
│ │ ├── CourseCategoryService.java
│ │ ├── CourseChapterService.java
│ │ ├── CourseFavouriteService.java
│ │ ├── CourseMaterialService.java
│ │ ├── CourseReviewService.java
│ │ ├── CourseSectionService.java
│ │ ├── CourseService.java
│ │ ├── DailyArticleFavourService.java
│ │ ├── DailyArticleService.java
│ │ ├── DailyArticleThumbService.java
│ │ ├── DailyWordFavourService.java
│ │ ├── DailyWordService.java
│ │ ├── DailyWordThumbService.java
│ │ ├── DifyService.java
│ │ ├── PostFavourService.java
│ │ ├── PostService.java
│ │ ├── PostThumbService.java
│ │ ├── TeacherService.java
│ │ ├── UserAiAvatarService.java
│ │ ├── UserAnnouncementReaderService.java
│ │ ├── UserArticleRecordService.java
│ │ ├── UserDailyArticleService.java
│ │ ├── UserDailyWordService.java
│ │ ├── UserLearningRecordService.java
│ │ ├── UserLearningStatsService.java
│ │ ├── UserLevelService.java
│ │ ├── UserService.java
│ │ └── impl
│ │ │ ├── AiAvatarChatHistoryServiceImpl.java
│ │ │ ├── AiAvatarServiceImpl.java
│ │ │ ├── AnnouncementServiceImpl.java
│ │ │ ├── CourseCategoryServiceImpl.java
│ │ │ ├── CourseChapterServiceImpl.java
│ │ │ ├── CourseFavouriteServiceImpl.java
│ │ │ ├── CourseMaterialServiceImpl.java
│ │ │ ├── CourseReviewServiceImpl.java
│ │ │ ├── CourseSectionServiceImpl.java
│ │ │ ├── CourseServiceImpl.java
│ │ │ ├── DailyArticleFavourServiceImpl.java
│ │ │ ├── DailyArticleServiceImpl.java
│ │ │ ├── DailyArticleThumbServiceImpl.java
│ │ │ ├── DailyWordFavourServiceImpl.java
│ │ │ ├── DailyWordServiceImpl.java
│ │ │ ├── DailyWordThumbServiceImpl.java
│ │ │ ├── DifyServiceImpl.java
│ │ │ ├── PostFavourServiceImpl.java
│ │ │ ├── PostServiceImpl.java
│ │ │ ├── PostThumbServiceImpl.java
│ │ │ ├── TeacherServiceImpl.java
│ │ │ ├── UserAiAvatarServiceImpl.java
│ │ │ ├── UserDailyWordServiceImpl.java
│ │ │ ├── UserLearningRecordServiceImpl.java
│ │ │ ├── UserLearningStatsServiceImpl.java
│ │ │ ├── UserLevelServiceImpl.java
│ │ │ └── UserServiceImpl.java
│ │ ├── util
│ │ ├── ChatMessageHelper.java
│ │ └── OkHttpUtils.java
│ │ ├── utils
│ │ ├── FileUtil.java
│ │ ├── NetUtils.java
│ │ ├── SpringContextUtils.java
│ │ └── SqlUtils.java
│ │ └── wxmp
│ │ ├── WxMpConstant.java
│ │ ├── WxMpMsgRouter.java
│ │ └── handler
│ │ ├── EventHandler.java
│ │ ├── MessageHandler.java
│ │ └── SubscribeHandler.java
└── resources
│ ├── META-INF
│ └── additional-spring-configuration-metadata.json
│ ├── application-prod.yml
│ ├── application-test.yml
│ ├── application.yml
│ ├── mapper
│ ├── AchievementMapper.xml
│ ├── AiAvatarChatHistoryMapper.xml
│ ├── AiAvatarMapper.xml
│ ├── AnnouncementMapper.xml
│ ├── CourseCategoryMapper.xml
│ ├── CourseChapterMapper.xml
│ ├── CourseFavouriteMapper.xml
│ ├── CourseMapper.xml
│ ├── CourseMaterialMapper.xml
│ ├── CourseReviewMapper.xml
│ ├── CourseSectionMapper.xml
│ ├── DailyArticleMapper.xml
│ ├── DailyWordMapper.xml
│ ├── PostFavourMapper.xml
│ ├── PostMapper.xml
│ ├── PostThumbMapper.xml
│ ├── TeacherMapper.xml
│ ├── UserAiAvatarMapper.xml
│ ├── UserAnnouncementReaderMapper.xml
│ ├── UserArticleRecordMapper.xml
│ ├── UserDailyArticleMapper.xml
│ ├── UserDailyWordMapper.xml
│ ├── UserLearningRecordMapper.xml
│ ├── UserLearningStatsMapper.xml
│ ├── UserLevelMapper.xml
│ └── UserMapper.xml
│ ├── templates
│ ├── TemplateController.java.ftl
│ ├── TemplateService.java.ftl
│ ├── TemplateServiceImpl.java.ftl
│ └── model
│ │ ├── TemplateAddRequest.java.ftl
│ │ ├── TemplateEditRequest.java.ftl
│ │ ├── TemplateQueryRequest.java.ftl
│ │ ├── TemplateUpdateRequest.java.ftl
│ │ └── TemplateVO.java.ftl
│ └── test_excel.xlsx
└── test
└── java
└── com
└── ubanillx
└── smartclass
├── MainApplicationTests.java
├── manager
└── CosManagerTest.java
├── mapper
├── PostFavourMapperTest.java
└── PostMapperTest.java
├── service
├── PostFavourServiceTest.java
├── PostThumbServiceTest.java
└── UserServiceTest.java
└── utils
└── EasyExcelTest.java
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
3 |
--------------------------------------------------------------------------------
/doc/swagger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/swagger.png
--------------------------------------------------------------------------------
/doc/主页1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/主页1.jpg
--------------------------------------------------------------------------------
/doc/主页2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/主页2.jpg
--------------------------------------------------------------------------------
/doc/学习任务.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/学习任务.jpg
--------------------------------------------------------------------------------
/doc/对话1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/对话1.jpg
--------------------------------------------------------------------------------
/doc/对话2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/对话2.jpg
--------------------------------------------------------------------------------
/doc/对话详情页.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/对话详情页.jpg
--------------------------------------------------------------------------------
/doc/我的页面1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/我的页面1.jpg
--------------------------------------------------------------------------------
/doc/我的页面2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/我的页面2.jpg
--------------------------------------------------------------------------------
/doc/我的页面3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/我的页面3.jpg
--------------------------------------------------------------------------------
/doc/课程.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/课程.jpg
--------------------------------------------------------------------------------
/doc/课程学习页.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/课程学习页.jpg
--------------------------------------------------------------------------------
/doc/课程表.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ubanillx/smartclass-backend/7dfe2c0377280c53209f8388f062e3a1062dc153/doc/课程表.jpg
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.8'
2 |
3 | services:
4 | # 应用服务
5 | smartclass-app:
6 | build:
7 | context: .
8 | dockerfile: Dockerfile
9 | container_name: smartclass-app
10 | ports:
11 | - "8101:8101"
12 | environment:
13 | - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/smart_class?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
14 | - SPRING_DATASOURCE_USERNAME=root
15 | - SPRING_DATASOURCE_PASSWORD=mysql_5TDxKc
16 | - SPRING_REDIS_HOST=redis
17 | - SPRING_REDIS_PORT=6379
18 | - SPRING_REDIS_PASSWORD=redis_wKaQkb
19 | - SPRING_PROFILES_ACTIVE=prod
20 | depends_on:
21 | - mysql
22 | - redis
23 | networks:
24 | - smartclass-network
25 | restart: always
26 |
27 | # MySQL服务
28 | mysql:
29 | image: mysql:8.0
30 | container_name: smartclass-mysql
31 | command: --default-authentication-plugin=mysql_native_password
32 | environment:
33 | - MYSQL_ROOT_PASSWORD=mysql_5TDxKc
34 | - MYSQL_DATABASE=smart_class
35 | ports:
36 | - "3306:3306"
37 | volumes:
38 | - mysql-data:/var/lib/mysql
39 | - ./sql:/docker-entrypoint-initdb.d
40 | networks:
41 | - smartclass-network
42 | restart: always
43 |
44 | # Redis服务
45 | redis:
46 | image: redis:6.2
47 | container_name: smartclass-redis
48 | command: redis-server --requirepass redis_wKaQkb
49 | ports:
50 | - "6379:6379"
51 | volumes:
52 | - redis-data:/data
53 | networks:
54 | - smartclass-network
55 | restart: always
56 |
57 | # 数据卷
58 | volumes:
59 | mysql-data:
60 | redis-data:
61 |
62 | # 网络配置
63 | networks:
64 | smartclass-network:
65 | driver: bridge
--------------------------------------------------------------------------------
/settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 | aliyunmaven
9 | central
10 | 阿里云公共仓库
11 | https://maven.aliyun.com/repository/public
12 |
13 |
14 | aliyunmaven2
15 | central
16 | 阿里云仓库2
17 | https://maven.aliyun.com/repository/central
18 |
19 |
20 | aliyunmaven3
21 | central
22 | 阿里云仓库3
23 | https://maven.aliyun.com/repository/spring
24 |
25 |
26 |
27 |
28 |
29 | jdk-1.8
30 |
31 | true
32 | 1.8
33 |
34 |
35 | 1.8
36 | 1.8
37 | 1.8
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/sql/post_es_mapping.json:
--------------------------------------------------------------------------------
1 | {
2 | "aliases": {
3 | "post": {}
4 | },
5 | "mappings": {
6 | "properties": {
7 | "title": {
8 | "type": "text",
9 | "analyzer": "ik_max_word",
10 | "search_analyzer": "ik_smart",
11 | "fields": {
12 | "keyword": {
13 | "type": "keyword",
14 | "ignore_above": 256
15 | }
16 | }
17 | },
18 | "content": {
19 | "type": "text",
20 | "analyzer": "ik_max_word",
21 | "search_analyzer": "ik_smart",
22 | "fields": {
23 | "keyword": {
24 | "type": "keyword",
25 | "ignore_above": 256
26 | }
27 | }
28 | },
29 | "tags": {
30 | "type": "keyword"
31 | },
32 | "thumbNum": {
33 | "type": "long"
34 | },
35 | "favourNum": {
36 | "type": "long"
37 | },
38 | "userId": {
39 | "type": "keyword"
40 | },
41 | "createTime": {
42 | "type": "date"
43 | },
44 | "updateTime": {
45 | "type": "date"
46 | },
47 | "isDelete": {
48 | "type": "keyword"
49 | }
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/MainApplication.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
7 | import org.springframework.context.annotation.EnableAspectJAutoProxy;
8 | import org.springframework.scheduling.annotation.EnableScheduling;
9 |
10 | /**
11 | * 主类(项目启动入口)
12 | */
13 | // todo 如需开启 Redis,须移除 exclude 中的内容
14 | //@SpringBootApplication(exclude = {RedisAutoConfiguration.class})
15 | @SpringBootApplication()
16 | @MapperScan("com.ubanillx.smartclass.mapper")
17 | @EnableScheduling
18 | @EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
19 | public class MainApplication {
20 |
21 | public static void main(String[] args) {
22 | SpringApplication.run(MainApplication.class, args);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/annotation/AuthCheck.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * 权限校验
10 | */
11 | @Target(ElementType.METHOD)
12 | @Retention(RetentionPolicy.RUNTIME)
13 | public @interface AuthCheck {
14 |
15 | /**
16 | * 必须有某个角色
17 | *
18 | * @return
19 | */
20 | String mustRole() default "";
21 |
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/common/BaseResponse.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.common;
2 |
3 | import java.io.Serializable;
4 | import lombok.Data;
5 |
6 | /**
7 | * 通用返回类
8 | *
9 | * @param
10 |
11 | */
12 | @Data
13 | public class BaseResponse implements Serializable {
14 |
15 | private int code;
16 |
17 | private T data;
18 |
19 | private String message;
20 |
21 | public BaseResponse(int code, T data, String message) {
22 | this.code = code;
23 | this.data = data;
24 | this.message = message;
25 | }
26 |
27 | public BaseResponse(int code, T data) {
28 | this(code, data, "");
29 | }
30 |
31 | public BaseResponse(ErrorCode errorCode) {
32 | this(errorCode.getCode(), null, errorCode.getMessage());
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/common/DeleteRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.common;
2 |
3 | import java.io.Serializable;
4 | import lombok.Data;
5 |
6 | /**
7 | * 删除请求
8 | */
9 | @Data
10 | public class DeleteRequest implements Serializable {
11 |
12 | /**
13 | * id
14 | */
15 | private Long id;
16 |
17 | private static final long serialVersionUID = 1L;
18 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/common/ErrorCode.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.common;
2 |
3 | /**
4 | * 自定义错误码
5 | */
6 | public enum ErrorCode {
7 |
8 | SUCCESS(0, "ok"),
9 | PARAMS_ERROR(40000, "请求参数错误"),
10 | NOT_LOGIN_ERROR(40100, "未登录"),
11 | NO_AUTH_ERROR(40101, "无权限"),
12 | NOT_FOUND_ERROR(40400, "请求数据不存在"),
13 | FORBIDDEN_ERROR(40300, "禁止访问"),
14 | SYSTEM_ERROR(50000, "系统内部异常"),
15 | OPERATION_ERROR(50001, "操作失败");
16 |
17 | /**
18 | * 状态码
19 | */
20 | private final int code;
21 |
22 | /**
23 | * 信息
24 | */
25 | private final String message;
26 |
27 | ErrorCode(int code, String message) {
28 | this.code = code;
29 | this.message = message;
30 | }
31 |
32 | public int getCode() {
33 | return code;
34 | }
35 |
36 | public String getMessage() {
37 | return message;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/common/PageRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.common;
2 |
3 | import com.ubanillx.smartclass.constant.CommonConstant;
4 | import lombok.Data;
5 |
6 | /**
7 | * 分页请求
8 | */
9 | @Data
10 | public class PageRequest {
11 |
12 | /**
13 | * 当前页号
14 | */
15 | private int current = 1;
16 |
17 | /**
18 | * 页面大小
19 | */
20 | private int pageSize = 10;
21 |
22 | /**
23 | * 排序字段
24 | */
25 | private String sortField;
26 |
27 | /**
28 | * 排序顺序(默认升序)
29 | */
30 | private String sortOrder = CommonConstant.SORT_ORDER_ASC;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/common/ResultUtils.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.common;
2 |
3 | /**
4 | * 返回工具类
5 | */
6 | @SuppressWarnings("unchecked")
7 | public class ResultUtils {
8 |
9 | /**
10 | * 成功
11 | *
12 | * @param data 数据
13 | * @param 泛型
14 | * @return 通用返回类
15 | */
16 | public static BaseResponse success(T data) {
17 | return new BaseResponse<>(0, data, "ok");
18 | }
19 |
20 | /**
21 | * 失败
22 | *
23 | * @param errorCode 错误码
24 | * @param 泛型
25 | * @return 通用返回类
26 | */
27 | public static BaseResponse error(ErrorCode errorCode) {
28 | return new BaseResponse<>(errorCode);
29 | }
30 |
31 | /**
32 | * 失败
33 | *
34 | * @param code 错误码
35 | * @param message 错误信息
36 | * @param 泛型
37 | * @return 通用返回类
38 | */
39 | public static BaseResponse error(int code, String message) {
40 | return new BaseResponse<>(code, null, message);
41 | }
42 |
43 | /**
44 | * 失败
45 | *
46 | * @param errorCode 错误码
47 | * @param message 错误信息
48 | * @param 泛型
49 | * @return 通用返回类
50 | */
51 | public static BaseResponse error(ErrorCode errorCode, String message) {
52 | return new BaseResponse<>(errorCode.getCode(), null, message);
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/config/CorsConfig.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.config;
2 |
3 | import org.springframework.context.annotation.Configuration;
4 | import org.springframework.web.servlet.config.annotation.CorsRegistry;
5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
6 |
7 | /**
8 | * 全局跨域配置
9 | */
10 | @Configuration
11 | public class CorsConfig implements WebMvcConfigurer {
12 |
13 | @Override
14 | public void addCorsMappings(CorsRegistry registry) {
15 | // 覆盖所有请求
16 | registry.addMapping("/**")
17 | // 允许发送 Cookie
18 | .allowCredentials(true)
19 | // 放行哪些域名(必须用 patterns,否则 * 会和 allowCredentials 冲突)
20 | .allowedOriginPatterns("*")
21 | .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
22 | .allowedHeaders("*")
23 | .exposedHeaders("*");
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/config/DifyConfig.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.config;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 | import org.springframework.context.annotation.Configuration;
6 |
7 | /**
8 | * Dify配置
9 | */
10 | @Configuration
11 | @ConfigurationProperties(prefix = "dify")
12 | @Data
13 | public class DifyConfig {
14 |
15 | /**
16 | * Dify API基础URL
17 | */
18 | private String baseUrl = "http://10.0.124.181/v1";
19 |
20 | /**
21 | * 聊天消息路径
22 | */
23 | private String chatMessagesPath = "/chat-messages";
24 |
25 | /**
26 | * 默认User标识前缀
27 | */
28 | private String userPrefix = "smartclass_";
29 |
30 | /**
31 | * 是否启用详细的流式日志记录
32 | */
33 | private boolean enableStreamingVerboseLog = false;
34 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/config/JsonConfig.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.config;
2 |
3 | import com.fasterxml.jackson.databind.ObjectMapper;
4 | import com.fasterxml.jackson.databind.module.SimpleModule;
5 | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
6 | import org.springframework.boot.jackson.JsonComponent;
7 | import org.springframework.context.annotation.Bean;
8 | import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
9 |
10 | /**
11 | * Spring MVC Json 配置
12 | */
13 | @JsonComponent
14 | public class JsonConfig {
15 |
16 | /**
17 | * 添加 Long 转 json 精度丢失的配置
18 | */
19 | @Bean
20 | public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
21 | ObjectMapper objectMapper = builder.createXmlMapper(false).build();
22 | SimpleModule module = new SimpleModule();
23 | module.addSerializer(Long.class, ToStringSerializer.instance);
24 | module.addSerializer(Long.TYPE, ToStringSerializer.instance);
25 | objectMapper.registerModule(module);
26 | return objectMapper;
27 | }
28 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/config/MyBatisPlusConfig.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.config;
2 |
3 | import com.baomidou.mybatisplus.annotation.DbType;
4 | import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
5 | import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
6 | import org.springframework.context.annotation.Bean;
7 | import org.springframework.context.annotation.Configuration;
8 |
9 | /**
10 | * MyBatis Plus 配置
11 | *
12 | */
13 | @Configuration
14 | public class MyBatisPlusConfig {
15 |
16 | /**
17 | * 拦截器配置
18 | *
19 | * @return
20 | */
21 | @Bean
22 | public MybatisPlusInterceptor mybatisPlusInterceptor() {
23 | MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
24 | // 分页插件
25 | interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
26 | return interceptor;
27 | }
28 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/config/WxOpenConfig.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.config;
2 |
3 | import lombok.Data;
4 | import lombok.extern.slf4j.Slf4j;
5 | import me.chanjar.weixin.mp.api.WxMpService;
6 | import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
7 | import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
8 | import org.springframework.boot.context.properties.ConfigurationProperties;
9 | import org.springframework.context.annotation.Configuration;
10 |
11 | /**
12 | * 微信开放平台配置
13 | */
14 | @Slf4j
15 | @Configuration
16 | @ConfigurationProperties(prefix = "wx.open")
17 | @Data
18 | public class WxOpenConfig {
19 |
20 | private String appId;
21 |
22 | private String appSecret;
23 |
24 | private WxMpService wxMpService;
25 |
26 | /**
27 | * 单例模式(不用 @Bean 是为了防止和公众号的 service 冲突)
28 | *
29 | * @return
30 | */
31 | public WxMpService getWxMpService() {
32 | if (wxMpService != null) {
33 | return wxMpService;
34 | }
35 | synchronized (this) {
36 | if (wxMpService != null) {
37 | return wxMpService;
38 | }
39 | WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
40 | config.setAppId(appId);
41 | config.setSecret(appSecret);
42 | WxMpService service = new WxMpServiceImpl();
43 | service.setWxMpConfigStorage(config);
44 | wxMpService = service;
45 | return wxMpService;
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/constant/CommonConstant.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.constant;
2 |
3 | /**
4 | * 通用常量
5 | */
6 | public interface CommonConstant {
7 |
8 | /**
9 | * 升序
10 | */
11 | String SORT_ORDER_ASC = "ascend";
12 |
13 | /**
14 | * 降序
15 | */
16 | String SORT_ORDER_DESC = " descend";
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/constant/FileConstant.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.constant;
2 |
3 | /**
4 | * 文件常量
5 | */
6 | public interface FileConstant {
7 |
8 | /**
9 | * 1MB大小
10 | */
11 | long ONE_MB = 1024 * 1024L;
12 |
13 | /**
14 | * 10MB大小
15 | */
16 | long TEN_MB = 10 * 1024 * 1024L;
17 |
18 | /**
19 | * 50MB大小
20 | */
21 | long FIFTY_MB = 50 * 1024 * 1024L;
22 |
23 | /**
24 | * 100MB大小
25 | */
26 | long ONE_HUNDRED_MB = 100 * 1024 * 1024L;
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/constant/UserConstant.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.constant;
2 |
3 | /**
4 | * 用户常量
5 | */
6 | public interface UserConstant {
7 |
8 | /**
9 | * 用户登录态键
10 | */
11 | String USER_LOGIN_STATE = "user_login";
12 |
13 | // region 权限
14 |
15 | /**
16 | * 默认角色
17 | */
18 | String DEFAULT_ROLE = "user";
19 |
20 | /**
21 | * 管理员角色
22 | */
23 | String ADMIN_ROLE = "admin";
24 |
25 | /**
26 | * 被封号
27 | */
28 | String BAN_ROLE = "ban";
29 |
30 | // endregion
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/esdao/PostEsDao.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.esdao;
2 |
3 | import com.ubanillx.smartclass.model.dto.post.PostEsDTO;
4 | import java.util.List;
5 | import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
6 |
7 | /**
8 | * 帖子 ES 操作
9 | */
10 | public interface PostEsDao extends ElasticsearchRepository {
11 |
12 | List findByUserId(Long userId);
13 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/exception/BusinessException.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.exception;
2 |
3 | import com.ubanillx.smartclass.common.ErrorCode;
4 |
5 | /**
6 | * 自定义异常类
7 | */
8 | public class BusinessException extends RuntimeException {
9 |
10 | /**
11 | * 错误码
12 | */
13 | private final int code;
14 |
15 | public BusinessException(int code, String message) {
16 | super(message);
17 | this.code = code;
18 | }
19 |
20 | public BusinessException(ErrorCode errorCode) {
21 | super(errorCode.getMessage());
22 | this.code = errorCode.getCode();
23 | }
24 |
25 | public BusinessException(ErrorCode errorCode, String message) {
26 | super(message);
27 | this.code = errorCode.getCode();
28 | }
29 |
30 | public int getCode() {
31 | return code;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/exception/GlobalExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.exception;
2 |
3 | import com.ubanillx.smartclass.common.BaseResponse;
4 | import com.ubanillx.smartclass.common.ErrorCode;
5 | import com.ubanillx.smartclass.common.ResultUtils;
6 | import lombok.extern.slf4j.Slf4j;
7 | import org.springframework.web.bind.annotation.ExceptionHandler;
8 | import org.springframework.web.bind.annotation.RestControllerAdvice;
9 |
10 | /**
11 | * 全局异常处理器
12 | */
13 | @RestControllerAdvice
14 | @Slf4j
15 | public class GlobalExceptionHandler {
16 |
17 | @ExceptionHandler(BusinessException.class)
18 | public BaseResponse> businessExceptionHandler(BusinessException e) {
19 | log.error("BusinessException", e);
20 | return ResultUtils.error(e.getCode(), e.getMessage());
21 | }
22 |
23 | @ExceptionHandler(RuntimeException.class)
24 | public BaseResponse> runtimeExceptionHandler(RuntimeException e) {
25 | log.error("RuntimeException", e);
26 | return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "系统错误");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/exception/ThrowUtils.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.exception;
2 |
3 | import com.ubanillx.smartclass.common.ErrorCode;
4 |
5 | /**
6 | * 抛异常工具类
7 | */
8 | public class ThrowUtils {
9 |
10 | /**
11 | * 条件成立则抛异常
12 | *
13 | * @param condition
14 | * @param runtimeException
15 | */
16 | public static void throwIf(boolean condition, RuntimeException runtimeException) {
17 | if (condition) {
18 | throw runtimeException;
19 | }
20 | }
21 |
22 | /**
23 | * 条件成立则抛异常
24 | *
25 | * @param condition
26 | * @param errorCode
27 | */
28 | public static void throwIf(boolean condition, ErrorCode errorCode) {
29 | throwIf(condition, new BusinessException(errorCode));
30 | }
31 |
32 | /**
33 | * 条件成立则抛异常
34 | *
35 | * @param condition
36 | * @param errorCode
37 | * @param message
38 | */
39 | public static void throwIf(boolean condition, ErrorCode errorCode, String message) {
40 | throwIf(condition, new BusinessException(errorCode, message));
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/job/once/FullSyncPostToEs.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.job.once;
2 |
3 | import com.ubanillx.smartclass.esdao.PostEsDao;
4 | import com.ubanillx.smartclass.model.dto.post.PostEsDTO;
5 | import com.ubanillx.smartclass.model.entity.Post;
6 | import com.ubanillx.smartclass.service.PostService;
7 | import java.util.List;
8 | import java.util.stream.Collectors;
9 | import javax.annotation.Resource;
10 | import lombok.extern.slf4j.Slf4j;
11 | import cn.hutool.core.collection.CollUtil;
12 | import org.springframework.boot.CommandLineRunner;
13 |
14 | /**
15 | * 全量同步帖子到 es
16 | */
17 | // todo 取消注释开启任务
18 | //@Component
19 | @Slf4j
20 | public class FullSyncPostToEs implements CommandLineRunner {
21 |
22 | @Resource
23 | private PostService postService;
24 |
25 | @Resource
26 | private PostEsDao postEsDao;
27 |
28 | @Override
29 | public void run(String... args) {
30 | List postList = postService.list();
31 | if (CollUtil.isEmpty(postList)) {
32 | return;
33 | }
34 | List postEsDTOList = postList.stream().map(PostEsDTO::objToDto).collect(Collectors.toList());
35 | final int pageSize = 500;
36 | int total = postEsDTOList.size();
37 | log.info("FullSyncPostToEs start, total {}", total);
38 | for (int i = 0; i < total; i += pageSize) {
39 | int end = Math.min(i + pageSize, total);
40 | log.info("sync from {} to {}", i, end);
41 | postEsDao.saveAll(postEsDTOList.subList(i, end));
42 | }
43 | log.info("FullSyncPostToEs end, total {}", total);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/AchievementMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.Achievement;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【achievement(成就定义)】的数据库操作Mapper
9 | * @createDate 2025-03-18 23:08:38
10 | * @Entity com.ubanillx.smartclass.model.entity.Achievement
11 | */
12 | public interface AchievementMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/AiAvatarChatHistoryMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.AiAvatarChatHistory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【ai_avatar_chat_history(AI分身对话历史)】的数据库操作Mapper
9 | * @createDate 2025-03-24 21:35:44
10 | * @Entity com.ubanillx.smartclass.model.entity.AiAvatarChatHistory
11 | */
12 | public interface AiAvatarChatHistoryMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/AiAvatarMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ubanillx.smartclass.model.entity.AiAvatar;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【ai_avatar(AI分身)】的数据库操作Mapper
9 | * @createDate 2025-03-24 21:35:44
10 | * @Entity com.ubanillx.smartclass.model.entity.AiAvatar
11 | */
12 | public interface AiAvatarMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/AnnouncementMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.Announcement;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【announcement(系统公告)】的数据库操作Mapper
9 | * @createDate 2025-03-18 23:08:38
10 | * @Entity com.ubanillx.smartclass.model.entity.Announcement
11 | */
12 | public interface AnnouncementMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseCategoryMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.CourseCategory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course_category(课程分类)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.CourseCategory
11 | */
12 | public interface CourseCategoryMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseChapterMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.CourseChapter;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course_chapter(课程章节)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.CourseChapter
11 | */
12 | public interface CourseChapterMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseFavouriteMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.CourseFavourite;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course_favourite(课程收藏)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.CourseFavourite
11 | */
12 | public interface CourseFavouriteMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.Course;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course(课程)】的数据库操作Mapper
9 | * @createDate 2025-03-18 23:08:38
10 | * @Entity com.ubanillx.smartclass.model.entity.Course
11 | */
12 | public interface CourseMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseMaterialMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.CourseMaterial;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course_material(课程资料)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.CourseMaterial
11 | */
12 | public interface CourseMaterialMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseReviewMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.CourseReview;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course_review(课程评价)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.CourseReview
11 | */
12 | public interface CourseReviewMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/CourseSectionMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.CourseSection;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【course_section(课程小节)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.CourseSection
11 | */
12 | public interface CourseSectionMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/DailyArticleMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.DailyArticle;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【daily_article(每日文章)】的数据库操作Mapper
9 | * @createDate 2025-03-19 00:03:09
10 | * @Entity com.ubanillx.smartclass.model.entity.DailyArticle
11 | */
12 | public interface DailyArticleMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/DailyWordMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.DailyWord;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【daily_word(每日单词)】的数据库操作Mapper
9 | * @createDate 2025-03-19 00:03:09
10 | * @Entity com.ubanillx.smartclass.model.entity.DailyWord
11 | */
12 | public interface DailyWordMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/PostFavourMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.Wrapper;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import com.baomidou.mybatisplus.core.metadata.IPage;
6 | import com.baomidou.mybatisplus.core.toolkit.Constants;
7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
8 | import com.ubanillx.smartclass.model.entity.Post;
9 | import com.ubanillx.smartclass.model.entity.PostFavour;
10 | import org.apache.ibatis.annotations.Param;
11 |
12 | /**
13 | * 帖子收藏数据库操作
14 | */
15 | public interface PostFavourMapper extends BaseMapper {
16 |
17 | /**
18 | * 分页查询收藏帖子列表
19 | *
20 | * @param page
21 | * @param queryWrapper
22 | * @param favourUserId
23 | * @return
24 | */
25 | Page listFavourPostByPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper,
26 | long favourUserId);
27 |
28 | }
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/PostMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ubanillx.smartclass.model.entity.Post;
5 | import java.util.Date;
6 | import java.util.List;
7 |
8 | /**
9 | * 帖子数据库操作
10 | */
11 | public interface PostMapper extends BaseMapper {
12 |
13 | /**
14 | * 查询帖子列表(包括已被删除的数据)
15 | */
16 | List listPostWithDelete(Date minUpdateTime);
17 |
18 | }
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/PostThumbMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.PostThumb;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * 帖子点赞数据库操作
8 | */
9 | public interface PostThumbMapper extends BaseMapper {
10 |
11 | }
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/TeacherMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ubanillx.smartclass.model.entity.Teacher;
5 |
6 | /**
7 | * 讲师数据库操作
8 | */
9 | public interface TeacherMapper extends BaseMapper {
10 |
11 | }
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserAiAvatarMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.UserAiAvatar;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【user_ai_avatar(用户AI分身关联)】的数据库操作Mapper
9 | * @createDate 2025-03-24 21:35:44
10 | * @Entity com.ubanillx.smartclass.model.entity.UserAiAvatar
11 | */
12 | public interface UserAiAvatarMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserAnnouncementReaderMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ubanillx.smartclass.model.entity.UserAnnouncementReader;
5 |
6 | /**
7 | * 用户公告阅读记录Mapper
8 | */
9 | public interface UserAnnouncementReaderMapper extends BaseMapper {
10 | }
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserArticleRecordMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.dto.UserArticleRecord;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【user_article_record(用户文章阅读记录)】的数据库操作Mapper
9 | * @createDate 2025-03-20 14:36:38
10 | * @Entity com.ubanillx.smartclass.model.dto.UserArticleRecord
11 | */
12 | public interface UserArticleRecordMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserDailyArticleMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.Wrapper;
4 | import com.baomidou.mybatisplus.core.metadata.IPage;
5 | import com.baomidou.mybatisplus.core.toolkit.Constants;
6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 | import com.ubanillx.smartclass.model.entity.DailyArticle;
8 | import com.ubanillx.smartclass.model.entity.UserDailyArticle;
9 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
10 | import org.apache.ibatis.annotations.Param;
11 |
12 | /**
13 | * @author liulo
14 | * @description 针对表【user_daily_article(用户与每日文章关联)】的数据库操作Mapper
15 | * @createDate 2025-03-20 14:25:20
16 | * @Entity com.ubanillx.smartclass.model.entity.UserDailyArticle
17 | */
18 | public interface UserDailyArticleMapper extends BaseMapper {
19 |
20 | /**
21 | * 获取用户收藏的文章分页列表
22 | *
23 | * @param page
24 | * @param queryWrapper
25 | * @param favourUserId
26 | * @return
27 | */
28 | Page listFavourArticleByPage(IPage page,
29 | @Param(Constants.WRAPPER) Wrapper queryWrapper,
30 | @Param("favourUserId") long favourUserId);
31 |
32 | /**
33 | * 获取用户点赞的文章分页列表
34 | *
35 | * @param page
36 | * @param queryWrapper
37 | * @param thumbUserId
38 | * @return
39 | */
40 | Page listThumbArticleByPage(IPage page,
41 | @Param(Constants.WRAPPER) Wrapper queryWrapper,
42 | @Param("thumbUserId") long thumbUserId);
43 | }
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserDailyWordMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.Wrapper;
4 | import com.baomidou.mybatisplus.core.metadata.IPage;
5 | import com.baomidou.mybatisplus.core.toolkit.Constants;
6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 | import com.ubanillx.smartclass.model.entity.DailyWord;
8 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
9 | import com.ubanillx.smartclass.model.entity.UserDailyWord;
10 | import org.apache.ibatis.annotations.Param;
11 |
12 | /**
13 | * @author liulo
14 | * @description 针对表【user_daily_word(用户与每日单词关联)】的数据库操作Mapper
15 | * @createDate 2025-03-20 14:25:20
16 | * @Entity com.ubanillx.smartclass.model.entity.UserDailyWord
17 | */
18 | public interface UserDailyWordMapper extends BaseMapper {
19 |
20 | /**
21 | * 获取用户收藏的单词分页列表
22 | *
23 | * @param page
24 | * @param queryWrapper
25 | * @param favourUserId
26 | * @return
27 | */
28 | Page listFavourWordByPage(IPage page,
29 | @Param(Constants.WRAPPER) Wrapper queryWrapper,
30 | @Param("favourUserId") long favourUserId);
31 |
32 | /**
33 | * 获取用户点赞的单词分页列表
34 | *
35 | * @param page
36 | * @param queryWrapper
37 | * @param thumbUserId
38 | * @return
39 | */
40 | Page listThumbWordByPage(IPage page,
41 | @Param(Constants.WRAPPER) Wrapper queryWrapper,
42 | @Param("thumbUserId") long thumbUserId);
43 | }
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserLearningStatsMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.ubanillx.smartclass.model.entity.UserLearningStats;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | * @author liulo
8 | * @description 针对表【user_learning_stats(用户学习统计)】的数据库操作Mapper
9 | * @createDate 2025-03-21 15:14:50
10 | * @Entity com.ubanillx.smartclass.model.entity.UserLearningStats
11 | */
12 | public interface UserLearningStatsMapper extends BaseMapper {
13 |
14 | }
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserLevelMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ubanillx.smartclass.model.entity.UserLevel;
5 |
6 | /**
7 | * 用户等级数据库操作
8 | */
9 | public interface UserLevelMapper extends BaseMapper {
10 |
11 | }
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/mapper/UserMapper.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ubanillx.smartclass.model.entity.User;
5 |
6 | /**
7 | * 用户数据库操作
8 | */
9 | public interface UserMapper extends BaseMapper {
10 |
11 | }
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/DeleteRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 删除请求
9 | */
10 | @Data
11 | public class DeleteRequest implements Serializable {
12 |
13 | /**
14 | * id
15 | */
16 | private Long id;
17 |
18 | private static final long serialVersionUID = 1L;
19 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/UserArticleRecord.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import com.baomidou.mybatisplus.annotation.TableName;
7 | import java.io.Serializable;
8 | import java.util.Date;
9 | import lombok.Data;
10 |
11 | /**
12 | * 用户文章阅读记录
13 | * @TableName user_article_record
14 | */
15 | @TableName(value ="user_article_record")
16 | @Data
17 | public class UserArticleRecord implements Serializable {
18 | /**
19 | * id
20 | */
21 | @TableId(type = IdType.AUTO)
22 | private Long id;
23 |
24 | /**
25 | * 用户id
26 | */
27 | private Long userId;
28 |
29 | /**
30 | * 文章id
31 | */
32 | private Long articleId;
33 |
34 | /**
35 | * 阅读状态:0-未读,1-阅读中,2-已读完
36 | */
37 | private Integer readStatus;
38 |
39 | /**
40 | * 阅读进度(百分比)
41 | */
42 | private Integer readProgress;
43 |
44 | /**
45 | * 是否点赞
46 | */
47 | private Integer isLiked;
48 |
49 | /**
50 | * 用户笔记
51 | */
52 | private String userNotes;
53 |
54 | /**
55 | * 创建时间
56 | */
57 | private Date createTime;
58 |
59 | /**
60 | * 更新时间
61 | */
62 | private Date updateTime;
63 |
64 | @TableField(exist = false)
65 | private static final long serialVersionUID = 1L;
66 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/aiavatar/AiAvatarAddRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.aiavatar;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.math.BigDecimal;
7 |
8 | /**
9 | * AI分身添加请求
10 | */
11 | @Data
12 | public class AiAvatarAddRequest implements Serializable {
13 |
14 | /**
15 | * AI分身名称
16 | */
17 | private String name;
18 |
19 | /**
20 | * 请求地址
21 | */
22 | private String baseUrl;
23 |
24 | /**
25 | * AI分身描述
26 | */
27 | private String description;
28 |
29 | /**
30 | * AI分身头像URL
31 | */
32 | private String avatarImgUrl;
33 |
34 | /**
35 | * AI分身鉴权,一串随机字符
36 | */
37 | private String avatarAuth;
38 |
39 | /**
40 | * 标签,JSON数组格式
41 | */
42 | private String tags;
43 |
44 | /**
45 | * 性格特点描述
46 | */
47 | private String personality;
48 |
49 | /**
50 | * 能力描述
51 | */
52 | private String abilities;
53 |
54 | /**
55 | * 是否公开:0-否,1-是
56 | */
57 | private Integer isPublic;
58 |
59 | /**
60 | * 排序,数字越小排序越靠前
61 | */
62 | private Integer sort;
63 |
64 | private static final long serialVersionUID = 1L;
65 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/aiavatar/AiAvatarUpdateRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.aiavatar;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.math.BigDecimal;
7 |
8 | /**
9 | * AI分身更新请求
10 | */
11 | @Data
12 | public class AiAvatarUpdateRequest implements Serializable {
13 |
14 | /**
15 | * id
16 | */
17 | private Long id;
18 |
19 | /**
20 | * AI分身名称
21 | */
22 | private String name;
23 |
24 | /**
25 | * 请求地址
26 | */
27 | private String baseUrl;
28 |
29 | /**
30 | * AI分身描述
31 | */
32 | private String description;
33 |
34 | /**
35 | * AI分身头像URL
36 | */
37 | private String avatarImgUrl;
38 |
39 | /**
40 | * AI分身鉴权,一串随机字符
41 | */
42 | private String avatarAuth;
43 |
44 | /**
45 | * 标签,JSON数组格式
46 | */
47 | private String tags;
48 |
49 | /**
50 | * 性格特点描述
51 | */
52 | private String personality;
53 |
54 | /**
55 | * 能力描述
56 | */
57 | private String abilities;
58 |
59 | /**
60 | * 是否公开:0-否,1-是
61 | */
62 | private Integer isPublic;
63 |
64 | /**
65 | * 状态:0-禁用,1-启用
66 | */
67 | private Integer status;
68 |
69 | /**
70 | * 排序,数字越小排序越靠前
71 | */
72 | private Integer sort;
73 |
74 | private static final long serialVersionUID = 1L;
75 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/announcement/AnnouncementAddRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.announcement;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.Date;
7 |
8 | /**
9 | * 公告添加请求
10 | */
11 | @Data
12 | public class AnnouncementAddRequest implements Serializable {
13 |
14 | /**
15 | * 公告标题
16 | */
17 | private String title;
18 |
19 | /**
20 | * 公告内容
21 | */
22 | private String content;
23 |
24 | /**
25 | * 优先级,数字越大优先级越高
26 | */
27 | private Integer priority;
28 |
29 | /**
30 | * 状态:0-草稿,1-已发布,2-已下线
31 | */
32 | private Integer status;
33 |
34 | /**
35 | * 公告开始展示时间
36 | */
37 | private Date startTime;
38 |
39 | /**
40 | * 公告结束展示时间
41 | */
42 | private Date endTime;
43 |
44 | /**
45 | * 封面图片URL
46 | */
47 | private String coverImage;
48 |
49 | private static final long serialVersionUID = 1L;
50 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/announcement/AnnouncementQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.announcement;
2 |
3 | import com.ubanillx.smartclass.common.PageRequest;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 |
7 | import java.io.Serializable;
8 | import java.util.Date;
9 |
10 | /**
11 | * 公告查询请求
12 | */
13 | @EqualsAndHashCode(callSuper = true)
14 | @Data
15 | public class AnnouncementQueryRequest extends PageRequest implements Serializable {
16 | /**
17 | * id
18 | */
19 | private Long id;
20 |
21 | /**
22 | * 公告标题
23 | */
24 | private String title;
25 |
26 | /**
27 | * 公告内容
28 | */
29 | private String content;
30 |
31 | /**
32 | * 优先级,数字越大优先级越高
33 | */
34 | private Integer priority;
35 |
36 | /**
37 | * 状态:0-草稿,1-已发布,2-已下线
38 | */
39 | private Integer status;
40 |
41 | /**
42 | * 公告开始展示时间
43 | */
44 | private Date startTime;
45 |
46 | /**
47 | * 公告结束展示时间
48 | */
49 | private Date endTime;
50 |
51 | /**
52 | * 封面图片URL
53 | */
54 | private String coverImage;
55 |
56 | /**
57 | * 发布管理员id
58 | */
59 | private Long adminId;
60 |
61 | /**
62 | * 创建时间
63 | */
64 | private Date createTime;
65 |
66 | private static final long serialVersionUID = 1L;
67 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/announcement/AnnouncementUpdateRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.announcement;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.Date;
7 |
8 | /**
9 | * 公告更新请求
10 | */
11 | @Data
12 | public class AnnouncementUpdateRequest implements Serializable {
13 | /**
14 | * id
15 | */
16 | private Long id;
17 |
18 | /**
19 | * 公告标题
20 | */
21 | private String title;
22 |
23 | /**
24 | * 公告内容
25 | */
26 | private String content;
27 |
28 | /**
29 | * 优先级,数字越大优先级越高
30 | */
31 | private Integer priority;
32 |
33 | /**
34 | * 状态:0-草稿,1-已发布,2-已下线
35 | */
36 | private Integer status;
37 |
38 | /**
39 | * 公告开始展示时间
40 | */
41 | private Date startTime;
42 |
43 | /**
44 | * 公告结束展示时间
45 | */
46 | private Date endTime;
47 |
48 | /**
49 | * 封面图片URL
50 | */
51 | private String coverImage;
52 |
53 | private static final long serialVersionUID = 1L;
54 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/ChatMessageAddRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.List;
7 |
8 | /**
9 | * 聊天消息添加请求
10 | */
11 | @Data
12 | public class ChatMessageAddRequest implements Serializable {
13 |
14 | /**
15 | * AI分身ID
16 | */
17 | private Long aiAvatarId;
18 |
19 | /**
20 | * 会话ID,如果为空则创建新会话
21 | */
22 | private String sessionId;
23 |
24 | /**
25 | * 消息类型:user/ai
26 | */
27 | private String messageType;
28 |
29 | /**
30 | * 消息内容
31 | */
32 | private String content;
33 |
34 | /**
35 | * 文件ID列表,用于多模态对话
36 | */
37 | private List fileIds;
38 |
39 | /**
40 | * 是否结束对话,结束对话时会获取会话总结
41 | */
42 | private boolean endChat;
43 |
44 | private static final long serialVersionUID = 1L;
45 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/ChatMessageQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import com.ubanillx.smartclass.common.PageRequest;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 |
7 | import java.io.Serializable;
8 |
9 | /**
10 | * 聊天消息查询请求
11 | */
12 | @EqualsAndHashCode(callSuper = true)
13 | @Data
14 | public class ChatMessageQueryRequest extends PageRequest implements Serializable {
15 |
16 | /**
17 | * 会话ID
18 | */
19 | private String sessionId;
20 |
21 | /**
22 | * AI分身ID (可选)
23 | */
24 | private Long aiAvatarId;
25 |
26 | /**
27 | * 消息类型:user/ai
28 | */
29 | private String messageType;
30 |
31 | /**
32 | * 消息内容(模糊搜索)
33 | */
34 | private String content;
35 |
36 | private static final long serialVersionUID = 1L;
37 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/ChatSessionQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import com.ubanillx.smartclass.common.PageRequest;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 |
7 | import java.io.Serializable;
8 |
9 | /**
10 | * 聊天会话查询请求
11 | */
12 | @EqualsAndHashCode(callSuper = true)
13 | @Data
14 | public class ChatSessionQueryRequest extends PageRequest implements Serializable {
15 |
16 | /**
17 | * 用户ID
18 | */
19 | private Long userId;
20 |
21 | /**
22 | * AI分身ID
23 | */
24 | private Long aiAvatarId;
25 |
26 | /**
27 | * 会话ID
28 | */
29 | private String sessionId;
30 |
31 | /**
32 | * 会话名称(模糊搜索)
33 | */
34 | private String sessionName;
35 |
36 | private static final long serialVersionUID = 1L;
37 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/ChatSessionUpdateRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 聊天会话更新请求
9 | */
10 | @Data
11 | public class ChatSessionUpdateRequest implements Serializable {
12 |
13 | /**
14 | * 会话ID
15 | */
16 | private String sessionId;
17 |
18 | /**
19 | * 会话名称
20 | */
21 | private String sessionName;
22 |
23 | private static final long serialVersionUID = 1L;
24 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/StopStreamingRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 停止流式响应请求DTO
9 | */
10 | @Data
11 | public class StopStreamingRequest implements Serializable {
12 |
13 | /**
14 | * AI分身ID
15 | */
16 | private Long aiAvatarId;
17 |
18 | /**
19 | * 任务ID,从流式响应中获取
20 | */
21 | private String taskId;
22 |
23 | private static final long serialVersionUID = 1L;
24 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/TextToAudioRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 文字转语音请求DTO
9 | */
10 | @Data
11 | public class TextToAudioRequest implements Serializable {
12 |
13 | /**
14 | * AI分身ID
15 | */
16 | private Long aiAvatarId;
17 |
18 | /**
19 | * 要转换的文本内容
20 | */
21 | private String text;
22 |
23 | /**
24 | * 消息ID,如果提供则优先使用(不需要传文本内容)
25 | */
26 | private String messageId;
27 |
28 | private static final long serialVersionUID = 1L;
29 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/UploadFileRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import lombok.Data;
4 | import org.springframework.web.multipart.MultipartFile;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * 上传文件请求DTO
10 | */
11 | @Data
12 | public class UploadFileRequest implements Serializable {
13 |
14 | /**
15 | * AI分身ID
16 | */
17 | private Long aiAvatarId;
18 |
19 | /**
20 | * 上传的文件
21 | */
22 | private MultipartFile file;
23 |
24 | private static final long serialVersionUID = 1L;
25 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/chat/UploadFileResponse.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.chat;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 上传文件响应DTO
9 | */
10 | @Data
11 | public class UploadFileResponse implements Serializable {
12 |
13 | /**
14 | * 文件ID
15 | */
16 | private String fileId;
17 |
18 | /**
19 | * 文件名
20 | */
21 | private String fileName;
22 |
23 | /**
24 | * 文件大小(字节)
25 | */
26 | private Integer fileSize;
27 |
28 | /**
29 | * 文件类型
30 | */
31 | private String mimeType;
32 |
33 | /**
34 | * 文件扩展名
35 | */
36 | private String extension;
37 |
38 | /**
39 | * 上传时间
40 | */
41 | private Long createdAt;
42 |
43 | private static final long serialVersionUID = 1L;
44 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/course/CourseFavourAddRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.course;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 课程收藏请求
9 | */
10 | @Data
11 | public class CourseFavourAddRequest implements Serializable {
12 |
13 | /**
14 | * 课程id
15 | */
16 | private Long courseId;
17 |
18 | private static final long serialVersionUID = 1L;
19 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/course/CourseQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.course;
2 |
3 | import com.ubanillx.smartclass.common.PageRequest;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 |
7 | import java.io.Serializable;
8 | import java.math.BigDecimal;
9 | import java.util.Date;
10 |
11 | /**
12 | * 课程查询请求
13 | */
14 | @EqualsAndHashCode(callSuper = true)
15 | @Data
16 | public class CourseQueryRequest extends PageRequest implements Serializable {
17 | /**
18 | * id
19 | */
20 | private Long id;
21 |
22 | /**
23 | * 课程标题
24 | */
25 | private String title;
26 |
27 | /**
28 | * 课程类型:0-公开课,1-付费课,2-会员课
29 | */
30 | private Integer courseType;
31 |
32 | /**
33 | * 难度等级:1-入门,2-初级,3-中级,4-高级,5-专家
34 | */
35 | private Integer difficulty;
36 |
37 | /**
38 | * 状态:0-未发布,1-已发布,2-已下架
39 | */
40 | private Integer status;
41 |
42 | /**
43 | * 课程分类id
44 | */
45 | private Long categoryId;
46 |
47 | /**
48 | * 讲师id
49 | */
50 | private Long teacherId;
51 |
52 | /**
53 | * 创建者id
54 | */
55 | private Long userId;
56 |
57 | /**
58 | * 标签,JSON数组格式
59 | */
60 | private String tags;
61 |
62 | /**
63 | * 最小价格
64 | */
65 | private BigDecimal minPrice;
66 |
67 | /**
68 | * 最大价格
69 | */
70 | private BigDecimal maxPrice;
71 |
72 | /**
73 | * 创建时间
74 | */
75 | private Date createTime;
76 |
77 | /**
78 | * 更新时间
79 | */
80 | private Date updateTime;
81 |
82 | private static final long serialVersionUID = 1L;
83 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dailyarticle/DailyArticleAddRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dailyarticle;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.Date;
7 |
8 | /**
9 | * 每日文章创建请求
10 | */
11 | @Data
12 | public class DailyArticleAddRequest implements Serializable {
13 |
14 | /**
15 | * 文章标题
16 | */
17 | private String title;
18 |
19 | /**
20 | * 文章内容
21 | */
22 | private String content;
23 |
24 | /**
25 | * 文章摘要
26 | */
27 | private String summary;
28 |
29 | /**
30 | * 封面图片URL
31 | */
32 | private String coverImage;
33 |
34 | /**
35 | * 作者
36 | */
37 | private String author;
38 |
39 | /**
40 | * 来源
41 | */
42 | private String source;
43 |
44 | /**
45 | * 原文链接
46 | */
47 | private String sourceUrl;
48 |
49 | /**
50 | * 文章分类
51 | */
52 | private String category;
53 |
54 | /**
55 | * 标签,JSON数组格式
56 | */
57 | private String tags;
58 |
59 | /**
60 | * 难度等级:1-简单,2-中等,3-困难
61 | */
62 | private Integer difficulty;
63 |
64 | /**
65 | * 预计阅读时间(分钟)
66 | */
67 | private Integer readTime;
68 |
69 | /**
70 | * 发布日期
71 | */
72 | private Date publishDate;
73 |
74 | private static final long serialVersionUID = 1L;
75 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dailyarticle/DailyArticleQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dailyarticle;
2 |
3 | import com.ubanillx.smartclass.common.PageRequest;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 |
7 | import java.io.Serializable;
8 | import java.util.Date;
9 |
10 | /**
11 | * 每日文章查询请求
12 | */
13 | @EqualsAndHashCode(callSuper = true)
14 | @Data
15 | public class DailyArticleQueryRequest extends PageRequest implements Serializable {
16 | /**
17 | * id
18 | */
19 | private Long id;
20 |
21 | /**
22 | * 文章标题
23 | */
24 | private String title;
25 |
26 | /**
27 | * 文章摘要(模糊查询)
28 | */
29 | private String summary;
30 |
31 | /**
32 | * 作者
33 | */
34 | private String author;
35 |
36 | /**
37 | * 来源
38 | */
39 | private String source;
40 |
41 | /**
42 | *.文章分类
43 | */
44 | private String category;
45 |
46 | /**
47 | * 标签,JSON数组格式
48 | */
49 | private String tags;
50 |
51 | /**
52 | * 难度等级:1-简单,2-中等,3-困难
53 | */
54 | private Integer difficulty;
55 |
56 | /**
57 | * 发布日期起始
58 | */
59 | private Date publishDateStart;
60 |
61 | /**
62 | * 发布日期结束
63 | */
64 | private Date publishDateEnd;
65 |
66 | /**
67 | * 创建管理员id
68 | */
69 | private Long adminId;
70 |
71 | /**
72 | * 最小阅读时间
73 | */
74 | private Integer minReadTime;
75 |
76 | /**
77 | * 最大阅读时间
78 | */
79 | private Integer maxReadTime;
80 |
81 | /**
82 | * 最小查看次数
83 | */
84 | private Integer minViewCount;
85 |
86 | /**
87 | * 创建时间
88 | */
89 | private Date createTime;
90 |
91 | private static final long serialVersionUID = 1L;
92 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dailyarticle/DailyArticleUpdateRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dailyarticle;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.Date;
7 |
8 | /**
9 | * 每日文章更新请求
10 | */
11 | @Data
12 | public class DailyArticleUpdateRequest implements Serializable {
13 | /**
14 | * id
15 | */
16 | private Long id;
17 |
18 | /**
19 | * 文章标题
20 | */
21 | private String title;
22 |
23 | /**
24 | * 文章内容
25 | */
26 | private String content;
27 |
28 | /**
29 | * 文章摘要
30 | */
31 | private String summary;
32 |
33 | /**
34 | * 封面图片URL
35 | */
36 | private String coverImage;
37 |
38 | /**
39 | * 作者
40 | */
41 | private String author;
42 |
43 | /**
44 | * 来源
45 | */
46 | private String source;
47 |
48 | /**
49 | * 原文链接
50 | */
51 | private String sourceUrl;
52 |
53 | /**
54 | * 文章分类
55 | */
56 | private String category;
57 |
58 | /**
59 | * 标签,JSON数组格式
60 | */
61 | private String tags;
62 |
63 | /**
64 | * 难度等级:1-简单,2-中等,3-困难
65 | */
66 | private Integer difficulty;
67 |
68 | /**
69 | * 预计阅读时间(分钟)
70 | */
71 | private Integer readTime;
72 |
73 | /**
74 | * 发布日期
75 | */
76 | private Date publishDate;
77 |
78 | /**
79 | * 查看次数
80 | */
81 | private Integer viewCount;
82 |
83 | /**
84 | * 点赞次数
85 | */
86 | private Integer likeCount;
87 |
88 | private static final long serialVersionUID = 1L;
89 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dailyword/DailyWordAddRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dailyword;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.Date;
7 |
8 | /**
9 | * 添加每日单词请求
10 | */
11 | @Data
12 | public class DailyWordAddRequest implements Serializable {
13 |
14 | /**
15 | * 单词
16 | */
17 | private String word;
18 |
19 | /**
20 | * 音标
21 | */
22 | private String pronunciation;
23 |
24 | /**
25 | * 发音音频URL
26 | */
27 | private String audioUrl;
28 |
29 | /**
30 | * 翻译
31 | */
32 | private String translation;
33 |
34 | /**
35 | * 例句
36 | */
37 | private String example;
38 |
39 | /**
40 | * 例句翻译
41 | */
42 | private String exampleTranslation;
43 |
44 | /**
45 | * 难度等级:1-简单,2-中等,3-困难
46 | */
47 | private Integer difficulty;
48 |
49 | /**
50 | * 单词分类
51 | */
52 | private String category;
53 |
54 | /**
55 | * 单词笔记或补充说明
56 | */
57 | private String notes;
58 |
59 | /**
60 | * 发布日期
61 | */
62 | private Date publishDate;
63 |
64 | private static final long serialVersionUID = 1L;
65 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dailyword/DailyWordQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dailyword;
2 |
3 | import com.ubanillx.smartclass.common.PageRequest;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 |
7 | import java.io.Serializable;
8 | import java.util.Date;
9 |
10 | /**
11 | * 查询每日单词请求
12 | */
13 | @EqualsAndHashCode(callSuper = true)
14 | @Data
15 | public class DailyWordQueryRequest extends PageRequest implements Serializable {
16 |
17 | /**
18 | * id
19 | */
20 | private Long id;
21 |
22 | /**
23 | * 单词
24 | */
25 | private String word;
26 |
27 | /**
28 | * 翻译
29 | */
30 | private String translation;
31 |
32 | /**
33 | * 难度等级:1-简单,2-中等,3-困难
34 | */
35 | private Integer difficulty;
36 |
37 | /**
38 | * 单词分类
39 | */
40 | private String category;
41 |
42 | /**
43 | * 发布日期开始
44 | */
45 | private Date publishDateStart;
46 |
47 | /**
48 | * 发布日期结束
49 | */
50 | private Date publishDateEnd;
51 |
52 | /**
53 | * 创建管理员id
54 | */
55 | private Long adminId;
56 |
57 | /**
58 | * 创建时间
59 | */
60 | private Date createTime;
61 |
62 | private static final long serialVersionUID = 1L;
63 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dailyword/DailyWordUpdateRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dailyword;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.Date;
7 |
8 | /**
9 | * 更新每日单词请求
10 | */
11 | @Data
12 | public class DailyWordUpdateRequest implements Serializable {
13 |
14 | /**
15 | * id
16 | */
17 | private Long id;
18 |
19 | /**
20 | * 单词
21 | */
22 | private String word;
23 |
24 | /**
25 | * 音标
26 | */
27 | private String pronunciation;
28 |
29 | /**
30 | * 发音音频URL
31 | */
32 | private String audioUrl;
33 |
34 | /**
35 | * 翻译
36 | */
37 | private String translation;
38 |
39 | /**
40 | * 例句
41 | */
42 | private String example;
43 |
44 | /**
45 | * 例句翻译
46 | */
47 | private String exampleTranslation;
48 |
49 | /**
50 | * 难度等级:1-简单,2-中等,3-困难
51 | */
52 | private Integer difficulty;
53 |
54 | /**
55 | * 单词分类
56 | */
57 | private String category;
58 |
59 | /**
60 | * 单词笔记或补充说明
61 | */
62 | private String notes;
63 |
64 | /**
65 | * 发布日期
66 | */
67 | private Date publishDate;
68 |
69 | private static final long serialVersionUID = 1L;
70 | }
--------------------------------------------------------------------------------
/src/main/java/com/ubanillx/smartclass/model/dto/dify/DifyChatRequest.java:
--------------------------------------------------------------------------------
1 | package com.ubanillx.smartclass.model.dto.dify;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * Dify聊天请求DTO
11 | */
12 | @Data
13 | public class DifyChatRequest implements Serializable {
14 |
15 | /**
16 | * 用户输入/提问内容
17 | */
18 | private String query;
19 |
20 | /**
21 | * 应用变量值
22 | */
23 | private Map inputs;
24 |
25 | /**
26 | * 响应模式:streaming(流式)或blocking(阻塞)
27 | */
28 | private String response_mode;
29 |
30 | /**
31 | * 用户标识
32 | */
33 | private String user;
34 |
35 | /**
36 | * 会话ID
37 | */
38 | private String conversation_id;
39 |
40 | /**
41 | * 自动生成标题
42 | */
43 | private Boolean auto_generate_name;
44 |
45 | /**
46 | * 文件列表,支持图片等多模态输入
47 | * 格式:[{"type":"image","transfer_method":"local_file","upload_file_id":"FILE_ID"}]
48 | */
49 | private List