课程管理模块开发

完成课程管理功能开发,耗时 1 天,累计耗时 2 天,剩余 8 天。实现内容包括:
设计课程实体Course和员工课程关联实体EmployeeCourse,建立多对多关系。
开发管理员端课程 CRUD 功能,支持课程添加、删除和列表展示。
实现员工端选课逻辑,通过EmployeeCourse表记录选课状态,支持选课和退选操作。
遇到的困难
多对多关联映射:EmployeeCourse表初始设计时未正确配置@ManyToOne关系,导致保存选课记录时外键为空。通过添加@JoinColumn明确外键列名(如employee_id和course_id)解决。
前端内容展示:课程内容较长时,页面布局混乱。通过添加 “展开 / 收起” 按钮(toggleContent函数)和 CSS 文本截断处理,优化内容预览效果。
今天的任务(第 3 天)
开发员工管理模块,实现员工列表查看和删除功能,重点校验删除时是否存在选课记录。
设计员工与课程的关联查询,在管理端展示员工选课情况。
核心代码示例
课程实体类(Course.java)
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String teacher;
@Column(columnDefinition = "TEXT")
private String content;

// 构造方法、getter/setter省略

}

员工课程关联实体(EmployeeCourse.java)
@Entity
@Table(name = "employee_course")
public class EmployeeCourse {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@ManyToOne
@JoinColumn(name = "employee_id", nullable = false)
private User employee;

@ManyToOne
@JoinColumn(name = "course_id", nullable = false)
private Course course;

private boolean active = true;
private LocalDateTime selectedAt = LocalDateTime.now();

// 构造方法、getter/setter省略

}

选课控制器(EmployeeController.java)
@PostMapping("/select-course")
public String selectCourse(@RequestParam Integer courseId, HttpSession session) {
User employee = getCurrentEmployee(session);
employeeService.selectCourse(employee.getId(), courseId);
return "redirect:/employee/course";
}

posted @ 2025-04-22 21:38  霸王鸡  阅读(5)  评论(0)    收藏  举报