diff --git a/unilife-frontend/src/views/admin/AdminDashboard.vue b/unilife-frontend/src/views/admin/AdminDashboard.vue
index 60d4f9d..ec5c41c 100644
--- a/unilife-frontend/src/views/admin/AdminDashboard.vue
+++ b/unilife-frontend/src/views/admin/AdminDashboard.vue
@@ -755,12 +755,19 @@
学期:
-
+ >
+
+
+
+
+
+
+
@@ -1451,11 +1458,22 @@ const loadSchedules = async () => {
const response = await adminApi.getUserSchedule(selectedUser.value.id, selectedSemester.value)
if (response.code === 200) {
userSchedule.value = response.data
- // 提取所有课程到列表视图
- allCourses.value = []
- Object.values(userSchedule.value.schedule).forEach((courses: any) => {
- allCourses.value.push(...courses)
- })
+ // 从schedule对象中提取所有课程到平铺数组
+ const courses = []
+ if (userSchedule.value.schedule) {
+ for (let day = 1; day <= 7; day++) {
+ const dayCourses = userSchedule.value.schedule[day] || []
+ dayCourses.forEach(course => {
+ courses.push({
+ ...course,
+ dayOfWeek: day
+ })
+ })
+ }
+ }
+ allCourses.value = courses
+ // 为了兼容性,也在userSchedule中添加courses字段
+ userSchedule.value.courses = courses
}
} catch (error) {
ElMessage.error('加载用户课表失败')
@@ -2098,19 +2116,28 @@ const searchScheduleUsers = async (query: string) => {
}
const getCoursesForTimeSlot = (dayOfWeek: number, timeSlot: any) => {
- if (!userSchedule.value?.schedule?.[dayOfWeek]) {
+ if (!userSchedule.value?.courses) {
return []
}
- return userSchedule.value.schedule[dayOfWeek].filter((course: any) => {
- // 简单的时间匹配逻辑,实际应该更精确
- const courseStartTime = course.startTime
- const courseEndTime = course.endTime
- const slotStartTime = timeSlot.time.split('-')[0]
- const slotEndTime = timeSlot.time.split('-')[1]
+ return userSchedule.value.courses.filter((course: any) => {
+ // 检查星期几是否匹配
+ if (course.dayOfWeek !== dayOfWeek) {
+ return false
+ }
+
+ // 检查时间是否重叠
+ const courseStartTime = course.startTime // 格式: "08:00:00"
+ const courseEndTime = course.endTime // 格式: "09:40:00"
+ const slotStartTime = timeSlot.time.split('-')[0] // 格式: "08:00"
+ const slotEndTime = timeSlot.time.split('-')[1] // 格式: "09:50"
+
+ // 转换为可比较的格式(去掉秒部分)
+ const courseStart = courseStartTime.substring(0, 5) // "08:00"
+ const courseEnd = courseEndTime.substring(0, 5) // "09:40"
- // 这里应该有更精确的时间重叠判断
- return courseStartTime <= slotEndTime && courseEndTime >= slotStartTime
+ // 检查时间重叠:课程开始时间 < 时间段结束时间 && 课程结束时间 > 时间段开始时间
+ return courseStart < slotEndTime && courseEnd > slotStartTime
})
}
diff --git a/unilife-server/src/main/resources/db/rebuild-database.sql b/unilife-server/src/main/resources/db/rebuild-database.sql
index e8b86d9..2f64e9e 100644
--- a/unilife-server/src/main/resources/db/rebuild-database.sql
+++ b/unilife-server/src/main/resources/db/rebuild-database.sql
@@ -238,7 +238,7 @@ INSERT INTO `categories` (`name`, `description`, `icon`, `sort`, `status`) VALUE
-- 插入武汉大学学生用户数据
INSERT INTO `users` (`username`, `email`, `password`, `nickname`, `bio`, `gender`, `student_id`, `department`, `major`, `grade`, `points`, `role`, `status`, `is_verified`, `created_at`) VALUES
-- 文理学部学生
-('czq2024', 'czq@whu.edu.cn', '123456', '珞珈数学狗', '数学与统计学院2022级数学类,热爱数学建模,ACM银牌选手', 1, '2022301140001', '数学与统计学院', '数学类', '2022级', 150, 0, 1, 1, '2024-09-01 09:00:00'),
+('czq2025', 'czq@whu.edu.cn', '123456', '珞珈数学狗', '数学与统计学院2022级数学类,热爱数学建模,ACM银牌选手', 1, '2022301140001', '数学与统计学院', '数学类', '2022级', 150, 0, 1, 1, '2024-09-01 09:00:00'),
('lihua_cs', 'lihua@whu.edu.cn', '123456', '代码诗人', '计算机学院2021级软件工程,全栈开发爱好者,开源项目贡献者', 1, '2021301120001', '计算机学院', '软件工程', '2021级', 230, 0, 1, 1, '2024-09-01 10:00:00'),
('wangming_law', 'wangming@whu.edu.cn', '123456', '法学小白', '法学院2023级法学专业,模拟法庭常客,梦想成为大律师', 1, '2023301080001', '法学院', '法学', '2023级', 80, 0, 1, 1, '2024-09-01 11:00:00'),
('zhangwei_chem', 'zhangwei@whu.edu.cn', '123456', '化学实验员', '化学与分子科学学院2022级化学专业,实验室常驻,合成达人', 1, '2022301130001', '化学与分子科学学院', '化学', '2022级', 120, 0, 1, 1, '2024-09-01 12:00:00'),
@@ -389,14 +389,7 @@ INSERT INTO `comment_likes` (`user_id`, `comment_id`, `created_at`) VALUES
(7, 9, '2024-12-21 18:00:00'),
(8, 9, '2024-12-21 18:15:00');
--- 插入学习资源数据
-INSERT INTO `resources` (`user_id`, `title`, `description`, `file_url`, `file_size`, `file_type`, `category_id`, `download_count`, `like_count`, `status`) VALUES
-(2, '数据结构课程设计报告', '包含完整的数据结构课程设计实验报告,涵盖栈、队列、树、图等数据结构的实现和应用。', '/files/data-structure-report.pdf', 2048576, 'application/pdf', 1, 15, 0, 1),
-(3, '算法导论学习笔记', '详细的算法导论学习笔记,包含排序算法、图算法、动态规划等重要算法的分析和实现。', '/files/algorithm-notes.docx', 1572864, 'application/msword', 1, 25, 0, 1),
-(2, '高等数学期末复习资料', '高等数学期末考试复习资料合集,包含重要公式、定理证明和典型习题解答。', '/files/calculus-review.pdf', 3145728, 'application/pdf', 1, 32, 0, 1),
-(6, '宏观经济学PPT课件', '经济学专业课件,包含货币政策、财政政策等核心内容。', '/files/macro-economics.pptx', 5242880, 'application/vnd.ms-powerpoint', 1, 20, 0, 1),
-(14, '校园生活指南', '新生校园生活指南,包含宿舍管理、食堂介绍、图书馆使用等实用信息。', '/files/campus-guide.pdf', 1048576, 'application/pdf', 2, 45, 0, 1),
-(3, '计算机网络实验代码', '计算机网络课程实验代码合集,包含Socket编程、HTTP协议实现等。', '/files/network-lab-code.zip', 4194304, 'application/zip', 5, 18, 0, 1);
+
-- 插入课程数据
INSERT INTO `courses` (`user_id`, `name`, `teacher`, `location`, `day_of_week`, `start_time`, `end_time`, `start_week`, `end_week`, `semester`, `color`, `status`) VALUES
@@ -420,7 +413,59 @@ INSERT INTO `courses` (`user_id`, `name`, `teacher`, `location`, `day_of_week`,
-- 经济学专业学生(ID=7 liuxin_econ)的课程
(7, '宏观经济学', '吴教授', '经管大楼B201', 1, '08:00:00', '09:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
-(7, '计量经济学', '郑老师', '经管大楼机房', 2, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#67C23A', 1);
+(7, '计量经济学', '郑老师', '经管大楼机房', 2, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 水利工程学生(ID=8 chenfei_water)的课程
+(8, '流体力学', '李教授', '水利学院大楼', 1, '14:00:00', '15:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(8, '水工建筑物', '王老师', '水利学院实验室', 3, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 电气工程学生(ID=9 sunhao_power)的课程
+(9, '电路原理', '张教授', '电气学院大楼', 2, '08:00:00', '09:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(9, '电力系统分析', '刘老师', '电气学院机房', 4, '15:50:00', '17:30:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 土木工程学生(ID=10 wujing_civil)的课程
+(10, '结构力学', '陈教授', '土建学院大楼', 1, '15:50:00', '17:30:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(10, '材料力学', '杨老师', '土建学院实验室', 3, '08:00:00', '09:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 遥感专业学生(ID=11 liqiang_remote)的课程
+(11, '遥感原理', '周教授', '遥感学院大楼', 2, '14:00:00', '15:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(11, '数字图像处理', '吴老师', '遥感学院机房', 5, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 测绘专业学生(ID=12 zhaoli_survey)的课程
+(12, '测量学', '马教授', '测绘学院大楼', 1, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(12, 'GPS原理', '林老师', '测绘学院实验室', 4, '08:00:00', '09:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 临床医学学生(ID=13 huangyan_med)的课程
+(13, '内科学', '赵教授', '人民医院', 1, '08:00:00', '10:00:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(13, '病理学', '钱老师', '医学院大楼', 3, '14:00:00', '16:00:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 口腔医学学生(ID=14 wangpeng_dental)的课程
+(14, '口腔解剖学', '孙教授', '口腔医院', 2, '09:00:00', '11:00:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(14, '口腔修复学', '李老师', '口腔医院实验室', 4, '14:00:00', '16:00:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 文学专业学生(ID=15 luxiaoya_chinese)的课程
+(15, '中国古代文学', '王教授', '文学院大楼', 1, '14:00:00', '15:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(15, '古代汉语', '张老师', '文学院研讨室', 3, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 历史专业学生(ID=16 zhoujie_history)的课程
+(16, '中国古代史', '陈教授', '历史学院大楼', 2, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(16, '史学理论', '刘老师', '历史学院研讨室', 5, '14:00:00', '15:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+
+-- 新闻专业学生(ID=17 tanglei_news)的课程
+(17, '新闻写作', '王教授', '新传学院301', 2, '10:00:00', '11:40:00', 1, 16, '2024-2025-2', '#409EFF', 1),
+(17, '传播学概论', '李教授', '新传学院201', 4, '14:00:00', '15:40:00', 1, 16, '2024-2025-2', '#67C23A', 1),
+(17, '媒体伦理', '张教授', '新传学院205', 5, '16:00:00', '17:40:00', 1, 16, '2024-2025-2', '#E6A23C', 1),
+
+-- 添加不同学期的课程数据
+-- 2024-2025-1学期的课程
+(3, '线性代数', '张教授', '数学学院楼201', 1, '08:00:00', '09:40:00', 1, 16, '2024-2025-1', '#409EFF', 1),
+(4, '操作系统', '赵教授', '信息学部计算机楼', 2, '10:00:00', '11:40:00', 1, 16, '2024-2025-1', '#409EFF', 1),
+(17, '新闻学概论', '王教授', '新传学院301', 1, '10:00:00', '11:40:00', 1, 16, '2024-2025-1', '#409EFF', 1),
+
+-- 2023-2024-2学期的课程
+(3, '高等数学II', '李教授', '数学学院楼301', 3, '14:00:00', '15:40:00', 1, 16, '2023-2024-2', '#67C23A', 1),
+(4, '数据库原理', '钱老师', '信息学部B楼302', 4, '14:00:00', '15:40:00', 1, 16, '2023-2024-2', '#67C23A', 1),
+(17, '中外新闻史', '李教授', '新传学院201', 3, '14:00:00', '15:40:00', 1, 16, '2023-2024-2', '#67C23A', 1);
-- 插入日程数据
INSERT INTO `schedules` (`user_id`, `title`, `description`, `start_time`, `end_time`, `location`, `is_all_day`, `reminder`, `color`, `status`) VALUES