Skip to content

Commit abd7528

Browse files
committed
sync course
1 parent ef0dc36 commit abd7528

3 files changed

Lines changed: 25 additions & 10 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ object BotEventRouteService : AbstractPluginManagedService() {
148148
}.finish {
149149
when(it["syncType"].cast<Int>()) {
150150
1 -> RequestHandlerService.sendRequest(Request.InheritTimetableFromLastSemester(sender.id))
151-
2 -> RequestHandlerService.sendRequest(Request.SyncSchoolTimetableRequest(sender.id, forceUpdate = true))
151+
2 -> RequestHandlerService.sendRequest(Request.SyncSchoolTimetableRequest(sender.id, forceUpdate = true, alsoSyncCourses = true))
152152
}
153153
}
154154

@@ -210,7 +210,7 @@ object BotEventRouteService : AbstractPluginManagedService() {
210210
else -> {}
211211
} }
212212
}
213-
finding(Regex("^(怎么用|帮助)$")) {
213+
(case("怎么用") or case("帮助")) {
214214
subject.sendMessage("""
215215
欢迎使用 超级课表课程提醒QQ机器人。
216216
它可以在你下一节课上课前提醒你这节课的信息,避免你错过课程。

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
124124
crs[semester] = TimeProviderService.currentSemester
125125
} } }
126126
info("Sync user ${request.qq}'s courses successfully.")
127+
ScheduleListenerService.restartUserNotification(request.qq)
127128
BotEventRouteService.sendMessageNonBlock(request.qq,"""
128129
课程同步成功!
129130
你将在每节课上课前 ${PluginData.advancedTipOffset[request.qq] ?: PluginConfig.advancedTipTime} 分钟收到课程提醒。
@@ -219,7 +220,15 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
219220
BotEventRouteService.sendMessageNonBlock(request.qq, "已修正学校时间表,将影响学校的其他用户。")
220221
}
221222
User.find { Users.schoolId eq user.first().schoolId }.forEach {
222-
if(it.qq != request.qq) BotEventRouteService.sendMessageNonBlock(it.qq, "您所在的学校时间表已经被同校用户 ${request.qq} 同步/修正,请输入\"查看时间表\"查看。\n若修改有误或恶意修改,请联系对方。", 60000L)
223+
if(request.alsoSyncCourses) {
224+
if(it.qq != request.qq) BotEventRouteService.sendMessageNonBlock(it.qq,
225+
"您所在的学校 ${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期的时间表已经被同校用户 ${request.qq} 从服务器同步。\n请输入\"查看时间表\"查看。\n正在自动为你同步当前学期课程...",
226+
60000L)
227+
sendRequest(Request.SyncCourseRequest(it.qq))
228+
} else {
229+
if(it.qq != request.qq) BotEventRouteService.sendMessageNonBlock(it.qq, "您所在的学校时间表已经被同校用户 ${request.qq} 同步/修正,请输入\"查看时间表\"查看。\n若修改有误或恶意修改,请联系对方。", 60000L)
230+
}
231+
223232
}
224233
} else if(schoolTimeTable.empty()) {
225234
//首次从服务器同步时间表
@@ -259,13 +268,16 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
259268
timeStampWhenAdd = TimeProviderService.currentTimeStamp.toString()
260269
weekPeriodWhenAdd = 1
261270
}
262-
BotEventRouteService.sendMessageNonBlock(request.qq, "已将 ${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期的课表设置为沿用上个学期/学年,输入\"查看时间表\"查看。")
271+
BotEventRouteService.sendMessageNonBlock(request.qq, "已将 ${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期的课表设置为沿用上个学期/学年,输入\"查看时间表\"查看。\n正在自动为你同步当前学期课程...")
263272
TimeProviderService.immediateUpdateSchoolWeekPeriod()
264273
ScheduleListenerService.onChangeSchoolTimetable(user.first().schoolId)
265274
User.find { Users.schoolId eq user.first().schoolId }.forEach {
266-
if(it.qq != request.qq) BotEventRouteService.sendMessageNonBlock(it.qq,
267-
"您所在的学校 ${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期的时间表已经被同校用户 ${request.qq} 设置为与上学期/学年相同,请输入\"查看时间表\"查看。\n若当前学期和上学期的时间表有出入,请发送\"修改时间表\"手动修改。",
268-
60000L)
275+
if(it.qq != request.qq) {
276+
BotEventRouteService.sendMessageNonBlock(it.qq,
277+
"您所在的学校 ${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期的时间表已经被同校用户 ${request.qq} 设置为与上学期/学年相同。\n请输入\"查看时间表\"查看。\n若当前学期和上学期的时间表有出入,请发送\"修改时间表\"手动修改。\n正在自动为你同步当前学期课程...",
278+
60000L)
279+
}
280+
sendRequest(Request.SyncCourseRequest(it.qq))
269281
}
270282
} else BotEventRouteService.sendMessageNonBlock(request.qq, "未找到上个学期/学年的时间表,请尝试从服务器同步。")
271283
} else {
@@ -375,9 +387,10 @@ sealed class Request {
375387
class SyncSchoolTimetableRequest(
376388
val qq: Long,
377389
val newTimetable: List<Pair<String, String>>? = null,
378-
val forceUpdate: Boolean = false
390+
val forceUpdate: Boolean = false,
391+
val alsoSyncCourses: Boolean = false,
379392
) : Request() {
380-
override fun toString() = "SyncSchoolTimetableRequest(qq=$qq,newTimetable=${newTimetable?.joinToString(",") { "[${it.first}->${it.second}]" } ?: "<syncFromServer>"},forceUpdate=$forceUpdate)"
393+
override fun toString() = "SyncSchoolTimetableRequest(qq=$qq,newTimetable=${newTimetable?.joinToString(",") { "[${it.first}->${it.second}]" } ?: "<syncFromServer>"},forceUpdate=$forceUpdate,alsoSyncCourses=$alsoSyncCourses)"
381394
}
382395
/**
383396
* SyncSchoolWeekPeriod:同步这个学校当前学期的周数,

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ object ScheduleListenerService : AbstractPluginManagedService(Dispatchers.IO) {
9292
val courses = Courses(qq)
9393
val coursesList = mutableListOf<SingleCourse>()
9494
courses.select {
95-
(courses.beginYear eq TimeProviderService.currentSemesterBeginYear) and (courses.semester eq TimeProviderService.currentSemester) and (courses.whichDayOfWeek eq TimeProviderService.currentTimeStamp.dayOfWeek.value)
95+
(courses.beginYear eq TimeProviderService.currentSemesterBeginYear) and
96+
(courses.semester eq TimeProviderService.currentSemester) and
97+
(courses.whichDayOfWeek eq TimeProviderService.currentTimeStamp.dayOfWeek.value)
9698
}.forEach {
9799
it[courses.weekPeriod].split(" ").forEach { week ->
98100
if(week.toInt() == TimeProviderService.currentWeekPeriod[belongingSchool]) {

0 commit comments

Comments
 (0)