3.1 KiB
3.1 KiB
项目归档后端实施记录
本次改动概述
本次后端实施围绕“项目归档”和“归档后禁止继续写入”两条主线展开:
- 在项目管理控制器中新增归档接口
- 在项目服务中新增归档动作与归档态校验
- 将“已归档不可写”保护下沉到上传数据与参数保存服务入口
改动文件
ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectController.javaccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectService.javaccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImpl.javaccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImpl.javaccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.javaccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectControllerTest.javaccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectControllerContractTest.javaccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectServiceImplTest.javaccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiFileUploadServiceImplTest.javaccdi-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 = 2isArchived = 1updateByupdateTime
3. 补齐归档态后端写保护
本次不仅做了前端入口限制,还把后端入口一起封住,避免通过绕过页面直接调用接口继续写入。
新增归档校验已接入:
CcdiFileUploadServiceImpl- 拉取本行信息
- 批量上传文件
CcdiModelParamServiceImpl- 保存单模型参数
- 保存全部参数
拦截文案分别为:
已归档项目暂不允许上传或拉取数据已归档项目暂不允许修改参数
为什么这样实现
为什么新增专用归档接口
归档是独立业务动作,不适合混入“更新项目”接口,否则前端和后端都会失去明确语义,后续状态校验也会分散。
为什么把归档保护放到服务层
这次用户要求的是“归档后上传数据和参数配置不可操作”。如果只锁页面页签,依然可能通过接口直调写入数据,因此必须在服务层统一加一层归档态校验,前后端限制才真正一致。
结果
本次后端实施后,项目归档链路已经具备完整闭环:
- 列表页可真实归档
- 非法状态无法归档
- 已归档项目无法再上传或拉取数据
- 已归档项目无法再修改参数