diff --git a/src/main/java/com/yunhai/homework/controller/api/StudentHomeworkController.java b/src/main/java/com/yunhai/homework/controller/api/StudentHomeworkController.java
index 56a37b0..66d42b1 100644
--- a/src/main/java/com/yunhai/homework/controller/api/StudentHomeworkController.java
+++ b/src/main/java/com/yunhai/homework/controller/api/StudentHomeworkController.java
@@ -25,7 +25,7 @@ import java.util.Map;
/**
* 课堂作业 V2 学生端接口(PRD §18 路径一字对齐:/student/homeworks…)。
*
- * 身份:当前登录用户ID ↔ class_student 名册;仅可见本人班级作业,禁 IDOR。
+ * 身份:当前登录用户ID ↔ bschclass 学生名册(实时匹配);仅可见本人班级作业,禁 IDOR。
*/
@RestController
@RequestMapping(value = Config.API_PATH + "/student/homeworks")
diff --git a/src/main/java/com/yunhai/homework/controller/api/TeacherHomeworkV2Controller.java b/src/main/java/com/yunhai/homework/controller/api/TeacherHomeworkV2Controller.java
index 5335083..f949049 100644
--- a/src/main/java/com/yunhai/homework/controller/api/TeacherHomeworkV2Controller.java
+++ b/src/main/java/com/yunhai/homework/controller/api/TeacherHomeworkV2Controller.java
@@ -17,7 +17,6 @@ import com.yunhai.homework.model.v2.SubmissionVersionVo;
import com.yunhai.homework.model.v2.SubjectDto;
import com.yunhai.homework.model.v2.TeacherHomeworkQuery;
import com.yunhai.homework.model.v2.TeachingClassVo;
-import com.yunhai.homework.service.impl.ClassStudentService;
import com.yunhai.homework.service.impl.TeacherHomeworkV2Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
@@ -51,9 +50,6 @@ public class TeacherHomeworkV2Controller {
@Autowired
private TeacherHomeworkV2Service teacherHomeworkV2Service;
- @Autowired
- private ClassStudentService classStudentService;
-
// ============================ 页 1:发布作业 ============================
/** 创建作业(落草稿) */
@@ -198,22 +194,15 @@ public class TeacherHomeworkV2Controller {
/** 按学科筛选我的任教班级(subId=学科编码;班级名称取学校班级列表) */
@GetMapping("/subjects/classes")
- public List teachingClasses(@RequestParam("subId") String subId) {
- return teacherHomeworkV2Service.teachingClasses(subId);
+ public List teachingClasses(@RequestParam("subject") String subject) {
+ return teacherHomeworkV2Service.teachingClasses(subject);
}
// ============================ 辅助:班级树 / 名册同步 ============================
- /** 年级→班级树(发布选班;名册快照聚合) */
+ /** 年级→班级树(发布选班;subId 传学科编码时仅返回该学科任教班级) */
@GetMapping("/classes")
- public List classTree() {
- return teacherHomeworkV2Service.classTree();
- }
-
- /** 手动触发名册同步(bschclass 接口就绪前为空操作) */
- @PostMapping("/classes/sync")
- public Map syncClasses() {
- int synced = classStudentService.syncAll();
- return java.util.Collections.singletonMap("synced", synced);
+ public List classTree(@RequestParam(value = "subject", required = false) String subject) {
+ return teacherHomeworkV2Service.classTree(subject);
}
}
diff --git a/src/main/java/com/yunhai/homework/entity/ClassStudent.java b/src/main/java/com/yunhai/homework/entity/ClassStudent.java
deleted file mode 100644
index 793e295..0000000
--- a/src/main/java/com/yunhai/homework/entity/ClassStudent.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.yunhai.homework.entity;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
-import java.time.LocalDateTime;
-
-/**
- * 班级学生名册快照(PRD class_student)。
- *
- * 由同步任务从 bschclass 拉取(接口未就绪前用种子数据),每日全量刷 + 手动触发;
- * 同步不物理删,转出置 status=0。学生身份口径:用户中心数字ID(UserContext.getUserId())
- * ↔ student_id(SchStudent.UserStuSerID),名册仅存学生ID + 姓名快照。
- */
-@NoArgsConstructor
-@Data
-@Entity
-@Table(name = "class_student",
- uniqueConstraints = @UniqueConstraint(name = "uk_class_student", columnNames = {"class_id", "student_id"}))
-@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
-public class ClassStudent extends BaseEntity {
-
- /** 学校ID */
- @Column(name = "school_id", nullable = false)
- private Integer schoolId;
-
- /** 班级ID */
- @Column(name = "class_id", nullable = false, length = 64)
- private String classId;
-
- /** 班级名快照 */
- @Column(name = "class_name", length = 50)
- private String className;
-
- /** 年级名快照 */
- @Column(name = "grade_name", length = 50)
- private String gradeName;
-
- /** 学生ID(用户中心数字ID,即 SchStudent.UserStuSerID) */
- @Column(name = "student_id", nullable = false)
- private Integer studentId;
-
- /** 学生姓名 */
- @Column(name = "student_name", nullable = false, length = 50)
- private String studentName;
-
- /** 在班状态:1 在班 / 0 已转出退课 */
- @Column(name = "status", nullable = false)
- private Integer status = 1;
-
- /** 离班时间 */
- @Column(name = "leave_at")
- private LocalDateTime leaveAt;
-}
diff --git a/src/main/java/com/yunhai/homework/entity/HomeworkClass.java b/src/main/java/com/yunhai/homework/entity/HomeworkClass.java
index c01cefb..857f91a 100644
--- a/src/main/java/com/yunhai/homework/entity/HomeworkClass.java
+++ b/src/main/java/com/yunhai/homework/entity/HomeworkClass.java
@@ -26,8 +26,8 @@ public class HomeworkClass extends BaseEntity {
private Integer homeworkId;
/** 班级ID */
- @Column(name = "class_id", nullable = false, length = 64)
- private String classId;
+ @Column(name = "class_id", nullable = false)
+ private Integer classId;
/** 班级名快照 */
@Column(name = "class_name", length = 50)
diff --git a/src/main/java/com/yunhai/homework/entity/HomeworkReadRecord.java b/src/main/java/com/yunhai/homework/entity/HomeworkReadRecord.java
index 8179e79..3843c1b 100644
--- a/src/main/java/com/yunhai/homework/entity/HomeworkReadRecord.java
+++ b/src/main/java/com/yunhai/homework/entity/HomeworkReadRecord.java
@@ -37,8 +37,8 @@ public class HomeworkReadRecord extends BaseEntity {
private String studentName;
/** 班级ID */
- @Column(name = "class_id", length = 64)
- private String classId;
+ @Column(name = "class_id")
+ private Integer classId;
/** 阅读状态:0 UNREAD / 1 READ */
@Column(name = "is_read", nullable = false)
diff --git a/src/main/java/com/yunhai/homework/entity/HomeworkSubmission.java b/src/main/java/com/yunhai/homework/entity/HomeworkSubmission.java
index 4626044..cfd95bb 100644
--- a/src/main/java/com/yunhai/homework/entity/HomeworkSubmission.java
+++ b/src/main/java/com/yunhai/homework/entity/HomeworkSubmission.java
@@ -41,8 +41,8 @@ public class HomeworkSubmission extends BaseEntity {
private String studentName;
/** 班级ID */
- @Column(name = "class_id", nullable = false, length = 64)
- private String classId;
+ @Column(name = "class_id", nullable = false)
+ private Integer classId;
/** 班级名快照 */
@Column(name = "class_name", nullable = false, length = 50)
diff --git a/src/main/java/com/yunhai/homework/entity/SchClassTeach.java b/src/main/java/com/yunhai/homework/entity/SchClassTeach.java
deleted file mode 100644
index d1a091f..0000000
--- a/src/main/java/com/yunhai/homework/entity/SchClassTeach.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.yunhai.homework.entity;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
-
-/**
- * 班级任教关系快照(bschclass sch_class_teach 本地镜像,PRD 口径同 class_student)。
- *
- * 由同步任务从 bschclass 拉取(接口未就绪前用种子数据);bschclass 任教接口
- * 不可用时,任教学科链路降级读本表。教师口径:用户中心数字ID(UserContext.getUserId());
- * class_id 与 class_student.class_id 同一取值域。
- */
-@NoArgsConstructor
-@Data
-@Entity
-@Table(name = "sch_class_teach",
- uniqueConstraints = @UniqueConstraint(name = "uk_sch_class_teach", columnNames = {"school_id", "class_id", "tea_id", "sub_id"}))
-@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
-public class SchClassTeach extends BaseEntity {
-
- /** 学校ID */
- @Column(name = "school_id", nullable = false)
- private Integer schoolId;
-
- /** 班级ID(与 class_student.class_id 同一取值域) */
- @Column(name = "class_id", nullable = false, length = 64)
- private String classId;
-
- /** 教师ID(用户中心数字ID) */
- @Column(name = "tea_id", nullable = false)
- private Integer teaId;
-
- /** 学科编码(bschclass SubID;本地无字典时编码即展示名) */
- @Column(name = "sub_id", nullable = false, length = 64)
- private String subId;
-
- /** 有效状态:1 有效 / 0 失效 */
- @Column(name = "status", nullable = false)
- private Integer status = 1;
-}
diff --git a/src/main/java/com/yunhai/homework/job/HomeworkScheduledJobs.java b/src/main/java/com/yunhai/homework/job/HomeworkScheduledJobs.java
index 5377254..cdb013c 100644
--- a/src/main/java/com/yunhai/homework/job/HomeworkScheduledJobs.java
+++ b/src/main/java/com/yunhai/homework/job/HomeworkScheduledJobs.java
@@ -3,9 +3,7 @@ package com.yunhai.homework.job;
import com.yunhai.homework.entity.Homework;
import com.yunhai.homework.enums.HwStatusEnum;
import com.yunhai.homework.enums.NotificationTypeEnum;
-import com.yunhai.homework.repository.HomeworkClassRepository;
import com.yunhai.homework.repository.HomeworkRepository;
-import com.yunhai.homework.service.impl.ClassStudentService;
import com.yunhai.homework.service.impl.HomeworkStateService;
import com.yunhai.homework.service.impl.NotificationService;
import com.yunhai.homework.service.impl.TeacherHomeworkV2Service;
@@ -33,9 +31,6 @@ public class HomeworkScheduledJobs {
@Autowired
private HomeworkRepository homeworkRepository;
- @Autowired
- private HomeworkClassRepository homeworkClassRepository;
-
@Autowired
private HomeworkStateService stateService;
@@ -45,9 +40,6 @@ public class HomeworkScheduledJobs {
@Autowired
private TeacherHomeworkV2Service teacherHomeworkV2Service;
- @Autowired
- private ClassStudentService classStudentService;
-
/**
* 定时发布:每分钟扫描到点的 DRAFT_SCHEDULED 作业 → PUBLISHED + 作业发布通知;
* 失败回退 DRAFT_UNPUBLISHED 并站内通知教师。
@@ -146,16 +138,4 @@ public class HomeworkScheduledJobs {
NotificationService.deadlineReminderContent(homework) + "(剩余不足 " + slotDesc + ")");
log.info("[deadlineReminder] homeworkId={}, slot={}, sent={}", homework.getId(), slot, sent);
}
-
- /**
- * 名册同步:每日 02:00 全量刷新 class_student(bschclass 接口就绪前仅日志)。
- */
- @Scheduled(cron = "${homework.sync.class-data-cron:0 0 2 * * ?}")
- public void classDataSync() {
- try {
- classStudentService.syncAll();
- } catch (Exception e) {
- log.error("[classDataSync] 名册同步失败", e);
- }
- }
}
diff --git a/src/main/java/com/yunhai/homework/model/v2/ClassItem.java b/src/main/java/com/yunhai/homework/model/v2/ClassItem.java
index 459ea80..da3c3a0 100644
--- a/src/main/java/com/yunhai/homework/model/v2/ClassItem.java
+++ b/src/main/java/com/yunhai/homework/model/v2/ClassItem.java
@@ -12,7 +12,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class ClassItem {
- private String classId;
+ private Integer classId;
private String className;
}
diff --git a/src/main/java/com/yunhai/homework/model/v2/ClassTreeNode.java b/src/main/java/com/yunhai/homework/model/v2/ClassTreeNode.java
index c0f400b..4ea7896 100644
--- a/src/main/java/com/yunhai/homework/model/v2/ClassTreeNode.java
+++ b/src/main/java/com/yunhai/homework/model/v2/ClassTreeNode.java
@@ -7,12 +7,12 @@ import java.util.List;
/**
* 年级→班级树(发布作业选班 + 应交名单基数来源)。
- * 叶子节点 id = 班级 id(class_student 快照聚合)。
+ * 叶子节点 id = 班级 id(bschclass 班级/年级实时组装)。
*/
@Data
public class ClassTreeNode {
- /** 年级节点为 gradeName,班级叶子为 classId */
+ /** 年级节点为年级ID(无年级归属时为「未分组」文案),班级叶子为 classId */
private String id;
/** 展示名 */
diff --git a/src/main/java/com/yunhai/homework/model/v2/HomeworkStatsVo.java b/src/main/java/com/yunhai/homework/model/v2/HomeworkStatsVo.java
index 1ac46f8..1cf2c88 100644
--- a/src/main/java/com/yunhai/homework/model/v2/HomeworkStatsVo.java
+++ b/src/main/java/com/yunhai/homework/model/v2/HomeworkStatsVo.java
@@ -27,7 +27,7 @@ public class HomeworkStatsVo {
@Data
public static class ByClass {
- private String classId;
+ private Integer classId;
private String className;
diff --git a/src/main/java/com/yunhai/homework/model/v2/HomeworkV2Request.java b/src/main/java/com/yunhai/homework/model/v2/HomeworkV2Request.java
index 9464910..671ebd7 100644
--- a/src/main/java/com/yunhai/homework/model/v2/HomeworkV2Request.java
+++ b/src/main/java/com/yunhai/homework/model/v2/HomeworkV2Request.java
@@ -26,7 +26,7 @@ public class HomeworkV2Request {
private String description;
/** 参与班级 id 列表 */
- private List classIds;
+ private List classIds;
/** 附件列表 */
private List attachments;
diff --git a/src/main/java/com/yunhai/homework/model/v2/StudentMatrixQuery.java b/src/main/java/com/yunhai/homework/model/v2/StudentMatrixQuery.java
index 49e3144..fcb531a 100644
--- a/src/main/java/com/yunhai/homework/model/v2/StudentMatrixQuery.java
+++ b/src/main/java/com/yunhai/homework/model/v2/StudentMatrixQuery.java
@@ -12,7 +12,7 @@ import lombok.EqualsAndHashCode;
public class StudentMatrixQuery extends BasePageQuery {
/** 班级筛选(空 = 全部参与班级) */
- private String classId;
+ private Integer classId;
/** 提交状态筛选:NOT_SUBMITTED/SUBMITTED/LATE_SUBMITTED/RETURNED/REVIEWED */
private String submitStatus;
diff --git a/src/main/java/com/yunhai/homework/model/v2/StudentMatrixVo.java b/src/main/java/com/yunhai/homework/model/v2/StudentMatrixVo.java
index 6257285..b80bb2c 100644
--- a/src/main/java/com/yunhai/homework/model/v2/StudentMatrixVo.java
+++ b/src/main/java/com/yunhai/homework/model/v2/StudentMatrixVo.java
@@ -21,7 +21,7 @@ public class StudentMatrixVo {
/** 姓名 */
private String studentName;
- private String classId;
+ private Integer classId;
private String className;
diff --git a/src/main/java/com/yunhai/homework/model/v2/TeachingClassVo.java b/src/main/java/com/yunhai/homework/model/v2/TeachingClassVo.java
index d9fd64e..b675060 100644
--- a/src/main/java/com/yunhai/homework/model/v2/TeachingClassVo.java
+++ b/src/main/java/com/yunhai/homework/model/v2/TeachingClassVo.java
@@ -9,7 +9,7 @@ import lombok.Data;
public class TeachingClassVo {
/** 班级业务ID(bschclass sch_class.class_id) */
- private String classId;
+ private Integer classId;
/** 班级名称(学校班级列表映射;缺失时回退为班级ID) */
private String className;
diff --git a/src/main/java/com/yunhai/homework/repository/ClassStudentRepository.java b/src/main/java/com/yunhai/homework/repository/ClassStudentRepository.java
deleted file mode 100644
index 0581e29..0000000
--- a/src/main/java/com/yunhai/homework/repository/ClassStudentRepository.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.yunhai.homework.repository;
-
-import com.yunhai.homework.entity.ClassStudent;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-
-import java.util.List;
-
-/**
- * 班级学生名册仓储。
- */
-public interface ClassStudentRepository extends JpaRepository {
-
- /** 按学生ID(用户中心数字ID)反查学生身份(学生端接口入口) */
- List findByStudentIdAndStatus(Integer studentId, Integer status);
-
- /** 班级在班学生 */
- List findByClassIdAndStatus(String classId, Integer status);
-
- /** 指定班级集合的全部在班学生(应交名单) */
- List findByClassIdInAndStatus(List classIds, Integer status);
-
- /** 指定学校的全部名册(同步任务全量刷新用) */
- List findBySchoolId(Integer schoolId);
-
- /** 年级→班级树:按学校去重班级(class_student 快照聚合),列序:classId, className, gradeName */
- @Query("select distinct c.classId, c.className, c.gradeName from ClassStudent c " +
- "where c.schoolId = :schoolId and c.status = 1")
- List