Skip to content

Commit e3c635f

Browse files
committed
set default timetable, close #8, may fix #9
1 parent 29b112d commit e3c635f

1 file changed

Lines changed: 33 additions & 28 deletions

File tree

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

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -163,39 +163,44 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
163163
Database.suspendQuery<Unit> {
164164
val user = User.find { Users.qq eq request.qq }
165165
suspend fun syncFromServer(createNew : Boolean) {
166-
SuperCourseApiService.loginViaPassword(user.first().account, AESUtils.decrypt(user.first().password, SuperCourseApiService.pkey)).also { loginDTO ->
167-
when(loginDTO) {
168-
is Either.Left -> {
169-
val scheduledTimetable = loginDTO.value.data.student.attachmentBO.myTermList.first { termList ->
170-
termList.beginYear == TimeProviderService.currentSemesterBeginYear && termList.term == TimeProviderService.currentSemester
171-
//这超级课表是什么傻逼,妈的还带空字符串
172-
}.courseTimeList.courseTimeBO.filter { it.beginTimeStr.isNotEmpty() }.joinToString("|") { time ->
173-
"${time.beginTimeStr.substring(0..1)}:${time.beginTimeStr.substring(2..3)}-${time.endTimeStr.substring(0..1)}:${time.endTimeStr.substring(2..3)}"
174-
}
175-
if(createNew) {
176-
SchoolTimetable.new {
177-
schoolId = loginDTO.value.data.student.schoolId
178-
schoolName = loginDTO.value.data.student.schoolName
179-
beginYear = TimeProviderService.currentSemesterBeginYear
180-
semester = TimeProviderService.currentSemester
181-
scheduledTimeList = scheduledTimetable
182-
timeStampWhenAdd = TimeProviderService.currentTimeStamp.toString()
183-
weekPeriodWhenAdd = 1
166+
when(val loginDTO = SuperCourseApiService.loginViaPassword(user.first().account, AESUtils.decrypt(user.first().password, SuperCourseApiService.pkey))) {
167+
is Either.Left -> {
168+
val scheduledTimetable = loginDTO.value.data.student.attachmentBO.myTermList.first { termList ->
169+
termList.beginYear == TimeProviderService.currentSemesterBeginYear && termList.term == TimeProviderService.currentSemester
170+
//这超级课表是什么傻逼,妈的还带空字符串
171+
}.courseTimeList.courseTimeBO.run {
172+
if(isNotEmpty()) {
173+
filter { it.beginTimeStr.isNotEmpty() }.joinToString("|") { time ->
174+
"${time.beginTimeStr.substring(0..1)}:${time.beginTimeStr.substring(2..3)}-${time.endTimeStr.substring(0..1)}:${time.endTimeStr.substring(2..3)}"
184175
}
185176
} else {
186-
SchoolTimetable.find {
187-
(SchoolTimetables.schoolId eq user.first().schoolId) and
188-
(SchoolTimetables.beginYear eq TimeProviderService.currentSemesterBeginYear) and
189-
(SchoolTimetables.semester eq TimeProviderService.currentSemester)
190-
}.first().scheduledTimeList = scheduledTimetable
177+
//empty default
178+
"08:10-08:55|09:05-09:50|10:10-10:55|11:05-11:50|13:40-14:25|14:35-15:20|15:30-16:15|16:25-17:10|18:05-18:50|19:00-19:45|19:55-20:40|20:50-21:35"
191179
}
192-
TimeProviderService.immediateUpdateSchoolWeekPeriod()
193180
}
194-
//用户记录在User的密码有误或者其他问题(网络问题等)
195-
is Either.Right -> {
196-
error("Failed to sync user ${request.qq}'s school timetable, reason: ${loginDTO.value.data.errorStr}")
197-
BotEventRouteService.sendMessageNonBlock(request.qq,"无法从服务器同步学校时间表信息,可能是因为你已经修改了超级课表的密码。\n具体原因:${loginDTO.value.data.errorStr}")
181+
if(createNew) {
182+
SchoolTimetable.new {
183+
schoolId = loginDTO.value.data.student.schoolId
184+
schoolName = loginDTO.value.data.student.schoolName
185+
beginYear = TimeProviderService.currentSemesterBeginYear
186+
semester = TimeProviderService.currentSemester
187+
scheduledTimeList = scheduledTimetable
188+
timeStampWhenAdd = TimeProviderService.currentTimeStamp.toString()
189+
weekPeriodWhenAdd = 1
190+
}
191+
} else {
192+
SchoolTimetable.find {
193+
(SchoolTimetables.schoolId eq user.first().schoolId) and
194+
(SchoolTimetables.beginYear eq TimeProviderService.currentSemesterBeginYear) and
195+
(SchoolTimetables.semester eq TimeProviderService.currentSemester)
196+
}.first().scheduledTimeList = scheduledTimetable
198197
}
198+
TimeProviderService.immediateUpdateSchoolWeekPeriod()
199+
}
200+
//用户记录在User的密码有误或者其他问题(网络问题等)
201+
is Either.Right -> {
202+
error("Failed to sync user ${request.qq}'s school timetable, reason: ${loginDTO.value.data.errorStr}")
203+
BotEventRouteService.sendMessageNonBlock(request.qq,"无法从服务器同步学校时间表信息,可能是因为你已经修改了超级课表的密码。\n具体原因:${loginDTO.value.data.errorStr}")
199204
}
200205
}
201206
}

0 commit comments

Comments
 (0)