实现项目归档功能
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# 项目归档后端实施记录
|
||||
|
||||
## 本次改动概述
|
||||
|
||||
本次后端实施围绕“项目归档”和“归档后禁止继续写入”两条主线展开:
|
||||
|
||||
1. 在项目管理控制器中新增归档接口
|
||||
2. 在项目服务中新增归档动作与归档态校验
|
||||
3. 将“已归档不可写”保护下沉到上传数据与参数保存服务入口
|
||||
|
||||
## 改动文件
|
||||
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectController.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectService.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImpl.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectControllerTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectControllerContractTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImplTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImplTest.java`
|
||||
|
||||
## 实现说明
|
||||
|
||||
### 1. 新增项目归档接口
|
||||
|
||||
新增接口:
|
||||
|
||||
- `POST /ccdi/project/{projectId}/archive`
|
||||
|
||||
控制器仅负责:
|
||||
|
||||
- 读取 `projectId`
|
||||
- 获取当前登录用户名
|
||||
- 调用项目服务归档动作
|
||||
- 返回“项目归档成功”
|
||||
|
||||
### 2. 项目服务新增归档动作
|
||||
|
||||
在 `CcdiProjectServiceImpl` 中新增:
|
||||
|
||||
- `archiveProject(Long projectId, String operator)`
|
||||
- `ensureProjectNotArchived(Long projectId, String message)`
|
||||
|
||||
归档动作规则:
|
||||
|
||||
- 仅允许 `status = 1` 的已完成项目归档
|
||||
- 若项目已归档,直接拒绝重复归档
|
||||
- 归档成功后写入:
|
||||
- `status = 2`
|
||||
- `isArchived = 1`
|
||||
- `updateBy`
|
||||
- `updateTime`
|
||||
|
||||
### 3. 补齐归档态后端写保护
|
||||
|
||||
本次不仅做了前端入口限制,还把后端入口一起封住,避免通过绕过页面直接调用接口继续写入。
|
||||
|
||||
新增归档校验已接入:
|
||||
|
||||
- `CcdiFileUploadServiceImpl`
|
||||
- 拉取本行信息
|
||||
- 批量上传文件
|
||||
- `CcdiModelParamServiceImpl`
|
||||
- 保存单模型参数
|
||||
- 保存全部参数
|
||||
|
||||
拦截文案分别为:
|
||||
|
||||
- `已归档项目暂不允许上传或拉取数据`
|
||||
- `已归档项目暂不允许修改参数`
|
||||
|
||||
## 为什么这样实现
|
||||
|
||||
### 为什么新增专用归档接口
|
||||
|
||||
归档是独立业务动作,不适合混入“更新项目”接口,否则前端和后端都会失去明确语义,后续状态校验也会分散。
|
||||
|
||||
### 为什么把归档保护放到服务层
|
||||
|
||||
这次用户要求的是“归档后上传数据和参数配置不可操作”。如果只锁页面页签,依然可能通过接口直调写入数据,因此必须在服务层统一加一层归档态校验,前后端限制才真正一致。
|
||||
|
||||
## 结果
|
||||
|
||||
本次后端实施后,项目归档链路已经具备完整闭环:
|
||||
|
||||
- 列表页可真实归档
|
||||
- 非法状态无法归档
|
||||
- 已归档项目无法再上传或拉取数据
|
||||
- 已归档项目无法再修改参数
|
||||
Reference in New Issue
Block a user