feat(deploy): 添加部署文件管理功能

- 新增部署文件自动迁移
- 创建部署文件管理路由
- 实现部署文件删除功能,包括删除数据库记录和实际文件夹
- 更新文件上传路由,添加鉴权中间件
This commit is contained in:
zhangtao 2025-08-01 16:59:47 +08:00
parent 138af37397
commit 7536ae53b0
4 changed files with 24 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package conf
import ( import (
"database/sql" "database/sql"
"ego/internal/model"
"ego/pkg/logger" "ego/pkg/logger"
"fmt" "fmt"
"log" "log"
@ -143,7 +144,9 @@ func Migration() error {
} }
// 自动迁移模式 // 自动迁移模式
models := []any{} models := []any{
&model.SysDeployFile{},
}
for _, model := range models { for _, model := range models {
if err := Db.AutoMigrate(model); err != nil { if err := Db.AutoMigrate(model); err != nil {

View File

@ -22,7 +22,7 @@ func init() {
// @Produce json // @Produce json
func SysDeployFileHandlerRouter(group *gin.RouterGroup, h *handler.SysDeployFileHandler) { func SysDeployFileHandlerRouter(group *gin.RouterGroup, h *handler.SysDeployFileHandler) {
// 部署文件管理路由组 // 部署文件管理路由组
g := group.Group("/deploy-files") g := group.Group("/DeployFiles")
// 鉴权 // 鉴权
g.Use(middleware.AuthRequired()) g.Use(middleware.AuthRequired())

View File

@ -2,6 +2,7 @@ package router
import ( import (
"ego/internal/handler" "ego/internal/handler"
"ego/internal/middleware"
"ego/internal/wire" "ego/internal/wire"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
@ -15,7 +16,7 @@ func init() {
// SysUploadHandlerRouter 文件上传路由 // SysUploadHandlerRouter 文件上传路由
func SysUploadHandlerRouter(r *gin.RouterGroup, h *handler.SysUploadHandler) { func SysUploadHandlerRouter(r *gin.RouterGroup, h *handler.SysUploadHandler) {
upload := r.Group("/upload") upload := r.Group("/upload")
//upload.Use(middleware.AuthRequired()) upload.Use(middleware.AuthRequired())
{ {
upload.POST("/zip", h.UploadZip) upload.POST("/zip", h.UploadZip)
} }

View File

@ -8,6 +8,8 @@ import (
"ego/pkg/logger" "ego/pkg/logger"
"fmt" "fmt"
"io" "io"
"os"
"path/filepath"
"time" "time"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -116,6 +118,21 @@ func (s *SysDeployFileService) DeleteByID(c *gin.Context) serializer.Response {
"update_by": c.GetString("id"), "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 { if err := s.Db.Model(&model.SysDeployFile{}).Where("deploy_id = ?", id).Updates(data).Error; err != nil {
logger.Error(c, "删除部署文件记录失败!") logger.Error(c, "删除部署文件记录失败!")
return serializer.DBErr("删除部署文件记录失败!", err) return serializer.DBErr("删除部署文件记录失败!", err)