add: file export for table

This commit is contained in:
2024-08-28 14:35:44 +08:00
parent d9f84fc807
commit c80842087d
6 changed files with 67 additions and 59 deletions

View File

@@ -64,16 +64,33 @@ func (m *SysJob) GetFileExportTable(c *gin.Context) {
} }
func (m *FileExport) GetFileList(c *gin.Context) { func (m *FileExport) GetFileList(c *gin.Context) {
dir := c.Query("path") var querys FileExportQuery
suffix := c.Query("suffix")
files, err := file.GetFileInfo(dir, suffix) if err := c.ShouldBindQuery(&querys); err != nil {
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
return
}
files, err := file.GetFileInfo(querys.Path, querys.Suffix)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error())) c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
} }
total := int64(len(files))
c.JSON(http.StatusOK, services.TotalDataResp(files, total)) // split files list
lenNum := int64(len(files))
start := (querys.PageNum - 1) * querys.PageSize
end := start + querys.PageSize
var splitList []file.FileInfo
if start >= lenNum {
splitList = []file.FileInfo{}
} else if end >= lenNum {
splitList = files[start:]
} else {
splitList = files[start:end]
}
total := len(files)
c.JSON(http.StatusOK, services.TotalDataResp(splitList, total))
} }
func (m *FileExport) Total(c *gin.Context) { func (m *FileExport) Total(c *gin.Context) {

View File

@@ -1,6 +1,7 @@
package file_export package file_export
import ( import (
"be.ems/lib/file"
"gorm.io/datatypes" "gorm.io/datatypes"
) )
@@ -19,16 +20,12 @@ func (m *SysJob) TableName() string {
} }
type FileExport struct { type FileExport struct {
FileType string `json:"fileType"` // 文件类型 file.FileInfo
FileMode string `json:"fileMode"` // 文件的权限
LinkCount int64 `json:"linkCount"` // 硬链接数目
Owner string `json:"owner"` // 所属用户
Group string `json:"group"` // 所属组
Size int64 `json:"size"` // 文件的大小
ModifiedTime int64 `json:"modifiedTime"` // 最后修改时间,单位为秒
FileName string `json:"fileName"` // 文件的名称
} }
func (m *FileExport) TableName() string { type FileExportQuery struct {
return "file_export" Path string `form:"path" binding:"required"`
Suffix string `form:"suffix"`
PageNum int64 `form:"pageNum" binding:"required"`
PageSize int64 `form:"pageSize" binding:"required"`
} }

27
lib/file/file.go Normal file
View File

@@ -0,0 +1,27 @@
package file
import (
"os"
"path/filepath"
)
func GetFileAndDirCount(dir string) (int, int, error) {
var fileCount, dirCount int
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if path == dir {
return nil // 跳过当前目录
}
if info.IsDir() {
dirCount++
} else {
fileCount++
}
return nil
})
return fileCount, dirCount, err
}

View File

@@ -61,24 +61,3 @@ func GetFileInfo(dir, suffix string) ([]FileInfo, error) {
} }
return files, nil return files, nil
} }
func GetFileAndDirCount(dir string) (int, int, error) {
var fileCount, dirCount int
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if path == dir {
return nil // 跳过当前目录
}
if info.IsDir() {
dirCount++
} else {
fileCount++
}
return nil
})
return fileCount, dirCount, err
}

View File

@@ -59,24 +59,3 @@ func GetFileInfo(dir, suffix string) ([]FileInfo, error) {
} }
return files, nil return files, nil
} }
func GetFileAndDirCount(dir string) (int, int, error) {
var fileCount, dirCount int
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if path == dir {
return nil // 跳过当前目录
}
if info.IsDir() {
dirCount++
} else {
fileCount++
}
return nil
})
return fileCount, dirCount, err
}

View File

@@ -13,7 +13,7 @@ func DataResp(data any) map[string]any {
return map[string]any{"code": CODE_SUCC, "data": data} return map[string]any{"code": CODE_SUCC, "data": data}
} }
func SuccResp() map[string]any { func SuccMessageResp() map[string]any {
return map[string]any{"code": CODE_SUCC, "message": "success"} return map[string]any{"code": CODE_SUCC, "message": "success"}
} }
@@ -21,6 +21,15 @@ func TotalResp(total int64) map[string]any {
return map[string]any{"code": CODE_SUCC, "total": total} return map[string]any{"code": CODE_SUCC, "total": total}
} }
func TotalDataResp(data any, total int64) map[string]any { func TotalDataResp(data any, total any) map[string]any {
return map[string]any{"code": CODE_SUCC, "data": data, "total": total} return map[string]any{"code": CODE_SUCC, "data": data, "total": total}
} }
func SuccResp(va map[string]any) map[string]any {
resp := make(map[string]any)
resp["code"] = CODE_SUCC
for k, v := range va {
resp[k] = v
}
return resp
}