# APP 接口权限移除说明 ## 修改概述 根据需求,移除了所有被 app 端调用的后台接口的权限验证注解(`@PreAuthorize`),使这些接口可以在用户登录后无需额外权限即可访问。 ## 已修改的 Controller 及接口 ### 1. SysTaskController(任务管理) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java` 移除以下接口的权限注解: - `GET /task/list` - 查询任务列表 - `POST /task/export` - 导出任务列表 - `GET /task/{taskId}` - 获取任务详情 - `POST /task` - 新增任务 - `PUT /task` - 修改任务 - `DELETE /task/{taskIds}` - 删除任务 - `PUT /task/{taskId}/assign` - 分配任务 - `PUT /task/{taskId}/status` - 更新任务状态 - `GET /task/statistics` - 查询任务统计 - `GET /task/overdue` - 查询超时任务 - `GET /task/my` - 查询我的任务 ### 2. SysTaskVehicleController(任务车辆关联) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskVehicleController.java` 移除以下接口的权限注解: - `GET /task/vehicle/list/{taskId}` - 查询任务关联的车辆列表 - `GET /task/vehicle/available` - 查询可用车辆列表 - `POST /task/vehicle/assign/{taskId}` - 分配车辆给任务 - `POST /task/vehicle/assign-batch/{taskId}` - 批量分配车辆给任务 - `DELETE /task/vehicle/{taskId}/{vehicleId}` - 取消任务车辆分配 ### 3. VehicleInfoController(车辆信息管理) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleInfoController.java` 移除以下接口的权限注解: - `GET /system/vehicle/list` - 查询车辆信息列表 - `GET /system/vehicle/export` - 导出车辆信息列表 - `GET /system/vehicle/{vehicleId}` - 获取车辆信息详情 - `POST /system/vehicle` - 新增车辆信息 - `PUT /system/vehicle` - 修改车辆信息 - `DELETE /system/vehicle/{vehicleIds}` - 删除车辆信息 **注意**:以下接口已使用 `@Anonymous` 注解,保持不变: - `POST /system/vehicle/bind` - 绑定车辆到用户 - `POST /system/vehicle/unbind` - 解绑用户车辆 - `GET /system/vehicle/user/bound/{userId}` - 获取用户绑定的车辆 ### 4. SysDeptController(部门管理) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java` 移除以下接口的权限注解: - `GET /system/dept/list` - 获取部门列表 - `GET /system/dept/list/exclude/{deptId}` - 查询部门列表(排除节点) - `GET /system/dept/{deptId}` - 根据部门编号获取详细信息 ### 5. SysUserController(用户管理) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java` 移除以下接口的权限注解: - `GET /system/user/list` - 获取用户列表 ### 6. SysDictDataController(字典数据) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java` **注意**:以下接口原本就没有权限注解,保持不变: - `GET /system/dict/data/type/{dictType}` - 根据字典类型查询字典数据 ### 7. SqlServerDictionaryController(SQL Server字典查询) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/sqlserver/SqlServerDictionaryController.java` 移除以下接口的权限注解: - `GET /sqlserver/dictionary/serviceOrdAreaTypes` - 查询单据类型列表 - `GET /sqlserver/dictionary/serviceOrderClass` - 查询服务单编码列表 - `GET /sqlserver/dictionary/dispatchOrderClass` - 查询调度单编码列表 - `GET /sqlserver/dictionary/serviceOrderTypes` - 查询服务订单类型列表 - `GET /sqlserver/dictionary/hospitalDepartments` - 查询医院科室列表 ### 8. SysMessageController(系统消息) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMessageController.java` 移除以下接口的权限注解: - `GET /system/message/list` - 查询系统消息列表 - `POST /system/message/export` - 导出系统消息列表 - `GET /system/message/{messageId}` - 获取系统消息详细信息 - `POST /system/message` - 新增系统消息 - `PUT /system/message` - 修改系统消息 - `DELETE /system/message/{messageIds}` - 删除系统消息 **注意**:以下接口原本就没有权限注解,保持不变: - `GET /system/message/my` - 查询当前用户的消息列表 - `GET /system/message/unread/count` - 查询未读消息数量 - `PUT /system/message/read/{messageId}` - 标记消息为已读 - `PUT /system/message/read/all` - 标记所有消息为已读 ### 9. HospDataController(医院数据) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java` **注意**:该 Controller 原本就没有权限注解,保持不变: - `GET /system/hospital/search` - 搜索医院 - `GET /system/hospital/detail` - 获取医院详情 ### 10. Icd10Controller(ICD-10疾病分类) **文件路径**: `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/Icd10Controller.java` **注意**:该 Controller 原本就没有权限注解,保持不变: - `GET /system/icd10/search` - 搜索ICD-10疾病 - `GET /system/icd10/detail` - 获取ICD-10详情 ## 安全说明 1. **登录验证仍然有效**:虽然移除了 `@PreAuthorize` 权限注解,但所有接口仍然需要用户登录才能访问(通过 Spring Security 的认证机制)。 2. **数据权限控制**: - 部分接口在业务层仍然会进行数据权限检查 - 例如:用户只能查看和操作自己所在部门或有权限的数据 3. **后台管理系统**: - 后台管理系统(ruoyi-ui)仍然保持原有的权限控制 - 只是 app 端调用的接口移除了权限验证 ## 影响范围 - ✅ APP 端:可以正常调用所有任务、车辆、用户、部门等接口 - ✅ 后台管理:不受影响,权限控制通过前端路由和菜单权限实现 - ✅ 安全性:用户仍需登录,只是无需配置细粒度的功能权限 ## 测试建议 1. 测试 app 端登录后是否能正常调用所有接口 2. 测试未登录用户是否仍然无法访问接口(应返回 401) 3. 测试后台管理系统的权限控制是否正常工作 4. 验证数据权限是否生效(用户只能操作自己权限范围内的数据) ## 后续优化建议 如果需要对 app 端也实施细粒度权限控制,可以考虑: 1. 在 `sys_role` 表中为 app 用户创建专门的角色 2. 配置相应的菜单和权限标识 3. 在用户登录时分配对应的角色和权限 4. 恢复接口的 `@PreAuthorize` 注解 ## 修改日期 2025-10-26