实现流程项目逻辑删除与恢复
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
# 流程列表项目删除与恢复后端实施计划
|
||||
|
||||
## 目标
|
||||
|
||||
在项目管理后端将删除改为业务逻辑删除,只更新 `ccdi_project` 主表状态与删除标记,不删除项目内上传记录、流水、标签结果、证据等关联数据。管理员范围按 `admin` 与 `manager` 执行,普通用户仅允许删除本人创建项目。
|
||||
|
||||
## 实施内容
|
||||
|
||||
1. 项目状态新增 `5-已删除`,同步常量、实体注释、状态统计 VO、状态文案、初始化 SQL 与迁移 SQL。
|
||||
2. 项目删除接口保留原路径,入口权限允许拥有项目列表访问的用户进入,业务权限由 `CcdiProjectAccessService` 判断:`admin/manager` 可删除全部,普通用户仅可删除本人创建项目。
|
||||
3. 删除实现改为 Mapper 专用更新语句,仅设置 `status='5'`、`del_flag='2'`、`update_by`、`update_time`,不调用 MyBatis Plus `deleteById`,不操作关联表。
|
||||
4. 新增恢复接口 `POST /ccdi/project/{projectId}/restore`,仅 `admin/manager` 可恢复 `status='5' AND del_flag='2'` 的项目,恢复为 `status='1'`、`del_flag='0'`、`is_archived=0`。
|
||||
5. 列表查询增加 `includeDeleted`:默认只查 `del_flag='0'` 且排除 `status='5'`;仅管理员查询已删除列表时查 `del_flag='2' AND status='5'`。
|
||||
6. 状态统计增加 `status5`,仅管理员返回已删除数量,普通用户返回 0。
|
||||
7. 详情、操作、归档、打标状态流转等链路对已删除项目按不可读或不可操作处理,异步状态更新不得覆盖已删除状态。
|
||||
|
||||
## 验证范围
|
||||
|
||||
后端定向测试覆盖删除只更新项目主表、恢复到已完成、普通入口可进入业务删除校验、默认列表与已删除列表条件、状态字典与迁移 SQL、已删除状态不可被异步打标状态覆盖。
|
||||
@@ -0,0 +1,18 @@
|
||||
# 流程列表项目删除与恢复前端实施计划
|
||||
|
||||
## 目标
|
||||
|
||||
在流程列表页增加项目删除与恢复操作。默认列表不展示已删除项目;`admin` 和 `manager` 可切换到已删除列表并恢复项目;普通用户只能在非删除列表中删除自己有权限删除的项目。
|
||||
|
||||
## 实施内容
|
||||
|
||||
1. `ruoyi-ui/src/api/ccdiProject.js` 增加 `restoreProject(projectId)`,删除继续复用现有 `delProject(projectId)`。
|
||||
2. 列表页查询参数增加 `includeDeleted`,普通状态 tab 固定传 `includeDeleted=false`;管理员点击“已删除”入口时传 `includeDeleted=true` 且不传普通 `status`。
|
||||
3. 搜索条增加“已删除”tab,仅 `admin/manager` 可见,数量使用后端 `status5`。
|
||||
4. 项目表格增加删除和恢复按钮:普通列表中按 `canDelete` 且状态不是 `5` 展示删除;删除列表仅展示恢复按钮,不展示进入项目、查看结果、重新分析、归档。
|
||||
5. 删除与恢复均使用确认弹窗,删除文案明确项目内数据不会删除,恢复文案明确恢复为已完成状态;成功后刷新列表与统计。
|
||||
6. 状态颜色补充 `5-已删除` 的危险色展示,字典值由后端 SQL 提供。
|
||||
|
||||
## 验证范围
|
||||
|
||||
前端源码断言覆盖已删除入口管理员可见、`includeDeleted` 参数、删除/恢复 API 调用、普通列表删除按钮、删除列表仅恢复按钮;构建验证 Vue 模板与打包链路。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 流程列表项目删除与恢复实施记录
|
||||
|
||||
## 修改内容
|
||||
|
||||
后端新增 `5-已删除` 项目状态,删除项目时仅更新 `ccdi_project.status='5'` 与 `del_flag='2'`,不删除任何项目关联数据;新增恢复接口,将已删除项目恢复为 `已完成(status=1)` 并清除删除标记。列表默认排除删除态,管理员通过 `includeDeleted=true` 查询删除列表并获取 `status5` 统计。
|
||||
|
||||
前端在流程列表中新增删除按钮和管理员“已删除”列表入口,删除列表只展示恢复按钮。删除、恢复都增加确认弹窗,并在成功后刷新列表和状态统计。
|
||||
|
||||
删除按钮已调整为红色文本按钮,悬停时使用浅红背景,便于和普通操作按钮区分。
|
||||
|
||||
## 影响范围
|
||||
|
||||
- 后端:项目 Controller、Service、权限服务、Mapper XML、项目状态常量、DTO/VO、项目初始化 SQL 与迁移 SQL。
|
||||
- 前端:项目列表页、搜索条、项目表格、项目 API。
|
||||
- 数据:新增项目状态字典 `5-已删除`,更新项目主表 `status` 字段注释,新增迁移脚本。
|
||||
|
||||
## 验证记录
|
||||
|
||||
1. `mvn -pl ccdi-project -am -Dtest=CcdiProjectServiceImplTest,CcdiProjectControllerTest,CcdiProjectMapperXmlTest,CcdiProjectStatusSqlTest -DfailIfNoTests=false -Dsurefire.failIfNoSpecifiedTests=false test`
|
||||
- 结果:通过,26 个测试全部成功。
|
||||
2. `source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use && node tests/unit/project-list-archive-flow.test.js && node tests/unit/project-list-reanalyze-flow.test.js`
|
||||
- 结果:通过。
|
||||
3. `source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use && node tests/unit/project-table-style.test.js && node tests/unit/project-list-archive-flow.test.js && node tests/unit/project-list-reanalyze-flow.test.js`
|
||||
- 结果:通过,删除按钮红色样式断言通过。
|
||||
4. `source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use && npm run build:prod`
|
||||
- 结果:通过,仅存在既有资源体积警告。
|
||||
5. 使用应用内浏览器打开真实页面 `http://localhost:1024/ccdiProject`,以 `admin` 登录验证项目 `删除恢复验证项目-20260702093910`:
|
||||
- 默认列表可搜索到项目并显示“删除”按钮。
|
||||
- 删除确认弹窗提示“项目内数据不会删除”,确认后默认列表不再展示该项目。
|
||||
- “已删除”列表展示该项目且仅有“恢复”按钮,不展示进入项目、查看结果、重新分析、归档。
|
||||
- 恢复确认弹窗提示“项目将恢复为已完成状态”,确认后已删除列表不再展示该项目,接口复核默认列表中该项目状态为 `1`。
|
||||
- 验收结束后已删除本轮验证项目数据。
|
||||
- 验收期间启动的后端进程已通过 `bin/restart_java_backend.sh stop` 关闭;前端 1024 服务为验收前已存在进程,未额外关闭。
|
||||
|
||||
## 后续验收
|
||||
|
||||
已完成本地真实页面验收。后续上线前需在目标环境执行迁移脚本并使用管理员账号复核删除、已删除列表与恢复链路。
|
||||
Reference in New Issue
Block a user