Skip to content

Commit 0c1d050

Browse files
committed
give suggestion if fetch empty course list from school
1 parent aab2f8f commit 0c1d050

2 files changed

Lines changed: 32 additions & 21 deletions

File tree

src/main/kotlin/stageguard/sctimetable/api/edu_system/super/CourseReceiptDTO.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ data class ErrorCourseReceiptDTO(
2828
@Serializable
2929
data class __InternalGenericCourseData(
3030
val endSchoolYear: String,
31-
val lessonList: List<__InternalLesson>,
31+
val lessonList: List<__InternalLesson> = listOf(),
3232
val maxCount: Int,
3333
val semester: String,
3434
val startSchoolYear: String

src/main/kotlin/stageguard/sctimetable/service/RequestHandlerService.kt

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -111,26 +111,37 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
111111
if(!user.empty()) {
112112
SuperCourseApiService.getCourses(request.cookieData).also { coursesDTO -> when(coursesDTO) {
113113
is Either.Left -> {
114-
Database.query { coursesDTO.value.data.lessonList.forEach { e -> courseTable.insert { crs ->
115-
crs[courseId] = e.courseId
116-
crs[courseName] = e.name
117-
crs[teacherName] = e.teacher
118-
crs[locale] = e.locale
119-
crs[whichDayOfWeek] = e.day
120-
crs[sectionStart] = e.sectionstart
121-
crs[sectionEnd] = e.sectionend
122-
crs[weekPeriod] = e.smartPeriod
123-
crs[beginYear] = TimeProviderService.currentSemesterBeginYear
124-
crs[semester] = TimeProviderService.currentSemester
125-
} } }
126-
info("Sync user ${request.qq}'s courses successfully.")
127-
ScheduleListenerService.restartUserNotification(request.qq)
128-
BotEventRouteService.sendMessageNonBlock(request.qq,"""
129-
课程同步成功!
130-
你将在每节课上课前 ${PluginData.advancedTipOffset[request.qq] ?: PluginConfig.advancedTipTime} 分钟收到课程提醒。
131-
可以发送"今日课程"查看今天的课程,发送"查看时间表"查看本校的时间表,
132-
或者发送"修改提前提醒时间"来修改课程提醒时间。
133-
""".trimIndent())
114+
coursesDTO.value.data.lessonList.run {
115+
if(isNotEmpty()) {
116+
Database.query { forEach { e -> courseTable.insert { crs ->
117+
crs[courseId] = e.courseId
118+
crs[courseName] = e.name
119+
crs[teacherName] = e.teacher
120+
crs[locale] = e.locale
121+
crs[whichDayOfWeek] = e.day
122+
crs[sectionStart] = e.sectionstart
123+
crs[sectionEnd] = e.sectionend
124+
crs[weekPeriod] = e.smartPeriod
125+
crs[beginYear] = TimeProviderService.currentSemesterBeginYear
126+
crs[semester] = TimeProviderService.currentSemester
127+
} } }
128+
info("Sync user ${request.qq}'s courses successfully.")
129+
ScheduleListenerService.restartUserNotification(request.qq)
130+
BotEventRouteService.sendMessageNonBlock(request.qq,"""
131+
课程同步成功!
132+
你将在每节课上课前 ${PluginData.advancedTipOffset[request.qq] ?: PluginConfig.advancedTipTime} 分钟收到课程提醒。
133+
可以发送"今日课程"查看今天的课程,发送"查看时间表"查看本校的时间表,
134+
或者发送"修改提前提醒时间"来修改课程提醒时间。
135+
""".trimIndent())
136+
} else {
137+
warning("Failed to sync user ${request.qq}'s courses, reason: get empty list from server.")
138+
BotEventRouteService.sendMessageNonBlock(request.qq,"""
139+
无法同步课程,从服务器中获取了空的课程列表。
140+
请确保 ${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期的课表已添加进超级课表。
141+
查看超级课表 app,若无课表,请先在超级课表 app 中同步教务系统的课表。。
142+
""".trimIndent())
143+
}
144+
}
134145
}
135146
is Either.Right -> {
136147
error("Failed to sync user ${request.qq}'s courses, reason: ${coursesDTO.value.message}.")

0 commit comments

Comments
 (0)