feat: 发布管理全栈完善——环境值修复+驳回API+toast反馈+详情弹窗+确认框
后端: - pipeline.go: 新增 RejectRelease handler(仅pending可驳回,状态置rejected) - routes.go: 注册 POST /releases/:id/reject 路由 前端: - ReleaseManager.tsx 重写(553→581行): - 修复环境值不匹配: development/production → dev/prod(与后端binding一致) - 移除硬编码mock applications数组,改自由输入应用名 - 修复字段名: release.deployer → release.author - 新增toast反馈(create/approve/reject/deploy/rollback均有success/error) - 新增确认框(deploy/rollback操作前确认) - 新增发布详情弹窗(原缺失,Eye按钮无响应) - 新增空状态展示 - 新增rejected状态徽章 - 主题感知: bg-slate-800 → var(--dg-bg-secondary) - Select替换原生select下拉框 - api.ts: 新增 rejectRelease 方法 // Logan.Li
This commit is contained in:
1 parent
618da69576
commit
a5970315be
4 files changed
+411
-342
No files matched your search
@@ -463,6 +463,43 @@ func (h *PipelineHandler) DeployRelease(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
// RejectRelease 驳回发布申请 // Logan.Li
|
||||
func (h *PipelineHandler) RejectRelease(c *gin.Context) {
|
||||
id, _ := strconv.Atoi(c.Param("id"))
|
||||
|
||||
var release models.AppRelease
|
||||
if err := h.db.First(&release, id).Error; err != nil {
|
||||
c.JSON(http.StatusNotFound, models.Response{
|
||||
Code: 404,
|
||||
Message: "发布不存在",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if release.Status != "pending" {
|
||||
c.JSON(http.StatusBadRequest, models.Response{
|
||||
Code: 400,
|
||||
Message: "仅待审批状态可驳回",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
release.Status = "rejected"
|
||||
if err := h.db.Save(&release).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, models.Response{
|
||||
Code: 500,
|
||||
Message: "驳回失败",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, models.Response{
|
||||
Code: 200,
|
||||
Message: "已驳回",
|
||||
Data: release,
|
||||
})
|
||||
}
|
||||
|
||||
// RollbackRelease 回滚发布
|
||||
// @Summary 回滚发布
|
||||
// @Description 回滚应用发布
|
||||
|
||||
@@ -236,6 +236,7 @@ func Register(r *gin.Engine, db *gorm.DB, log *zap.Logger, cfg *config.Config) {
|
||||
releases.GET("", pipelineHandler.ListReleases)
|
||||
releases.POST("", pipelineHandler.CreateRelease)
|
||||
releases.POST("/:id/approve", pipelineHandler.ApproveRelease)
|
||||
releases.POST("/:id/reject", pipelineHandler.RejectRelease) // 驳回发布 // Logan.Li
|
||||
releases.POST("/:id/deploy", pipelineHandler.DeployRelease)
|
||||
releases.POST("/:id/rollback", pipelineHandler.RollbackRelease)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user