11 KiB
14-用户注册和量表权限管理功能开发
功能概述
本功能模块实现了用户自主注册和量表权限管理功能,允许用户自行注册账号,管理员可以为用户分配量表访问权限,普通用户只能访问被分配权限的量表进行测评。
开发时间
2025-11-06
功能特性
1. 用户注册功能
- 用户可以通过注册页面自行注册账号
- 注册功能基于RuoYi框架现有的注册功能
- 注册成功后,用户可以使用注册的账号登录系统
2. 量表权限管理
- 管理员可以管理用户对量表的访问权限
- 支持按用户、角色、部门分配权限
- 支持权限的有效期设置(开始时间、结束时间)
- 支持权限状态管理(有效/无效)
3. 权限过滤
- 普通用户在选择量表时,只能看到被分配权限的量表
- 管理员可以看到所有量表
- 如果用户没有分配任何权限,会提示联系管理员
数据库设计
量表权限表(psy_scale_permission)
该表已在 sql/psychological_system_complete.sql 中定义:
CREATE TABLE `psy_scale_permission` (
`permission_id` bigint NOT NULL AUTO_INCREMENT COMMENT '权限ID',
`scale_id` bigint NOT NULL COMMENT '量表ID',
`dept_id` bigint DEFAULT NULL COMMENT '部门ID(关联sys_dept,为空表示所有部门)',
`role_id` bigint DEFAULT NULL COMMENT '角色ID(关联sys_role,为空表示所有角色)',
`user_id` bigint DEFAULT NULL COMMENT '用户ID(关联sys_user,为空表示所有用户)',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称(特殊字段,用于罪犯管理)',
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
`status` char(1) DEFAULT '0' COMMENT '状态(0有效 1无效)',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`permission_id`),
KEY `idx_scale_id` (`scale_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='量表权限表';
后端开发
1. 实体类
文件: ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyScalePermission.java
- 定义了量表权限的所有字段
- 包含关联查询字段(scaleName, deptName, roleName, userName)
2. Mapper接口和XML
文件:
ry-news-system/src/main/java/com/ddnai/system/mapper/psychology/PsyScalePermissionMapper.javary-news-system/src/main/resources/mapper/system/psychology/PsyScalePermissionMapper.xml
核心方法:
selectPermissionList: 查询权限列表selectScaleIdsByUserId: 根据用户ID查询用户有权限访问的量表ID列表checkUserScalePermission: 检查用户是否有权限访问指定量表batchAssignUserScalePermission: 批量分配用户量表权限
3. Service接口和实现
文件:
ry-news-system/src/main/java/com/ddnai/system/service/psychology/IPsyScalePermissionService.javary-news-system/src/main/java/com/ddnai/system/service/impl/psychology/PsyScalePermissionServiceImpl.java
核心功能:
- 权限查询和管理
- 用户权限检查(管理员自动拥有所有权限)
- 批量权限分配
4. Controller
文件: ry-news-admin/src/main/java/com/ddnai/web/controller/psychology/PsyScalePermissionController.java
API接口:
GET /psychology/permission/list- 获取权限列表GET /psychology/permission/{permissionId}- 获取权限详情GET /psychology/permission/user/{userId}/scales- 获取用户有权限的量表ID列表GET /psychology/permission/check/{userId}/{scaleId}- 检查用户是否有权限POST /psychology/permission- 新增权限PUT /psychology/permission- 修改权限DELETE /psychology/permission/{permissionIds}- 删除权限POST /psychology/permission/assign- 批量分配用户量表权限
前端开发
1. API文件
文件: ruoyi-ui/src/api/psychology/permission.js
提供了所有权限相关的API调用方法。
2. 量表权限管理页面
文件: ruoyi-ui/src/views/psychology/permission/index.vue
功能:
- 权限列表查询(支持按量表、用户、状态筛选)
- 新增权限
- 修改权限
- 删除权限
- 显示权限详细信息(量表名称、用户名称、部门、角色、时间范围等)
3. 用户量表权限分配页面
文件: ruoyi-ui/src/views/psychology/permission/user.vue
功能:
- 使用Transfer组件进行量表权限分配
- 显示用户名称
- 支持搜索和筛选量表
- 批量保存权限
4. 用户管理页面集成
文件: ruoyi-ui/src/views/system/user/index.vue
修改:
- 在用户操作下拉菜单中添加"分配量表权限"选项
- 点击后跳转到用户量表权限分配页面
5. 量表选择页面权限过滤
文件: ruoyi-ui/src/views/psychology/assessment/start.vue
修改:
- 管理员(userId === 1)显示所有量表
- 普通用户只显示有权限的量表
- 如果用户没有权限,显示提示信息
6. 路由配置
文件: ruoyi-ui/src/router/index.js
新增路由:
/psychology/permission- 量表权限管理/psychology/permission/user/:userId- 用户量表权限分配
菜单配置
在 sql/psychological_system_complete.sql 中添加了量表权限管理的菜单配置:
- 菜单名称: 量表权限管理
- 路径:
permission - 组件:
psychology/permission/index - 权限标识:
psychology:permission:list
按钮权限:
psychology:permission:query- 权限查询psychology:permission:add- 权限新增psychology:permission:edit- 权限修改psychology:permission:remove- 权限删除
使用方法
1. 用户注册
- 访问系统注册页面(通常在登录页面有注册链接)
- 填写用户名、密码、确认密码
- 输入验证码(如果启用)
- 点击注册按钮
- 注册成功后,使用注册的账号登录系统
2. 管理员分配量表权限
方法一:通过量表权限管理页面
- 登录管理员账号
- 进入"心理测评管理" -> "量表权限管理"
- 点击"新增"按钮
- 选择量表、用户(可选)、开始时间、结束时间、状态
- 点击"确定"保存
方法二:通过用户管理页面
- 登录管理员账号
- 进入"系统管理" -> "用户管理"
- 找到要分配权限的用户
- 点击操作列的"更多" -> "分配量表权限"
- 在权限分配页面,使用Transfer组件选择要分配的量表
- 点击"保存"按钮
3. 用户选择量表进行测评
- 用户登录系统
- 进入"心理测评管理" -> "测评管理"
- 点击"开始测评"按钮
- 在量表选择页面,只能看到被分配权限的量表
- 选择量表后,继续完成测评流程
权限规则
权限匹配规则
系统按以下优先级检查用户是否有权限访问量表:
- 用户直接权限: 如果存在
user_id = 当前用户ID的权限记录 - 角色权限: 如果存在
role_id = 用户角色ID的权限记录 - 部门权限: 如果存在
dept_id = 用户部门ID的权限记录 - 全局权限: 如果存在
user_id,role_id,dept_id都为空的权限记录(表示所有用户)
时间范围检查
- 如果权限设置了
start_time,当前时间必须 >=start_time - 如果权限设置了
end_time,当前时间必须 <=end_time - 如果时间字段为空,表示无时间限制
状态检查
- 只有
status = '0'(有效)的权限才会生效
管理员权限
- 管理员(userId = 1)自动拥有所有量表的访问权限,不受权限表限制
注意事项
- 注册功能: 需要确保系统配置中启用了注册功能(
sys.account.registerUser = true) - 权限分配: 建议在用户注册后,管理员及时为用户分配量表权限
- 权限清理: 删除用户时,会自动删除该用户的所有权限(通过外键约束)
- 权限冲突: 如果用户同时拥有多种类型的权限(用户、角色、部门),只要满足其中一种即可访问
- 性能优化: 权限查询使用了索引,但在大量用户和量表的情况下,建议定期清理无效权限
文件清单
后端文件
ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyScalePermission.javary-news-system/src/main/java/com/ddnai/system/mapper/psychology/PsyScalePermissionMapper.javary-news-system/src/main/resources/mapper/system/psychology/PsyScalePermissionMapper.xmlry-news-system/src/main/java/com/ddnai/system/service/psychology/IPsyScalePermissionService.javary-news-system/src/main/java/com/ddnai/system/service/impl/psychology/PsyScalePermissionServiceImpl.javary-news-admin/src/main/java/com/ddnai/web/controller/psychology/PsyScalePermissionController.java
前端文件
ruoyi-ui/src/api/psychology/permission.jsruoyi-ui/src/views/psychology/permission/index.vueruoyi-ui/src/views/psychology/permission/user.vueruoyi-ui/src/views/system/user/index.vue(修改)ruoyi-ui/src/views/psychology/assessment/start.vue(修改)ruoyi-ui/src/router/index.js(修改)
配置文件
sql/psychological_system_complete.sql(菜单配置)
测试建议
-
注册功能测试
- 测试正常注册流程
- 测试用户名重复、密码格式验证
- 测试验证码功能
-
权限分配测试
- 测试通过权限管理页面分配权限
- 测试通过用户管理页面分配权限
- 测试批量分配权限
- 测试权限的时间范围限制
-
权限过滤测试
- 测试普通用户只能看到有权限的量表
- 测试管理员可以看到所有量表
- 测试无权限用户的提示信息
-
权限检查测试
- 测试用户直接权限
- 测试角色权限
- 测试部门权限
- 测试全局权限
- 测试权限过期情况
后续优化建议
- 批量操作: 支持批量为用户分配多个量表权限
- 权限模板: 支持创建权限模板,快速为多个用户分配相同权限
- 权限统计: 添加权限使用统计功能
- 权限审批: 支持权限申请和审批流程
- 权限继承: 支持部门权限继承到子部门
- 权限导出: 支持导出用户权限列表
总结
本功能模块完整实现了用户注册和量表权限管理功能,管理员可以灵活地为用户分配量表访问权限,普通用户只能访问被分配权限的量表,有效控制了系统的访问范围。功能基于RuoYi框架开发,遵循了框架的设计规范和代码风格,易于维护和扩展。