From e22784fe2ce4e623de8e5e4afd4175e48c99b8d2 Mon Sep 17 00:00:00 2001 From: wangzhiwei Date: Mon, 25 May 2026 09:51:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(notification):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5=E6=97=B6id=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=B2=A1=E6=9C=89=E9=BB=98=E8=AE=A4=E5=80=BC=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .trae/documents/notification_plan.md | 6 +-- README.md | 2 +- db/init_role_permission_data.sql | 28 +++++----- db/sys_role_permission_data_init.sql | 28 +++++----- db/sys_role_permission_data_init_merged.sql | 52 +++++++++---------- .../sxwz/aspect/EduPermissionAspect.java | 2 +- .../sxwz/controller/SysUserController.java | 16 ++++-- .../art/kexue/sxwz/entity/EduCollege.java | 3 ++ .../java/art/kexue/sxwz/entity/SysUser.java | 8 ++- .../kexue/sxwz/entity/dto/EduCollegeDto.java | 3 ++ .../kexue/sxwz/entity/dto/UserDetailDto.java | 25 +++++++++ .../sxwz/entity/request/CreateUserDto.java | 2 +- .../sxwz/entity/request/SysUserUpdateDto.java | 2 +- .../kexue/sxwz/mapper/EduCollegeMapper.java | 2 + .../art/kexue/sxwz/mapper/SysUserMapper.java | 8 +++ .../kexue/sxwz/service/SysUserService.java | 9 ++++ .../service/impl/EduCollegeServiceImpl.java | 13 +++-- .../sxwz/service/impl/SysUserServiceImpl.java | 42 ++++++++++++--- .../resources/mapper/EduCollegeMapper.xml | 19 +++++-- .../mapper/SysNotificationMapper.xml | 2 +- src/main/resources/mapper/SysUserMapper.xml | 50 ++++++++++++++++++ 21 files changed, 239 insertions(+), 83 deletions(-) create mode 100644 src/main/java/art/kexue/sxwz/entity/dto/UserDetailDto.java diff --git a/.trae/documents/notification_plan.md b/.trae/documents/notification_plan.md index 4788256..1b32ed8 100644 --- a/.trae/documents/notification_plan.md +++ b/.trae/documents/notification_plan.md @@ -15,7 +15,7 @@ |------|-----------|------| | 主要管理员(SUPER) | 次级管理员、学校管理员、学院管理员、老师、学生 | 可多选 | | 次级管理员(SUPER1) | 学校管理员、学院管理员、老师、学生 | 可多选 | -| 学校管理员(SCOOL_ADMIN) | 学院管理员、老师、学生 | 可多选 | +| 学校管理员(SCHOOL_ADMIN) | 学院管理员、老师、学生 | 可多选 | | 学院管理员(COLLEGE_ADMIN) | 老师、学生 | 可多选 | | 老师(TEACHER) | 指定课程的学生 | 课程可多选 | | 学生(STUDENT) | 仅收件箱 | 无发送权限 | @@ -158,7 +158,7 @@ List getUsersByRoleTypes(Long schoolId, List roleTypes); |----------|----------|---------------| | SUPER | 1 | [1, 2, 3, 4, 5] | | SUPER1 | 1 | [2, 3, 4, 5] | -| SCOOL_ADMIN | 2 | [3, 4, 5] | +| SCHOOL_ADMIN | 2 | [3, 4, 5] | | COLLEGE_ADMIN | 3 | [4, 5] | | TEACHER | 4 | [5] (仅限自己课程的学生) | | STUDENT | 5 | [] (无发送权限) | @@ -187,7 +187,7 @@ List getUsersByRoleTypes(Long schoolId, List roleTypes); | 权限码 | 权限名称 | 适用角色 | |--------|----------|----------| -| `notification:send:users` | 发送通知给用户 | SUPER, SUPER1, SCOOL_ADMIN, COLLEGE_ADMIN | +| `notification:send:users` | 发送通知给用户 | SUPER, SUPER1, SCHOOL_ADMIN, COLLEGE_ADMIN | | `notification:send:course` | 发送课程通知 | TEACHER | --- diff --git a/README.md b/README.md index 80fffa6..90b728d 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ mvn spring-boot:run |------|----------|-----------| | 主要管理员(SUPER) | 1 | 次级管理员、学校管理员、学院管理员、老师、学生 | | 次级管理员(SUPER1) | 1 | 学校管理员、学院管理员、老师、学生 | -| 学校管理员(SCOOL_ADMIN) | 2 | 学院管理员、老师、学生 | +| 学校管理员(SCHOOL_ADMIN) | 2 | 学院管理员、老师、学生 | | 学院管理员(COLLEGE_ADMIN) | 3 | 老师、学生 | | 老师(TEACHER) | 4 | 指定课程的学生 | | 学生(STUDENT) | 5 | 仅收件箱 | diff --git a/db/init_role_permission_data.sql b/db/init_role_permission_data.sql index a46e1a2..dd9941a 100644 --- a/db/init_role_permission_data.sql +++ b/db/init_role_permission_data.sql @@ -27,8 +27,8 @@ INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `per -- 学校管理员 - 系统管理权限 INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `permission_code`, `create_time`, `update_time`) VALUES -(14, 2, 'SCOOL_ADMIN', 'system:user:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(15, 2, 'SCOOL_ADMIN', 'system:role:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'); +(14, 2, 'SCHOOL_ADMIN', 'system:user:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(15, 2, 'SCHOOL_ADMIN', 'system:role:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'); -- ======================================== -- 用户管理权限 (user) @@ -49,16 +49,16 @@ INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `per -- 学校管理员 - 用户管理权限 INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `permission_code`, `create_time`, `update_time`) VALUES -(26, 2, 'SCOOL_ADMIN', 'user:student:add', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(27, 2, 'SCOOL_ADMIN', 'user:student:edit', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(28, 2, 'SCOOL_ADMIN', 'user:student:delete', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(29, 2, 'SCOOL_ADMIN', 'user:student:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(30, 2, 'SCOOL_ADMIN', 'user:teacher:add', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(31, 2, 'SCOOL_ADMIN', 'user:teacher:edit', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(32, 2, 'SCOOL_ADMIN', 'user:teacher:delete', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(33, 2, 'SCOOL_ADMIN', 'user:teacher:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(34, 2, 'SCOOL_ADMIN', 'user:teacher:bind', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(35, 2, 'SCOOL_ADMIN', 'user:student:bind', '2026-04-30 18:00:00', '2026-04-30 18:00:00'); +(26, 2, 'SCHOOL_ADMIN', 'user:student:add', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(27, 2, 'SCHOOL_ADMIN', 'user:student:edit', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(28, 2, 'SCHOOL_ADMIN', 'user:student:delete', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(29, 2, 'SCHOOL_ADMIN', 'user:student:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(30, 2, 'SCHOOL_ADMIN', 'user:teacher:add', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(31, 2, 'SCHOOL_ADMIN', 'user:teacher:edit', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(32, 2, 'SCHOOL_ADMIN', 'user:teacher:delete', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(33, 2, 'SCHOOL_ADMIN', 'user:teacher:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(34, 2, 'SCHOOL_ADMIN', 'user:teacher:bind', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(35, 2, 'SCHOOL_ADMIN', 'user:student:bind', '2026-04-30 18:00:00', '2026-04-30 18:00:00'); -- 学院管理员 - 用户管理权限 INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `permission_code`, `create_time`, `update_time`) VALUES @@ -82,8 +82,8 @@ INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `per -- 学校管理员 - 课程管理权限 INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `permission_code`, `create_time`, `update_time`) VALUES -(46, 2, 'SCOOL_ADMIN', 'course:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), -(47, 2, 'SCOOL_ADMIN', 'course:student:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'); +(46, 2, 'SCHOOL_ADMIN', 'course:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'), +(47, 2, 'SCHOOL_ADMIN', 'course:student:query', '2026-04-30 18:00:00', '2026-04-30 18:00:00'); -- 学院管理员 - 课程管理权限 INSERT INTO `sys_role_permission` (`permission_id`, `role_id`, `role_code`, `permission_code`, `create_time`, `update_time`) VALUES diff --git a/db/sys_role_permission_data_init.sql b/db/sys_role_permission_data_init.sql index a98a7a8..532bec5 100644 --- a/db/sys_role_permission_data_init.sql +++ b/db/sys_role_permission_data_init.sql @@ -11,8 +11,8 @@ INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `r INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (11, 1, 'SUPER', '系统管理', 'system:menu:delete', '菜单删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (12, 1, 'SUPER', '系统管理', 'system:dict:manage', '字典管理', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (13, 1, 'SUPER', '系统管理', 'system:log:query', '日志查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (14, 2, 'SCOOL_ADMIN', '系统管理', 'system:user:query', '用户查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (15, 2, 'SCOOL_ADMIN', '系统管理', 'system:role:query', '角色查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (14, 2, 'SCHOOL_ADMIN', '系统管理', 'system:user:query', '用户查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (15, 2, 'SCHOOL_ADMIN', '系统管理', 'system:role:query', '角色查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (16, 1, 'SUPER', '用户管理', 'user:student:add', '学生新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (17, 1, 'SUPER', '用户管理', 'user:student:edit', '学生修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (18, 1, 'SUPER', '用户管理', 'user:student:delete', '学生删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); @@ -23,16 +23,16 @@ INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `r INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (23, 1, 'SUPER', '用户管理', 'user:teacher:query', '教师查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (24, 1, 'SUPER', '用户管理', 'user:teacher:bind', '教师绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (25, 1, 'SUPER', '用户管理', 'user:student:bind', '学生绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (26, 2, 'SCOOL_ADMIN', '用户管理', 'user:student:add', '学生新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (27, 2, 'SCOOL_ADMIN', '用户管理', 'user:student:edit', '学生修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (28, 2, 'SCOOL_ADMIN', '用户管理', 'user:student:delete', '学生删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (29, 2, 'SCOOL_ADMIN', '用户管理', 'user:student:query', '学生查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (30, 2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:add', '教师新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (31, 2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:edit', '教师修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (32, 2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:delete', '教师删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (33, 2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:query', '教师查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (34, 2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:bind', '教师绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (35, 2, 'SCOOL_ADMIN', '用户管理', 'user:student:bind', '学生绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (26, 2, 'SCHOOL_ADMIN', '用户管理', 'user:student:add', '学生新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (27, 2, 'SCHOOL_ADMIN', '用户管理', 'user:student:edit', '学生修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (28, 2, 'SCHOOL_ADMIN', '用户管理', 'user:student:delete', '学生删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (29, 2, 'SCHOOL_ADMIN', '用户管理', 'user:student:query', '学生查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (30, 2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:add', '教师新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (31, 2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:edit', '教师修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (32, 2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:delete', '教师删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (33, 2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:query', '教师查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (34, 2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:bind', '教师绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (35, 2, 'SCHOOL_ADMIN', '用户管理', 'user:student:bind', '学生绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (36, 3, 'COLLEGE_ADMIN', '用户管理', 'user:student:query', '学生查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (37, 3, 'COLLEGE_ADMIN', '用户管理', 'user:teacher:query', '教师查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (38, 1, 'SUPER', '课程管理', 'course:add', '课程新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); @@ -43,8 +43,8 @@ INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `r INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (43, 1, 'SUPER', '课程管理', 'course:student:remove', '移除学生', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (44, 1, 'SUPER', '课程管理', 'course:student:query', '选课查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (45, 1, 'SUPER', '课程管理', 'course:score:export', '成绩导出', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (46, 2, 'SCOOL_ADMIN', '课程管理', 'course:query', '课程查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); -INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (47, 2, 'SCOOL_ADMIN', '课程管理', 'course:student:query', '选课查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (46, 2, 'SCHOOL_ADMIN', '课程管理', 'course:query', '课程查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); +INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (47, 2, 'SCHOOL_ADMIN', '课程管理', 'course:student:query', '选课查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (48, 3, 'COLLEGE_ADMIN', '课程管理', 'course:query', '课程查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (49, 3, 'COLLEGE_ADMIN', '课程管理', 'course:student:query', '选课查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); INSERT INTO `kexue_server`.`sys_role_permission` (`permission_id`, `role_id`, `role_code`, `model_name`, `permission_code`, `permission_name`, `create_time`, `update_time`) VALUES (50, 4, 'TEACHER', '课程管理', 'course:add', '课程新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'); diff --git a/db/sys_role_permission_data_init_merged.sql b/db/sys_role_permission_data_init_merged.sql index ad28d2b..2331db5 100644 --- a/db/sys_role_permission_data_init_merged.sql +++ b/db/sys_role_permission_data_init_merged.sql @@ -95,32 +95,32 @@ INSERT INTO sys_role_permission (role_id, role_code, model_name, permission_code (1, 'SUPER', '支付管理', 'payment:recharge', '充值功能', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -- SCHOOL_ADMIN 角色权限 -(2, 'SCOOL_ADMIN', '系统管理', 'system:user:query', '用户查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '系统管理', 'system:role:query', '角色查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:student:add', '学生新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:student:edit', '学生修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:student:delete', '学生删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:student:query', '学生查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:add', '教师新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:edit', '教师修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:delete', '教师删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:query', '教师查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:teacher:bind', '教师绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '用户管理', 'user:student:bind', '学生绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '课程管理', 'course:query', '课程查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '课程管理', 'course:student:query', '选课查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '课程管理', 'course:add', '课程新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '课程管理', 'course:edit', '课程修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '课程管理', 'course:delete', '课程删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '考勤管理', 'attendance:add', '考勤新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '考勤管理', 'attendance:edit', '考勤修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '考勤管理', 'attendance:query', '考勤查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '作业管理', 'homework:query', '作业查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '考试管理', 'exam:query', '考试查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '优秀作品', 'excellent:query', '作品查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '通知管理', 'notification:send', '发送通知', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '通知管理', 'notification:query', '通知查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -(2, 'SCOOL_ADMIN', '通知管理', 'notification:read', '标记已读', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '系统管理', 'system:user:query', '用户查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '系统管理', 'system:role:query', '角色查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:student:add', '学生新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:student:edit', '学生修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:student:delete', '学生删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:student:query', '学生查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:add', '教师新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:edit', '教师修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:delete', '教师删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:query', '教师查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:teacher:bind', '教师绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '用户管理', 'user:student:bind', '学生绑定', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '课程管理', 'course:query', '课程查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '课程管理', 'course:student:query', '选课查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '课程管理', 'course:add', '课程新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '课程管理', 'course:edit', '课程修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '课程管理', 'course:delete', '课程删除', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '考勤管理', 'attendance:add', '考勤新增', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '考勤管理', 'attendance:edit', '考勤修改', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '考勤管理', 'attendance:query', '考勤查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '作业管理', 'homework:query', '作业查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '考试管理', 'exam:query', '考试查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '优秀作品', 'excellent:query', '作品查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '通知管理', 'notification:send', '发送通知', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '通知管理', 'notification:query', '通知查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), +(2, 'SCHOOL_ADMIN', '通知管理', 'notification:read', '标记已读', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), -- COLLEGE_ADMIN 角色权限 (3, 'COLLEGE_ADMIN', '用户管理', 'user:student:query', '学生查询', '2026-04-30 18:00:00', '2026-05-08 16:33:19'), diff --git a/src/main/java/art/kexue/sxwz/aspect/EduPermissionAspect.java b/src/main/java/art/kexue/sxwz/aspect/EduPermissionAspect.java index cfbab5d..ffdfecf 100644 --- a/src/main/java/art/kexue/sxwz/aspect/EduPermissionAspect.java +++ b/src/main/java/art/kexue/sxwz/aspect/EduPermissionAspect.java @@ -124,7 +124,7 @@ public class EduPermissionAspect { return "update"; // 修改:update方法返回update而非edit } else if (methodName.startsWith("updateStatus")) { return "updateStatus"; // 新增:状态变更方法 - } else if (methodName.startsWith("edit")) { + } else if (methodName.startsWith("edit") || methodName.startsWith("update")) { return "edit"; } else if (methodName.startsWith("delete") || methodName.startsWith("remove")) { return "delete"; diff --git a/src/main/java/art/kexue/sxwz/controller/SysUserController.java b/src/main/java/art/kexue/sxwz/controller/SysUserController.java index f41ed3a..adc7606 100644 --- a/src/main/java/art/kexue/sxwz/controller/SysUserController.java +++ b/src/main/java/art/kexue/sxwz/controller/SysUserController.java @@ -7,6 +7,7 @@ import art.kexue.sxwz.annotation.RequireAuth; import art.kexue.sxwz.annotation.RequireRole; import art.kexue.sxwz.entity.SysUser; import art.kexue.sxwz.entity.dto.SysUserDto; +import art.kexue.sxwz.entity.dto.UserDetailDto; import art.kexue.sxwz.entity.request.*; import art.kexue.sxwz.exception.BizException; import art.kexue.sxwz.service.SysUserService; @@ -69,6 +70,13 @@ public class SysUserController { public CommonResult queryById(@PathVariable("id") Long id) { return CommonResult.success(sysUserService.queryById(id)); } + + @GetMapping("/getUserDetail/{userId}") + @Operation(summary = "查询用户详细信息", description = "根据用户ID查询用户所有信息,包含sysUser、student、teacher、account") + @RequireRole({"SUPER","SUPER1","SCHOOL_ADMIN","COLLEGE_ADMIN"}) + public CommonResult getUserDetail(@PathVariable("userId") Long userId) { + return CommonResult.success(sysUserService.getUserDetailById(userId)); + } /** * 新增数据 @@ -291,21 +299,21 @@ public class SysUserController { @PostMapping("/createSchoolAdmin") @Operation(summary = "创建学校管理员", description = "创建学校管理员用户,只有公司管理员(SUPER)能操作") - @RequireRole("SUPER") + @RequireRole({"SUPER","SUPER1"}) public CommonResult createSchoolAdmin(@RequestBody CreateUserDto createUserDto) { return CommonResult.success(sysUserService.createSchoolAdmin(createUserDto)); } @PostMapping("/createCollegeAdmin") - @Operation(summary = "创建学院管理员", description = "创建学院管理员用户,只有学校管理员(SCOOL_ADMIN)能操作") - @RequireRole("SCOOL_ADMIN") + @Operation(summary = "创建学院管理员", description = "创建学院管理员用户,只有学校管理员(SCHOOL_ADMIN)能操作") + @RequireRole("SCHOOL_ADMIN") public CommonResult createCollegeAdmin(@RequestBody CreateUserDto createUserDto) { return CommonResult.success(sysUserService.createCollegeAdmin(createUserDto)); } @PostMapping("/createTeacher") @Operation(summary = "创建教师用户", description = "创建教师用户,只有学院管理员(COLLEGE_ADMIN)能操作") - @RequireRole("COLLEGE_ADMIN") + @RequireRole({"COLLEGE_ADMIN","SCHOOL_ADMIN"}) public CommonResult createTeacher(@RequestBody CreateUserDto createUserDto) { return CommonResult.success(sysUserService.createTeacher(createUserDto)); } diff --git a/src/main/java/art/kexue/sxwz/entity/EduCollege.java b/src/main/java/art/kexue/sxwz/entity/EduCollege.java index 8cba949..47e179a 100644 --- a/src/main/java/art/kexue/sxwz/entity/EduCollege.java +++ b/src/main/java/art/kexue/sxwz/entity/EduCollege.java @@ -16,6 +16,9 @@ public class EduCollege { @Schema(description = "学院名称") private String name; + @Schema(description = "学校ID(关联edu_school.id)") + private Long schoolId; + @Schema(description = "管理员用户ID(关联sys_user.id)") private Long adminUserId; diff --git a/src/main/java/art/kexue/sxwz/entity/SysUser.java b/src/main/java/art/kexue/sxwz/entity/SysUser.java index 92328ff..bac8f63 100644 --- a/src/main/java/art/kexue/sxwz/entity/SysUser.java +++ b/src/main/java/art/kexue/sxwz/entity/SysUser.java @@ -91,6 +91,12 @@ public class SysUser extends BaseEntity implements Serializable { @Schema(description ="教师扩展信息") private EduTeacher eduTeacher; + + @Schema(description ="账户信息") + private Account account; + + @Schema(description ="学校信息") + private EduSchool eduSchool; -} + } diff --git a/src/main/java/art/kexue/sxwz/entity/dto/EduCollegeDto.java b/src/main/java/art/kexue/sxwz/entity/dto/EduCollegeDto.java index 1f9ef28..c767fed 100644 --- a/src/main/java/art/kexue/sxwz/entity/dto/EduCollegeDto.java +++ b/src/main/java/art/kexue/sxwz/entity/dto/EduCollegeDto.java @@ -15,6 +15,9 @@ public class EduCollegeDto extends BaseQueryDto { @Schema(description = "学院名称") private String name; + @Schema(description = "学校ID") + private Long schoolId; + @Schema(description = "状态:0-停用,1-正常") private Integer status; } \ No newline at end of file diff --git a/src/main/java/art/kexue/sxwz/entity/dto/UserDetailDto.java b/src/main/java/art/kexue/sxwz/entity/dto/UserDetailDto.java new file mode 100644 index 0000000..d54d276 --- /dev/null +++ b/src/main/java/art/kexue/sxwz/entity/dto/UserDetailDto.java @@ -0,0 +1,25 @@ +package art.kexue.sxwz.entity.dto; + +import art.kexue.sxwz.entity.Account; +import art.kexue.sxwz.entity.EduStudent; +import art.kexue.sxwz.entity.EduTeacher; +import art.kexue.sxwz.entity.SysUser; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(name = "UserDetailDto", description = "用户详细信息(包含sysUser、student、teacher、account)") +public class UserDetailDto { + + @Schema(description = "用户基础信息") + private SysUser sysUser; + + @Schema(description = "学生信息(如果是学生)") + private EduStudent student; + + @Schema(description = "教师信息(如果是教师)") + private EduTeacher teacher; + + @Schema(description = "账户信息") + private Account account; +} \ No newline at end of file diff --git a/src/main/java/art/kexue/sxwz/entity/request/CreateUserDto.java b/src/main/java/art/kexue/sxwz/entity/request/CreateUserDto.java index 3735692..fb78bc2 100644 --- a/src/main/java/art/kexue/sxwz/entity/request/CreateUserDto.java +++ b/src/main/java/art/kexue/sxwz/entity/request/CreateUserDto.java @@ -14,7 +14,7 @@ public class CreateUserDto implements Serializable { @Schema(description = "用户名") private String userName; - @Schema(description = "密码") + @Schema(description = "密码,密码传输需要使用md5加密一次") private String password; @Schema(description = "邮箱") diff --git a/src/main/java/art/kexue/sxwz/entity/request/SysUserUpdateDto.java b/src/main/java/art/kexue/sxwz/entity/request/SysUserUpdateDto.java index ea0e24c..4c6dd22 100644 --- a/src/main/java/art/kexue/sxwz/entity/request/SysUserUpdateDto.java +++ b/src/main/java/art/kexue/sxwz/entity/request/SysUserUpdateDto.java @@ -42,7 +42,7 @@ public class SysUserUpdateDto implements Serializable { private Integer schoolId; @Schema(description = "真实姓名") - private Integer realName; + private String realName; } diff --git a/src/main/java/art/kexue/sxwz/mapper/EduCollegeMapper.java b/src/main/java/art/kexue/sxwz/mapper/EduCollegeMapper.java index 65243e9..343c3c6 100644 --- a/src/main/java/art/kexue/sxwz/mapper/EduCollegeMapper.java +++ b/src/main/java/art/kexue/sxwz/mapper/EduCollegeMapper.java @@ -21,6 +21,8 @@ public interface EduCollegeMapper { EduCollege queryByName(String name); + EduCollege queryByNameAndSchoolId(String name, Long schoolId); + int updateTeacherCount(Long id, Integer count); int updateStudentCount(Long id, Integer count); diff --git a/src/main/java/art/kexue/sxwz/mapper/SysUserMapper.java b/src/main/java/art/kexue/sxwz/mapper/SysUserMapper.java index ef6c9fc..2448373 100644 --- a/src/main/java/art/kexue/sxwz/mapper/SysUserMapper.java +++ b/src/main/java/art/kexue/sxwz/mapper/SysUserMapper.java @@ -23,6 +23,14 @@ public interface SysUserMapper { * @return 对象列表 */ List getPageList(SysUserDto sysUserDto); + + /** + * 查询指定行数据(包含扩展信息) + * + * @param sysUserDto 查询条件 + * @return 对象列表(包含学生、教师、账户、学校信息) + */ + List getPageListWithExt(SysUserDto sysUserDto); /** * 通过ID查询单条数据 diff --git a/src/main/java/art/kexue/sxwz/service/SysUserService.java b/src/main/java/art/kexue/sxwz/service/SysUserService.java index 5f186af..7b5ec64 100644 --- a/src/main/java/art/kexue/sxwz/service/SysUserService.java +++ b/src/main/java/art/kexue/sxwz/service/SysUserService.java @@ -1,5 +1,6 @@ package art.kexue.sxwz.service; import art.kexue.sxwz.entity.dto.SessionDto; +import art.kexue.sxwz.entity.dto.UserDetailDto; import art.kexue.sxwz.entity.request.*; import com.github.pagehelper.PageInfo; @@ -246,5 +247,13 @@ public interface SysUserService extends BaseService { * @return 用户列表(包含学生/教师扩展信息) */ List getUsersWithExtBySchoolIdAndRoleType(Long schoolId, Integer roleType); + + /** + * 根据用户ID查询用户所有信息(包含sysUser、student、teacher、account) + * + * @param userId 用户ID + * @return 用户详细信息 + */ + UserDetailDto getUserDetailById(Long userId); } diff --git a/src/main/java/art/kexue/sxwz/service/impl/EduCollegeServiceImpl.java b/src/main/java/art/kexue/sxwz/service/impl/EduCollegeServiceImpl.java index 48f2e71..5f92ef1 100644 --- a/src/main/java/art/kexue/sxwz/service/impl/EduCollegeServiceImpl.java +++ b/src/main/java/art/kexue/sxwz/service/impl/EduCollegeServiceImpl.java @@ -23,9 +23,10 @@ public class EduCollegeServiceImpl implements EduCollegeService { @Override public EduCollege save(EduCollege college) { Assert.notBlank(college.getName(), "学院名称不能为空"); + Assert.notNull(college.getSchoolId(), "学校ID不能为空"); - EduCollege existing = eduCollegeMapper.queryByName(college.getName()); - Assert.isNull(existing, "学院名称已存在"); + EduCollege existing = eduCollegeMapper.queryByNameAndSchoolId(college.getName(), college.getSchoolId()); + Assert.isNull(existing, "同一学校下学院名称已存在"); if (college.getStatus() == null) { college.setStatus(1); @@ -41,7 +42,7 @@ public class EduCollegeServiceImpl implements EduCollegeService { } eduCollegeMapper.insert(college); - log.info("创建学院成功,名称:{}", college.getName()); + log.info("创建学院成功,名称:{},学校ID:{}", college.getName(), college.getSchoolId()); return college; } @@ -52,9 +53,11 @@ public class EduCollegeServiceImpl implements EduCollegeService { EduCollege existing = eduCollegeMapper.queryById(college.getId()); Assert.notNull(existing, "学院不存在"); + Long schoolId = college.getSchoolId() != null ? college.getSchoolId() : existing.getSchoolId(); + if (college.getName() != null && !college.getName().equals(existing.getName())) { - EduCollege byName = eduCollegeMapper.queryByName(college.getName()); - Assert.isNull(byName, "学院名称已存在"); + EduCollege byName = eduCollegeMapper.queryByNameAndSchoolId(college.getName(), schoolId); + Assert.isNull(byName, "同一学校下学院名称已存在"); } eduCollegeMapper.updateByIdSelective(college); diff --git a/src/main/java/art/kexue/sxwz/service/impl/SysUserServiceImpl.java b/src/main/java/art/kexue/sxwz/service/impl/SysUserServiceImpl.java index 006d205..f67e445 100644 --- a/src/main/java/art/kexue/sxwz/service/impl/SysUserServiceImpl.java +++ b/src/main/java/art/kexue/sxwz/service/impl/SysUserServiceImpl.java @@ -8,6 +8,7 @@ import art.kexue.sxwz.entity.Account; import art.kexue.sxwz.entity.SysUser; import art.kexue.sxwz.entity.dto.SessionDto; import art.kexue.sxwz.entity.dto.SysUserDto; +import art.kexue.sxwz.entity.dto.UserDetailDto; import art.kexue.sxwz.entity.request.*; import art.kexue.sxwz.exception.BizException; import art.kexue.sxwz.entity.EduStudent; @@ -117,7 +118,7 @@ public class SysUserServiceImpl implements SysUserService { PageHelper.startPage(pageNum, pageSize); } - List dataList = sysUserMapper.getPageList(queryDto); + List dataList = sysUserMapper.getPageListWithExt(queryDto); // 将所有返回的用户密码设置为null dataList.forEach(user -> user.setPwd(null)); return new PageInfo<>(dataList); @@ -303,6 +304,11 @@ public class SysUserServiceImpl implements SysUserService { sysUser.setEnable(sysUserUpdateDto.getEnable()); } + // 更新真实姓名 + if (sysUserUpdateDto.getRealName() != null) { + sysUser.setRealName(sysUserUpdateDto.getRealName()); + } + // 更新密码(如果有) if (sysUserUpdateDto.getPassword() != null && !sysUserUpdateDto.getPassword().isEmpty()) { try { @@ -1460,7 +1466,7 @@ public class SysUserServiceImpl implements SysUserService { case 2: return "SUPER1"; case 3: - return "SCOOL_ADMIN"; + return "SCHOOL_ADMIN"; case 4: return "COLLEGE_ADMIN"; case 5: @@ -1527,27 +1533,27 @@ public class SysUserServiceImpl implements SysUserService { @Override public SysUser createSchoolAdmin(CreateUserDto createUserDto) { - return createUser(createUserDto, 2); + return createUser(createUserDto, 3); } @Override public SysUser createCollegeAdmin(CreateUserDto createUserDto) { Assert.notNull(createUserDto.getSchoolId(), "学校ID不能为空"); - return createUser(createUserDto, 3); + return createUser(createUserDto, 4); } @Override public SysUser createTeacher(CreateUserDto createUserDto) { Assert.notNull(createUserDto.getSchoolId(), "学校ID不能为空"); Assert.notNull(createUserDto.getCollegeId(), "学院ID不能为空"); - return createUser(createUserDto, 4); + return createUser(createUserDto, 5); } @Override public SysUser createStudent(CreateUserDto createUserDto) { Assert.notNull(createUserDto.getSchoolId(), "学校ID不能为空"); Assert.notNull(createUserDto.getCollegeId(), "学院ID不能为空"); - return createUser(createUserDto, 5); + return createUser(createUserDto, 6); } private SysUser createUser(CreateUserDto createUserDto, Integer roleType) { @@ -1646,5 +1652,29 @@ public class SysUserServiceImpl implements SysUserService { users.forEach(user -> user.setPwd(null)); return users; } + + @Override + public UserDetailDto getUserDetailById(Long userId) { + Assert.notNull(userId, "用户ID不能为空"); + + UserDetailDto userDetailDto = new UserDetailDto(); + + SysUser sysUser = sysUserMapper.queryById(userId); + if (sysUser != null) { + sysUser.setPwd(null); + userDetailDto.setSysUser(sysUser); + + EduStudent student = eduStudentMapper.queryByUserId(userId); + userDetailDto.setStudent(student); + + EduTeacher teacher = eduTeacherMapper.queryByUserId(userId); + userDetailDto.setTeacher(teacher); + + Account account = accountService.queryByUserId(userId); + userDetailDto.setAccount(account); + } + + return userDetailDto; + } } diff --git a/src/main/resources/mapper/EduCollegeMapper.xml b/src/main/resources/mapper/EduCollegeMapper.xml index 4aff45d..d744d6f 100644 --- a/src/main/resources/mapper/EduCollegeMapper.xml +++ b/src/main/resources/mapper/EduCollegeMapper.xml @@ -5,6 +5,7 @@ + @@ -15,12 +16,12 @@ - insert into edu_college(name, admin_user_id, teacher_count, student_count, status, deleted) - values (#{name}, #{adminUserId}, #{teacherCount}, #{studentCount}, #{status}, #{deleted}) + insert into edu_college(name, school_id, admin_user_id, teacher_count, student_count, status, deleted) + values (#{name}, #{schoolId}, #{adminUserId}, #{teacherCount}, #{studentCount}, #{status}, #{deleted}) @@ -29,6 +30,7 @@ update edu_college name = #{name}, + school_id = #{schoolId}, admin_user_id = #{adminUserId}, teacher_count = #{teacherCount}, student_count = #{studentCount}, @@ -43,20 +45,27 @@ + + update edu_college set teacher_count = #{count} where id = #{id} diff --git a/src/main/resources/mapper/SysNotificationMapper.xml b/src/main/resources/mapper/SysNotificationMapper.xml index 91d4526..ef16690 100644 --- a/src/main/resources/mapper/SysNotificationMapper.xml +++ b/src/main/resources/mapper/SysNotificationMapper.xml @@ -121,7 +121,7 @@ WHERE user_id = #{userId} AND school_id = #{schoolId} AND is_read = 0 - + INSERT INTO sys_notification (school_id, user_id, title, content, type, is_read, sender_id, sender_name, target_type, create_time) VALUES diff --git a/src/main/resources/mapper/SysUserMapper.xml b/src/main/resources/mapper/SysUserMapper.xml index b4af0a1..565cc3c 100644 --- a/src/main/resources/mapper/SysUserMapper.xml +++ b/src/main/resources/mapper/SysUserMapper.xml @@ -27,6 +27,8 @@ + + @@ -84,6 +86,54 @@ + + +