Files
railwaysystem/docs/codebase-audit/09_reusable_ruoyi_capabilities.md
T

58 lines
4.8 KiB
Markdown

# 可复用的若依能力
## 1. 分类结果
| 能力 | 分类 | 当前代码依据 | 培训业务现状 |
| --- | --- | --- | --- |
| 登录 | 可以直接复用 | `SysLoginController`、`SysLoginService`、`UserDetailsServiceImpl` | 登录链路完整;验证码校验当前被注释,运行仍需核验 |
| RBAC | 可以直接复用 | `sys_user`、`sys_role`、用户角色/角色菜单 Mapper与Service | 无需另建账号角色系统 |
| 菜单权限 | 需要扩展 | `SysMenuController`、`SysMenuServiceImpl`、`GET /getRouters` | 框架可复用;仓库无培训菜单初始化数据 |
| 按钮权限 | 需要扩展 | 后端 `@PreAuthorize("@ss.hasPermi(...)")`、前端 `v-hasPermi` | 训练前后端权限前缀不一致,三个模块共用`system:info:*` |
| 操作日志 | 可以直接复用 | `@Log`、`LogAspect`、`SysOperLog`、异步日志管理 | 培训增改删/导出已标注;业务状态轨迹仍需扩展 |
| 数据权限 | 需要扩展 | `@DataScope`、`DataScopeAspect`、角色`data_scope` | 培训 Service/Mapper 尚未接入,教师/学员范围不存在 |
| 字典 | 可以直接复用 | `SysDictTypeController`、`SysDictDataController`、前端字典组件 | 培训状态字段目前多为数字输入/注释,未见业务字典SQL |
| 定时任务 | 需要扩展 | `ruoyi-quartz`、`SysJobController`、`sys_job`、`quartz.sql` | 框架保留;未见培训任务,如授权失效/设备离线/画像刷新 |
| 文件上传 | 可以直接复用 | `CommonController` 的 `/common/upload`、`/common/uploads`、下载接口;前端上传组件 | 课程附件字段尚未与上传结果建立结构化业务关系 |
| Excel 导入 | 需要扩展 | `ExcelUtil`、`SysUserController.importData/importTemplate` | 通用能力存在;培训无导入 Controller/权限/错误处理 |
| Excel 导出 | 可以直接复用 | `ExcelUtil`、培训14个Controller的`/export` | 后端全部存在;宿舍/成绩当前页面无导出入口 |
| 分页 | 可以直接复用 | `BaseController.startPage`、PageHelper、`TableDataInfo` | 14个列表全部使用;Kingbase方言配置仍需确认 |
| 统一返回格式 | 可以直接复用 | `AjaxResult`、`TableDataInfo`、`BaseController.toAjax` | 培训 Controller 已使用 |
| 异常处理 | 可以直接复用 | `GlobalExceptionHandler`、认证/业务异常体系 | 通用能力存在;培训尚少领域校验,因此领域错误语义不足 |
| 代码生成 | 需要进一步确认 | `ruoyi-generator`、`GenController`、Velocity模板 | 模块完整,但元数据查询含 MySQL 语义,Kingbase可用性未验证 |
| 系统配置 | 可以直接复用 | `SysConfigController/Service/Mapper`、`sys_config` | 可保存培训参数;不应代替领域表 |
| 通知 | 需要扩展 | `SysNoticeController`、`sys_notice` | 当前是通知公告 CRUD,不是站内信/短信/设备推送工作流 |
## 2. 直接复用时的边界
### 登录与账号
复用 `sys_user`、`sys_role`、`sys_menu` 和现有 token,不再建设第二套用户名密码、角色菜单或登录页面。培训身份需要新增业务关联,而不是复制系统账号表。
### 权限
若依权限机制本身完整,但培训权限数据和命名尚未形成可复现基线。应先确认统一的 `train:<resource>:<action>` 或既有命名,再配置菜单/按钮;当前 `system:*` 与 `train:*` 并存不能视为已接通。
### 日志
现有 `@Log` 足以覆盖管理端接口操作。设备下发、回调、报到、成绩发布等需要可追溯状态时,应在领域内扩展业务流水;不要把 `sys_oper_log` 当作所有业务状态历史。
### 数据权限
现有框架适合部门/本人范围,但“教师只能看所带班级”“学员只能看本人”依赖教师/学员与 `sys_user` 的映射及参训/授课关系。当前模型没有这些关系,不能只加一个 `@DataScope` 就完成。
### Excel
培训实体已有 `@Excel` 注解,导出接口已生成。导入还需要模板、字段校验、错误行反馈、重复策略、事务边界和权限;成绩/学员字段中的“可导入”描述不是实现。
### 文件
通用上传下载已经具备。课程的文档/视频/模型字段目前只是字符串,应先决定复用上传后的相对路径、资源 ID或专门资源表,然后再接业务流程。
### 定时任务
Quartz 管理和日志可直接承载未来任务,但仓库尚无培训 Job。后续若需要授权到期、设备离线检测、画像周期计算或同步重试,可以扩展现有 `ruoyi-quartz`,无需新增调度平台。
## 3. 静态存在与运行正常的区别
上述分类说明代码层是否可复用,不代表已在当前 Kingbase实例和当前未提交前端上运行验证。尤其 PageHelper方言、系统 Mapper SQL、代码生成器元数据 SQL、培训菜单权限和业务表实存状态都需要先验证。