From 175c716891a763fd2c1e0b0b1adaf9d7f17aead6 Mon Sep 17 00:00:00 2001 From: xuans Date: Mon, 31 Aug 2026 09:55:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E6=8A=A4=E6=B4=BB=E5=8A=A8=E8=AF=81?= =?UTF-8?q?=E4=B9=A6=E4=BB=BB=E5=8A=A1=E4=B8=8B=E7=9A=84=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/httpapi/server.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/internal/httpapi/server.go b/backend/internal/httpapi/server.go index 50206ea..45356ed 100644 --- a/backend/internal/httpapi/server.go +++ b/backend/internal/httpapi/server.go @@ -436,7 +436,21 @@ func (s *Server) deleteDomain(c *gin.Context) { if !s.requireDomainRepository(c) { return } - if err := s.repository.Delete(c.Request.Context(), c.Param("id")); err != nil { + domainID := strings.TrimSpace(c.Param("id")) + if s.tasks != nil { + for _, taskType := range []string{"certificate_issue", "certificate_validate", "certificate_deploy", "certificate_import", "certificate_restore"} { + _, err := s.tasks.FindActiveTaskByDomain(c.Request.Context(), domainID, taskType) + if err == nil { + s.writeError(c, http.StatusConflict, "域名存在正在执行的证书任务,请等待任务完成或取消后再删除", nil) + return + } + if !errors.Is(err, sql.ErrNoRows) { + s.writeError(c, http.StatusInternalServerError, "检查域名任务状态失败", err) + return + } + } + } + if err := s.repository.Delete(c.Request.Context(), domainID); err != nil { if repository.IsNotFound(err) { s.writeError(c, http.StatusNotFound, "域名不存在", err) return