From 7536ae53b0b6011aba0d01155f3fbcf2d87e6620 Mon Sep 17 00:00:00 2001 From: zhangtao Date: Fri, 1 Aug 2025 16:59:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(deploy):=20=E6=B7=BB=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增部署文件自动迁移 - 创建部署文件管理路由 - 实现部署文件删除功能,包括删除数据库记录和实际文件夹 - 更新文件上传路由,添加鉴权中间件 --- internal/conf/db.go | 5 ++++- internal/router/sys_deploy_file_router.go | 2 +- internal/router/sys_upload_router.go | 3 ++- internal/service/sys_deploy_file_service.go | 17 +++++++++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/internal/conf/db.go b/internal/conf/db.go index fbf5aa9..601cd65 100644 --- a/internal/conf/db.go +++ b/internal/conf/db.go @@ -2,6 +2,7 @@ package conf import ( "database/sql" + "ego/internal/model" "ego/pkg/logger" "fmt" "log" @@ -143,7 +144,9 @@ func Migration() error { } // 自动迁移模式 - models := []any{} + models := []any{ + &model.SysDeployFile{}, + } for _, model := range models { if err := Db.AutoMigrate(model); err != nil { diff --git a/internal/router/sys_deploy_file_router.go b/internal/router/sys_deploy_file_router.go index 32b8abf..76d2b35 100644 --- a/internal/router/sys_deploy_file_router.go +++ b/internal/router/sys_deploy_file_router.go @@ -22,7 +22,7 @@ func init() { // @Produce json func SysDeployFileHandlerRouter(group *gin.RouterGroup, h *handler.SysDeployFileHandler) { // 部署文件管理路由组 - g := group.Group("/deploy-files") + g := group.Group("/DeployFiles") // 鉴权 g.Use(middleware.AuthRequired()) diff --git a/internal/router/sys_upload_router.go b/internal/router/sys_upload_router.go index 3d3d941..8f9e4f1 100644 --- a/internal/router/sys_upload_router.go +++ b/internal/router/sys_upload_router.go @@ -2,6 +2,7 @@ package router import ( "ego/internal/handler" + "ego/internal/middleware" "ego/internal/wire" "github.com/gin-gonic/gin" ) @@ -15,7 +16,7 @@ func init() { // SysUploadHandlerRouter 文件上传路由 func SysUploadHandlerRouter(r *gin.RouterGroup, h *handler.SysUploadHandler) { upload := r.Group("/upload") - //upload.Use(middleware.AuthRequired()) + upload.Use(middleware.AuthRequired()) { upload.POST("/zip", h.UploadZip) } diff --git a/internal/service/sys_deploy_file_service.go b/internal/service/sys_deploy_file_service.go index 60c3a24..cbd0ed8 100644 --- a/internal/service/sys_deploy_file_service.go +++ b/internal/service/sys_deploy_file_service.go @@ -8,6 +8,8 @@ import ( "ego/pkg/logger" "fmt" "io" + "os" + "path/filepath" "time" "github.com/gin-gonic/gin" @@ -116,6 +118,21 @@ func (s *SysDeployFileService) DeleteByID(c *gin.Context) serializer.Response { "update_by": c.GetString("id"), } + // 删除已经部署的文件夹 + deployFile := model.SysDeployFile{} + if err := s.Db.Where("deploy_id = ?", id).First(&deployFile).Error; err != nil { + logger.Error(c, "获取部署文件记录失败!") + return serializer.DBErr("获取部署文件记录失败!", err) + } + + // 删除 /home/:projectName + err := os.RemoveAll(filepath.Join("/home", deployFile.ProjectName)) + if err != nil { + logger.Error(c, "删除部署文件夹失败!") + return serializer.DBErr("删除部署文件夹失败!", err) + } + + // 删除数据库记录 if err := s.Db.Model(&model.SysDeployFile{}).Where("deploy_id = ?", id).Updates(data).Error; err != nil { logger.Error(c, "删除部署文件记录失败!") return serializer.DBErr("删除部署文件记录失败!", err)