From c9484ae88d16c16f425bb2477b292221837a3051 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 23 Jun 2026 15:06:49 +0800 Subject: [PATCH] feat: add teacher admin ownership fields --- .../2026-06-23-teacher-admin-permissions.sql | 5 ++ .../linkCommerce/entity/SchoolClass.java | 24 ++++++- .../entity/SchoolClassExample.java | 72 ++++++++++++++++++- .../sztzjy/linkCommerce/entity/Userinfo.java | 13 +++- .../linkCommerce/entity/UserinfoExample.java | 42 ++++++++++- .../resources/mappers/SchoolClassMapper.xml | 27 +++++-- src/main/resources/mappers/UserinfoMapper.xml | 23 ++++-- .../entity/TeacherAdminModelTest.java | 27 +++++++ 8 files changed, 219 insertions(+), 14 deletions(-) create mode 100644 docs/sql/2026-06-23-teacher-admin-permissions.sql create mode 100644 src/test/java/com/sztzjy/linkCommerce/entity/TeacherAdminModelTest.java diff --git a/docs/sql/2026-06-23-teacher-admin-permissions.sql b/docs/sql/2026-06-23-teacher-admin-permissions.sql new file mode 100644 index 0000000..29ec1a8 --- /dev/null +++ b/docs/sql/2026-06-23-teacher-admin-permissions.sql @@ -0,0 +1,5 @@ +ALTER TABLE userinfo + ADD COLUMN teacher_admin TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否管理型老师:0-否 1-是'; + +ALTER TABLE school_class + ADD COLUMN created_by VARCHAR(64) NULL COMMENT '班级创建人教师用户ID'; diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java index 9af42c3..8fb291f 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java @@ -31,6 +31,12 @@ public class SchoolClass { @ApiModelProperty(notes = "学校ID") private String schoolId; + @ApiModelProperty(notes = "创建人教师用户ID") + private String createdBy; + + @ApiModelProperty(notes = "创建人姓名 回显用") + private String createdByName; + public String getSchoolClassId() { return schoolClassId; } @@ -86,4 +92,20 @@ public class SchoolClass { public void setSchoolId(String schoolId) { this.schoolId = schoolId == null ? null : schoolId.trim(); } -} \ No newline at end of file + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy == null ? null : createdBy.trim(); + } + + public String getCreatedByName() { + return createdByName; + } + + public void setCreatedByName(String createdByName) { + this.createdByName = createdByName == null ? null : createdByName.trim(); + } +} diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java index 34edc90..6dad040 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java @@ -574,6 +574,76 @@ public class SchoolClassExample { addCriterion("school_id not between", value1, value2, "schoolId"); return (Criteria) this; } + + public Criteria andCreatedByIsNull() { + addCriterion("created_by is null"); + return (Criteria) this; + } + + public Criteria andCreatedByIsNotNull() { + addCriterion("created_by is not null"); + return (Criteria) this; + } + + public Criteria andCreatedByEqualTo(String value) { + addCriterion("created_by =", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByNotEqualTo(String value) { + addCriterion("created_by <>", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByGreaterThan(String value) { + addCriterion("created_by >", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByGreaterThanOrEqualTo(String value) { + addCriterion("created_by >=", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByLessThan(String value) { + addCriterion("created_by <", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByLessThanOrEqualTo(String value) { + addCriterion("created_by <=", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByLike(String value) { + addCriterion("created_by like", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByNotLike(String value) { + addCriterion("created_by not like", value, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByIn(List values) { + addCriterion("created_by in", values, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByNotIn(List values) { + addCriterion("created_by not in", values, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByBetween(String value1, String value2) { + addCriterion("created_by between", value1, value2, "createdBy"); + return (Criteria) this; + } + + public Criteria andCreatedByNotBetween(String value1, String value2) { + addCriterion("created_by not between", value1, value2, "createdBy"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { @@ -667,4 +737,4 @@ public class SchoolClassExample { this(condition, value, secondValue, null); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java b/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java index 70a6478..593a110 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java @@ -57,6 +57,9 @@ public class Userinfo { @ApiModelProperty(notes = "权限:1-超管 2-学校管理员 3-老师 4-学生") private Integer role; + @ApiModelProperty(notes = "是否管理型老师:false-否 true-是") + private Boolean teacherAdmin; + @ApiModelProperty(notes = "学校ID(关联学校表)") private String schoolId; @@ -218,6 +221,14 @@ public class Userinfo { this.role = role; } + public Boolean getTeacherAdmin() { + return teacherAdmin; + } + + public void setTeacherAdmin(Boolean teacherAdmin) { + this.teacherAdmin = teacherAdmin; + } + public String getSchoolId() { return schoolId; } @@ -249,4 +260,4 @@ public class Userinfo { public void setSchoolClassId(String schoolClassId) { this.schoolClassId = schoolClassId == null ? null : schoolClassId.trim(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/UserinfoExample.java b/src/main/java/com/sztzjy/linkCommerce/entity/UserinfoExample.java index 8b4a031..0a81a12 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/UserinfoExample.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/UserinfoExample.java @@ -1165,6 +1165,46 @@ public class UserinfoExample { return (Criteria) this; } + public Criteria andTeacherAdminIsNull() { + addCriterion("teacher_admin is null"); + return (Criteria) this; + } + + public Criteria andTeacherAdminIsNotNull() { + addCriterion("teacher_admin is not null"); + return (Criteria) this; + } + + public Criteria andTeacherAdminEqualTo(Boolean value) { + addCriterion("teacher_admin =", value, "teacherAdmin"); + return (Criteria) this; + } + + public Criteria andTeacherAdminNotEqualTo(Boolean value) { + addCriterion("teacher_admin <>", value, "teacherAdmin"); + return (Criteria) this; + } + + public Criteria andTeacherAdminIn(List values) { + addCriterion("teacher_admin in", values, "teacherAdmin"); + return (Criteria) this; + } + + public Criteria andTeacherAdminNotIn(List values) { + addCriterion("teacher_admin not in", values, "teacherAdmin"); + return (Criteria) this; + } + + public Criteria andTeacherAdminBetween(Boolean value1, Boolean value2) { + addCriterion("teacher_admin between", value1, value2, "teacherAdmin"); + return (Criteria) this; + } + + public Criteria andTeacherAdminNotBetween(Boolean value1, Boolean value2) { + addCriterion("teacher_admin not between", value1, value2, "teacherAdmin"); + return (Criteria) this; + } + public Criteria andSchoolIdIsNull() { addCriterion("school_id is null"); return (Criteria) this; @@ -1537,4 +1577,4 @@ public class UserinfoExample { this(condition, value, secondValue, null); } } -} \ No newline at end of file +} diff --git a/src/main/resources/mappers/SchoolClassMapper.xml b/src/main/resources/mappers/SchoolClassMapper.xml index 7454253..48c6907 100644 --- a/src/main/resources/mappers/SchoolClassMapper.xml +++ b/src/main/resources/mappers/SchoolClassMapper.xml @@ -9,6 +9,7 @@ + @@ -69,7 +70,7 @@ - school_class_id, school_major_id, class_name, class_sn, status, create_time, school_id + school_class_id, school_major_id, class_name, class_sn, status, create_time, school_id, created_by @@ -188,6 +195,9 @@ school_id = #{record.schoolId,jdbcType=VARCHAR}, + + created_by = #{record.createdBy,jdbcType=VARCHAR}, + @@ -201,7 +211,8 @@ class_sn = #{record.classSn,jdbcType=VARCHAR}, status = #{record.status,jdbcType=BIT}, create_time = #{record.createTime,jdbcType=TIMESTAMP}, - school_id = #{record.schoolId,jdbcType=VARCHAR} + school_id = #{record.schoolId,jdbcType=VARCHAR}, + created_by = #{record.createdBy,jdbcType=VARCHAR} @@ -227,6 +238,9 @@ school_id = #{schoolId,jdbcType=VARCHAR}, + + created_by = #{createdBy,jdbcType=VARCHAR}, + where school_class_id = #{schoolClassId,jdbcType=VARCHAR} @@ -237,7 +251,8 @@ class_sn = #{classSn,jdbcType=VARCHAR}, status = #{status,jdbcType=BIT}, create_time = #{createTime,jdbcType=TIMESTAMP}, - school_id = #{schoolId,jdbcType=VARCHAR} + school_id = #{schoolId,jdbcType=VARCHAR}, + created_by = #{createdBy,jdbcType=VARCHAR} where school_class_id = #{schoolClassId,jdbcType=VARCHAR} - \ No newline at end of file + diff --git a/src/main/resources/mappers/UserinfoMapper.xml b/src/main/resources/mappers/UserinfoMapper.xml index 2975396..2cb4e6e 100644 --- a/src/main/resources/mappers/UserinfoMapper.xml +++ b/src/main/resources/mappers/UserinfoMapper.xml @@ -18,6 +18,7 @@ + @@ -83,7 +84,7 @@ user_id, name, username, password, sex, phone, email, headImg, disabledStatus, wxcode, - login_count, create_time, last_login_time, study_time, code_from, role, school_id, + login_count, create_time, last_login_time, study_time, code_from, role, teacher_admin, school_id, school_faculty_id, school_major_id, school_class_id