创建项目包结构 + 编写实体类(严格对应数据库字段,不简化需求)
- 新建包结构(在 src/main/java/com/demo 下,严格按顺序建)
plaintext
com.demo
├── entity // 实体类(对应7张数据库表)
├── mapper // MyBatis接口
├── service // 业务层(安全登录+培训模块逻辑)
├── controller // 接口层(登录、课程、题库、考试)
├── util // 工具类(密码校验、SM2加密、锁定规则)
└── DemoApplication.java // 启动类 - 逐个创建实体类(复制粘贴即可)
① SysUser.java(用户表,实现全部安全规则)
java
运行
package com.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class SysUser {
private Long id;
private String username;
private String password;
private String phone;
private String roleType; // 四种管理员角色
private Integer status; // 1正常 0停用
private Date passwordUpdateTime; // 密码修改时间,判断90天过期
private Integer loginFailCount; // 24h登录失败次数
private Date loginLockTime; // 锁定截止时间
private Date lastLoginTime; // 最后登录时间
private Date createTime;
}
② SysLog.java(审计日志)
java
运行
package com.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class SysLog {
private Long id;
private String username;
private String content;
private Date createTime;
}
③ Course.java(培训模块 - 课程)
java
运行
package com.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class Course {
private Long id;
private String name;
private String teacher;
private Integer duration;
private String intro;
private Date createTime;
}
④ Question.java(培训模块 - 题库)
java
运行
package com.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class Question {
private Long id;
private String title;
private String type; // 单选/多选/判断
private String optionA;
private String optionB;
private String optionC;
private String optionD;
private String answer;
private Date createTime;
}
⑤ Paper.java(培训模块 - 试卷)
java
运行
package com.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class Paper {
private Long id;
private String name;
private Integer duration;
private Integer totalScore;
private Date createTime;
}
⑥ PaperQuestion.java(试卷 - 题目关联)
java
运行
package com.demo.entity;
import lombok.Data;
@Data
public class PaperQuestion {
private Long id;
private Long paperId;
private Long questionId;
}
⑦ ExamRecord.java(培训模块 - 考试成绩)
java
运行
package com.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class ExamRecord {
private Long id;
private Long userId;
private Long paperId;
private Integer score;
private String status;
private Date createTime;
}
