diff --git a/models/folder.go b/models/folder.go index 7a7ce3b..1691b79 100644 --- a/models/folder.go +++ b/models/folder.go @@ -9,11 +9,11 @@ import ( type Folder struct { // 表字段 gorm.Model - Name string - ParentID uint `gorm:"index:parent_id"` - Position string `gorm:"size:65536"` - OwnerID uint `gorm:"index:owner_id"` - PositionAbsolute string `gorm:"size:65536"` + Name string + ParentID uint `gorm:"index:parent_id"` + Position string `gorm:"size:65536"` + OwnerID uint `gorm:"index:owner_id"` + //PositionAbsolute string `gorm:"size:65536"` } // Create 创建目录 diff --git a/models/user.go b/models/user.go index d59c132..88eb8d5 100644 --- a/models/user.go +++ b/models/user.go @@ -140,10 +140,9 @@ func (user *User) BeforeSave() (err error) { func (user *User) AfterCreate(tx *gorm.DB) (err error) { // 创建用户的默认根目录 defaultFolder := &Folder{ - Name: "根目录", - Position: ".", - OwnerID: user.ID, - PositionAbsolute: "/", + Name: "根目录", + Position: ".", + OwnerID: user.ID, } tx.Create(defaultFolder) return err diff --git a/pkg/filesystem/file.go b/pkg/filesystem/file.go index ec850f1..71b52b9 100644 --- a/pkg/filesystem/file.go +++ b/pkg/filesystem/file.go @@ -42,7 +42,7 @@ func (fs *FileSystem) AddFile(ctx context.Context, parent *model.Folder) (*model Size: file.GetSize(), FolderID: parent.ID, PolicyID: fs.User.Policy.ID, - Dir: parent.PositionAbsolute, + //Dir: parent.PositionAbsolute, } _, err := newFile.Create() diff --git a/pkg/filesystem/file_test.go b/pkg/filesystem/file_test.go index e47bfc4..ea3db7e 100644 --- a/pkg/filesystem/file_test.go +++ b/pkg/filesystem/file_test.go @@ -22,7 +22,7 @@ func TestFileSystem_AddFile(t *testing.T) { Model: gorm.Model{ ID: 1, }, - PositionAbsolute: "/我的文件", + Position: "/", } fs := FileSystem{ User: &model.User{ diff --git a/pkg/filesystem/path.go b/pkg/filesystem/path.go index ae8892e..4733a54 100644 --- a/pkg/filesystem/path.go +++ b/pkg/filesystem/path.go @@ -136,9 +136,9 @@ func (fs *FileSystem) ListDeleteFiles(ctx context.Context, paths []string) error // pathProcessor为最终对象路径的处理钩子。 // 有些情况下(如在分享页面列对象)时, // 路径需要截取掉被分享目录路径之前的部分。 -func (fs *FileSystem) List(ctx context.Context, path string, pathProcessor func(string) string) ([]Object, error) { +func (fs *FileSystem) List(ctx context.Context, dirPath string, pathProcessor func(string) string) ([]Object, error) { // 获取父目录 - isExist, folder := fs.IsPathExist(path) + isExist, folder := fs.IsPathExist(dirPath) // 不存在时返回空的结果 if !isExist { return nil, nil @@ -177,11 +177,13 @@ func (fs *FileSystem) List(ctx context.Context, path string, pathProcessor func( } for _, file := range childFiles { + filePath := path.Join(folder.Position, folder.Name, file.Name) + if processedPath == "" { if pathProcessor != nil { - processedPath = pathProcessor(file.Dir) + processedPath = pathProcessor(filePath) } else { - processedPath = file.Dir + processedPath = filePath } } @@ -230,11 +232,10 @@ func (fs *FileSystem) CreateDirectory(ctx context.Context, fullPath string) erro // 创建目录 newFolder := model.Folder{ - Name: dir, - ParentID: parent.ID, - Position: base, - OwnerID: fs.User.ID, - PositionAbsolute: fullPath, + Name: dir, + ParentID: parent.ID, + Position: base, + OwnerID: fs.User.ID, } _, err := newFolder.Create()