Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
hexbee
Cloudreve
提交
b49202e7
C
Cloudreve
项目概览
hexbee
/
Cloudreve
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Cloudreve
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b49202e7
编写于
2月 01, 2020
作者:
H
HFO4
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Test: Share model
上级
437bdf46
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
399 addition
and
38 deletion
+399
-38
models/policy_test.go
models/policy_test.go
+1
-1
models/share.go
models/share.go
+14
-16
models/share_test.go
models/share_test.go
+322
-0
models/user.go
models/user.go
+0
-4
models/user_test.go
models/user_test.go
+45
-0
pkg/filesystem/file.go
pkg/filesystem/file.go
+1
-1
pkg/serializer/share.go
pkg/serializer/share.go
+3
-3
routers/controllers/file.go
routers/controllers/file.go
+1
-1
service/share/visit.go
service/share/visit.go
+12
-12
未找到文件。
models/policy_test.go
浏览文件 @
b49202e7
...
...
@@ -167,7 +167,7 @@ func TestPolicy_GetUploadURL(t *testing.T) {
{
cache
.
Set
(
"setting_siteURL"
,
"http://127.0.0.1"
,
0
)
policy
:=
Policy
{
Type
:
"local"
,
Server
:
"http://127.0.0.1"
}
asserts
.
Equal
(
"
http://127.0.0.1
/api/v3/file/upload"
,
policy
.
GetUploadURL
())
asserts
.
Equal
(
"/api/v3/file/upload"
,
policy
.
GetUploadURL
())
}
// 远程
...
...
models/share.go
浏览文件 @
b49202e7
...
...
@@ -33,7 +33,6 @@ type Share struct {
}
// Create 创建分享
// TODO 测试
func
(
share
*
Share
)
Create
()
(
uint
,
error
)
{
if
err
:=
DB
.
Create
(
share
)
.
Error
;
err
!=
nil
{
util
.
Log
()
.
Warning
(
"无法插入数据库记录, %s"
,
err
)
...
...
@@ -43,7 +42,6 @@ func (share *Share) Create() (uint, error) {
}
// GetShareByHashID 根据HashID查找分享
// TODO 测试
func
GetShareByHashID
(
hashID
string
)
*
Share
{
id
,
err
:=
hashid
.
DecodeHashID
(
hashID
,
hashid
.
ShareID
)
if
err
!=
nil
{
...
...
@@ -59,7 +57,6 @@ func GetShareByHashID(hashID string) *Share {
}
// IsAvailable 返回此分享是否可用(是否过期)
// TODO 测试
func
(
share
*
Share
)
IsAvailable
()
bool
{
if
share
.
RemainDownloads
==
0
{
return
false
...
...
@@ -71,37 +68,38 @@ func (share *Share) IsAvailable() bool {
// 检查源对象是否存在
var
sourceID
uint
if
share
.
IsDir
{
folder
:=
share
.
Get
SourceFolder
()
folder
:=
share
.
SourceFolder
()
sourceID
=
folder
.
ID
}
else
{
file
:=
share
.
Get
SourceFile
()
file
:=
share
.
SourceFile
()
sourceID
=
file
.
ID
}
if
sourceID
==
0
{
// TODO 是否要在这里删除这个无效分享?
return
false
}
return
true
}
//
Get
Creator 获取分享的创建者
func
(
share
*
Share
)
Get
Creator
()
*
User
{
// Creator 获取分享的创建者
func
(
share
*
Share
)
Creator
()
*
User
{
if
share
.
User
.
ID
==
0
{
share
.
User
,
_
=
GetUserByID
(
share
.
UserID
)
}
return
&
share
.
User
}
//
Get
Source 返回源对象
func
(
share
*
Share
)
Get
Source
()
interface
{}
{
// Source 返回源对象
func
(
share
*
Share
)
Source
()
interface
{}
{
if
share
.
IsDir
{
return
share
.
Get
SourceFolder
()
return
share
.
SourceFolder
()
}
return
share
.
Get
SourceFile
()
return
share
.
SourceFile
()
}
//
Get
SourceFolder 获取源目录
func
(
share
*
Share
)
Get
SourceFolder
()
*
Folder
{
// SourceFolder 获取源目录
func
(
share
*
Share
)
SourceFolder
()
*
Folder
{
if
share
.
Folder
.
ID
==
0
{
folders
,
_
:=
GetFoldersByIDs
([]
uint
{
share
.
SourceID
},
share
.
UserID
)
if
len
(
folders
)
>
0
{
...
...
@@ -111,8 +109,8 @@ func (share *Share) GetSourceFolder() *Folder {
return
&
share
.
Folder
}
//
Get
SourceFile 获取源文件
func
(
share
*
Share
)
Get
SourceFile
()
*
File
{
// SourceFile 获取源文件
func
(
share
*
Share
)
SourceFile
()
*
File
{
if
share
.
File
.
ID
==
0
{
files
,
_
:=
GetFilesByIDs
([]
uint
{
share
.
SourceID
},
share
.
UserID
)
if
len
(
files
)
>
0
{
...
...
@@ -182,7 +180,7 @@ func (share *Share) Purchase(user *User) error {
scoreRate
:=
GetIntSetting
(
"share_score_rate"
,
100
)
gainedScore
:=
int
(
math
.
Ceil
(
float64
(
share
.
Score
*
scoreRate
)
/
100
))
share
.
Get
Creator
()
.
AddScore
(
gainedScore
)
share
.
Creator
()
.
AddScore
(
gainedScore
)
return
nil
}
...
...
models/share_test.go
0 → 100644
浏览文件 @
b49202e7
package
model
import
(
"errors"
"github.com/DATA-DOG/go-sqlmock"
"github.com/HFO4/cloudreve/pkg/cache"
"github.com/HFO4/cloudreve/pkg/conf"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
"github.com/stretchr/testify/assert"
"net/http/httptest"
"testing"
"time"
)
func
TestShare_Create
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
share
:=
Share
{
UserID
:
1
}
// 成功
{
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"INSERT(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
2
,
1
))
mock
.
ExpectCommit
()
id
,
err
:=
share
.
Create
()
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
NoError
(
err
)
asserts
.
EqualValues
(
2
,
id
)
}
// 失败
{
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"INSERT(.+)"
)
.
WillReturnError
(
errors
.
New
(
"error"
))
mock
.
ExpectRollback
()
id
,
err
:=
share
.
Create
()
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
Error
(
err
)
asserts
.
EqualValues
(
0
,
id
)
}
}
func
TestGetShareByHashID
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
conf
.
SystemConfig
.
HashIDSalt
=
""
// 成功
{
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
1
))
res
:=
GetShareByHashID
(
"x9T4"
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
NotNil
(
res
)
}
// 查询失败
{
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnError
(
errors
.
New
(
"error"
))
res
:=
GetShareByHashID
(
"x9T4"
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
Nil
(
res
)
}
// ID解码失败
{
res
:=
GetShareByHashID
(
"empty"
)
asserts
.
Nil
(
res
)
}
}
func
TestShare_IsAvailable
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
// 下载剩余次数为0
{
share
:=
Share
{}
asserts
.
False
(
share
.
IsAvailable
())
}
// 时效过期
{
expires
:=
time
.
Unix
(
10
,
10
)
share
:=
Share
{
RemainDownloads
:
-
1
,
Expires
:
&
expires
,
}
asserts
.
False
(
share
.
IsAvailable
())
}
// 源对象为目录,但不存在
{
share
:=
Share
{
RemainDownloads
:
-
1
,
SourceID
:
2
,
IsDir
:
true
,
}
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
}))
asserts
.
False
(
share
.
IsAvailable
())
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
}
// 源对象为目录,存在
{
share
:=
Share
{
RemainDownloads
:
-
1
,
SourceID
:
2
,
IsDir
:
false
,
}
mock
.
ExpectQuery
(
"SELECT(.+)files(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
13
))
asserts
.
True
(
share
.
IsAvailable
())
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
}
}
func
TestShare_GetCreator
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
1
))
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
1
))
share
:=
Share
{
UserID
:
1
}
res
:=
share
.
Creator
()
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
EqualValues
(
1
,
res
.
ID
)
}
func
TestShare_Source
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
// 目录
{
share
:=
Share
{
IsDir
:
true
,
SourceID
:
3
}
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
3
))
asserts
.
EqualValues
(
3
,
share
.
Source
()
.
(
*
Folder
)
.
ID
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
}
// 文件
{
share
:=
Share
{
IsDir
:
false
,
SourceID
:
3
}
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
3
))
asserts
.
EqualValues
(
3
,
share
.
Source
()
.
(
*
File
)
.
ID
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
}
}
func
TestShare_CanBeDownloadBy
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
share
:=
Share
{}
// 未登录,无权
{
user
:=
&
User
{
Group
:
Group
{
OptionsSerialized
:
GroupOption
{
ShareDownloadEnabled
:
false
,
},
},
}
asserts
.
Error
(
share
.
CanBeDownloadBy
(
user
))
}
// 已登录,无权
{
user
:=
&
User
{
Model
:
gorm
.
Model
{
ID
:
1
},
Group
:
Group
{
OptionsSerialized
:
GroupOption
{
ShareDownloadEnabled
:
false
,
},
},
}
asserts
.
Error
(
share
.
CanBeDownloadBy
(
user
))
}
// 未登录,需要积分
{
user
:=
&
User
{
Group
:
Group
{
OptionsSerialized
:
GroupOption
{
ShareDownloadEnabled
:
true
,
},
},
}
share
.
Score
=
1
asserts
.
Error
(
share
.
CanBeDownloadBy
(
user
))
}
// 成功
{
user
:=
&
User
{
Model
:
gorm
.
Model
{
ID
:
1
},
Group
:
Group
{
OptionsSerialized
:
GroupOption
{
ShareDownloadEnabled
:
true
,
},
},
}
share
.
Score
=
1
asserts
.
NoError
(
share
.
CanBeDownloadBy
(
user
))
}
}
func
TestShare_WasDownloadedBy
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
share
:=
Share
{
Model
:
gorm
.
Model
{
ID
:
1
},
}
// 已登录,已下载
{
user
:=
User
{
Model
:
gorm
.
Model
{
ID
:
1
,
},
}
r
:=
httptest
.
NewRecorder
()
c
,
_
:=
gin
.
CreateTestContext
(
r
)
cache
.
Set
(
"share_1_1"
,
true
,
0
)
asserts
.
True
(
share
.
WasDownloadedBy
(
&
user
,
c
))
}
}
func
TestShare_DownloadBy
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
share
:=
Share
{
Model
:
gorm
.
Model
{
ID
:
1
},
}
user
:=
User
{
Model
:
gorm
.
Model
{
ID
:
1
,
},
}
cache
.
Deletes
([]
string
{
"1_1"
},
"share_"
)
r
:=
httptest
.
NewRecorder
()
c
,
_
:=
gin
.
CreateTestContext
(
r
)
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"UPDATE(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
1
,
1
))
mock
.
ExpectCommit
()
err
:=
share
.
DownloadBy
(
&
user
,
c
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
NoError
(
err
)
_
,
ok
:=
cache
.
Get
(
"share_1_1"
)
asserts
.
True
(
ok
)
}
func
TestShare_Purchase
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
// 不需要购买
{
share
:=
Share
{}
user
:=
User
{}
asserts
.
NoError
(
share
.
Purchase
(
&
user
))
share
.
Score
=
1
user
.
Group
.
OptionsSerialized
.
ShareFreeEnabled
=
true
asserts
.
NoError
(
share
.
Purchase
(
&
user
))
user
.
Group
.
OptionsSerialized
.
ShareFreeEnabled
=
false
share
.
UserID
=
1
user
.
ID
=
1
asserts
.
NoError
(
share
.
Purchase
(
&
user
))
}
// 积分不足
{
share
:=
Share
{
Score
:
1
,
UserID
:
2
,
}
user
:=
User
{}
asserts
.
Error
(
share
.
Purchase
(
&
user
))
}
// 成功
{
cache
.
Set
(
"setting_share_score_rate"
,
"80"
,
0
)
share
:=
Share
{
Score
:
10
,
UserID
:
2
,
User
:
User
{
Model
:
gorm
.
Model
{
ID
:
1
,
},
},
}
user
:=
User
{
Score
:
10
,
}
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"UPDATE(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
1
,
1
))
mock
.
ExpectCommit
()
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"UPDATE(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
1
,
1
))
mock
.
ExpectCommit
()
asserts
.
NoError
(
share
.
Purchase
(
&
user
))
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
EqualValues
(
0
,
user
.
Score
)
asserts
.
EqualValues
(
8
,
share
.
User
.
Score
)
}
}
func
TestShare_Viewed
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
share
:=
Share
{}
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"UPDATE(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
1
,
1
))
mock
.
ExpectCommit
()
share
.
Viewed
()
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
EqualValues
(
1
,
share
.
Views
)
}
models/user.go
浏览文件 @
b49202e7
...
...
@@ -95,7 +95,6 @@ func (user *User) IncreaseStorage(size uint64) bool {
}
// PayScore 扣除积分,返回是否成功
// todo 测试
func
(
user
*
User
)
PayScore
(
score
int
)
bool
{
if
score
==
0
{
return
true
...
...
@@ -109,7 +108,6 @@ func (user *User) PayScore(score int) bool {
}
// AddScore 增加积分
// todo 测试
func
(
user
*
User
)
AddScore
(
score
int
)
{
user
.
Score
+=
score
DB
.
Model
(
user
)
.
UpdateColumn
(
"score"
,
gorm
.
Expr
(
"score + ?"
,
score
))
...
...
@@ -257,7 +255,6 @@ func (user *User) SetPassword(password string) error {
}
// NewAnonymousUser 返回一个匿名用户
// TODO 测试
func
NewAnonymousUser
()
*
User
{
user
:=
User
{}
user
.
Policy
.
Type
=
"anonymous"
...
...
@@ -266,7 +263,6 @@ func NewAnonymousUser() *User {
}
// IsAnonymous 返回是否为未登录用户
// TODO 测试
func
(
user
*
User
)
IsAnonymous
()
bool
{
return
user
.
ID
==
0
}
models/user_test.go
浏览文件 @
b49202e7
...
...
@@ -340,3 +340,48 @@ func TestUser_Root(t *testing.T) {
asserts
.
Error
(
err
)
}
}
func
TestUser_PayScore
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
user
:=
User
{
Score
:
5
}
asserts
.
True
(
user
.
PayScore
(
0
))
asserts
.
False
(
user
.
PayScore
(
10
))
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"UPDATE(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
1
,
1
))
mock
.
ExpectCommit
()
asserts
.
True
(
user
.
PayScore
(
5
))
asserts
.
EqualValues
(
0
,
user
.
Score
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
}
func
TestUser_AddScore
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
user
:=
User
{
Score
:
5
}
mock
.
ExpectBegin
()
mock
.
ExpectExec
(
"UPDATE(.+)"
)
.
WillReturnResult
(
sqlmock
.
NewResult
(
1
,
1
))
mock
.
ExpectCommit
()
user
.
AddScore
(
5
)
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
EqualValues
(
10
,
user
.
Score
)
}
func
TestNewAnonymousUser
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
mock
.
ExpectQuery
(
"SELECT(.+)"
)
.
WillReturnRows
(
sqlmock
.
NewRows
([]
string
{
"id"
})
.
AddRow
(
3
))
user
:=
NewAnonymousUser
()
asserts
.
NoError
(
mock
.
ExpectationsWereMet
())
asserts
.
NotNil
(
user
)
asserts
.
EqualValues
(
3
,
user
.
Group
.
ID
)
}
func
TestUser_IsAnonymous
(
t
*
testing
.
T
)
{
asserts
:=
assert
.
New
(
t
)
user
:=
User
{}
asserts
.
True
(
user
.
IsAnonymous
())
user
.
ID
=
1
asserts
.
False
(
user
.
IsAnonymous
())
}
pkg/filesystem/file.go
浏览文件 @
b49202e7
...
...
@@ -240,7 +240,7 @@ func (fs *FileSystem) GetDownloadURL(ctx context.Context, path string, timeout s
return
source
,
nil
}
//
Get
Source 获取可直接访问文件的外链地址
// Source 获取可直接访问文件的外链地址
func
(
fs
*
FileSystem
)
GetSource
(
ctx
context
.
Context
,
fileID
uint
)
(
string
,
error
)
{
// 查找文件记录
err
:=
fs
.
resetFileIDIfNotExist
(
ctx
,
fileID
)
...
...
pkg/serializer/share.go
浏览文件 @
b49202e7
...
...
@@ -34,7 +34,7 @@ type shareSource struct {
// BuildShareResponse 构建获取分享信息响应
func
BuildShareResponse
(
share
*
model
.
Share
,
unlocked
bool
)
Share
{
creator
:=
share
.
Get
Creator
()
creator
:=
share
.
Creator
()
resp
:=
Share
{
Key
:
hashid
.
HashID
(
share
.
ID
,
hashid
.
ShareID
),
Locked
:
!
unlocked
,
...
...
@@ -62,13 +62,13 @@ func BuildShareResponse(share *model.Share, unlocked bool) Share {
}
if
share
.
IsDir
{
source
:=
share
.
Get
SourceFolder
()
source
:=
share
.
SourceFolder
()
resp
.
Source
=
&
shareSource
{
Name
:
source
.
Name
,
Size
:
0
,
}
}
else
{
source
:=
share
.
Get
SourceFile
()
source
:=
share
.
SourceFile
()
resp
.
Source
=
&
shareSource
{
Name
:
source
.
Name
,
Size
:
source
.
Size
,
...
...
routers/controllers/file.go
浏览文件 @
b49202e7
...
...
@@ -64,7 +64,7 @@ func AnonymousGetContent(c *gin.Context) {
}
}
//
Get
Source 获取文件的外链地址
// Source 获取文件的外链地址
func
GetSource
(
c
*
gin
.
Context
)
{
// 创建上下文
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
...
...
service/share/visit.go
浏览文件 @
b49202e7
...
...
@@ -85,7 +85,7 @@ func (service *Service) CreateDownloadSession(c *gin.Context) serializer.Respons
defer
fs
.
Recycle
()
// 重设文件系统处理目标为源文件
err
=
fs
.
SetTargetByInterface
(
share
.
Get
Source
())
err
=
fs
.
SetTargetByInterface
(
share
.
Source
())
if
err
!=
nil
{
return
serializer
.
Err
(
serializer
.
CodePolicyNotAllowed
,
"源文件不存在"
,
err
)
}
...
...
@@ -115,9 +115,9 @@ func (service *Service) PreviewContent(ctx context.Context, c *gin.Context, isTe
// 用于调下层service
if
share
.
IsDir
{
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FolderModelCtx
,
share
.
Get
Source
())
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FolderModelCtx
,
share
.
Source
())
}
else
{
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FileModelCtx
,
share
.
Get
Source
())
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FileModelCtx
,
share
.
Source
())
}
subService
:=
explorer
.
SingleFileService
{
Path
:
service
.
Path
,
...
...
@@ -134,9 +134,9 @@ func (service *Service) CreateDocPreviewSession(c *gin.Context) serializer.Respo
// 用于调下层service
ctx
:=
context
.
Background
()
if
share
.
IsDir
{
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FolderModelCtx
,
share
.
Get
Source
())
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FolderModelCtx
,
share
.
Source
())
}
else
{
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FileModelCtx
,
share
.
Get
Source
())
ctx
=
context
.
WithValue
(
ctx
,
fsctx
.
FileModelCtx
,
share
.
Source
())
}
subService
:=
explorer
.
SingleFileService
{
Path
:
service
.
Path
,
...
...
@@ -165,7 +165,7 @@ func (service *Service) SaveToMyFile(c *gin.Context) serializer.Response {
defer
fs
.
Recycle
()
// 重设文件系统处理目标为源文件
err
=
fs
.
SetTargetByInterface
(
share
.
Get
Source
())
err
=
fs
.
SetTargetByInterface
(
share
.
Source
())
if
err
!=
nil
{
return
serializer
.
Err
(
serializer
.
CodePolicyNotAllowed
,
"源文件不存在"
,
err
)
}
...
...
@@ -192,7 +192,7 @@ func (service *Service) List(c *gin.Context) serializer.Response {
}
// 创建文件系统
fs
,
err
:=
filesystem
.
NewFileSystem
(
share
.
Get
Creator
())
fs
,
err
:=
filesystem
.
NewFileSystem
(
share
.
Creator
())
if
err
!=
nil
{
return
serializer
.
Err
(
serializer
.
CodePolicyNotAllowed
,
err
.
Error
(),
err
)
}
...
...
@@ -203,7 +203,7 @@ func (service *Service) List(c *gin.Context) serializer.Response {
defer
cancel
()
// 重设根目录
fs
.
Root
=
share
.
Get
Source
()
.
(
*
model
.
Folder
)
fs
.
Root
=
share
.
Source
()
.
(
*
model
.
Folder
)
fs
.
Root
.
Name
=
"/"
// 分享Key上下文
...
...
@@ -231,14 +231,14 @@ func (service *Service) Thumb(c *gin.Context) serializer.Response {
}
// 创建文件系统
fs
,
err
:=
filesystem
.
NewFileSystem
(
share
.
Get
Creator
())
fs
,
err
:=
filesystem
.
NewFileSystem
(
share
.
Creator
())
if
err
!=
nil
{
return
serializer
.
Err
(
serializer
.
CodePolicyNotAllowed
,
err
.
Error
(),
err
)
}
defer
fs
.
Recycle
()
// 重设根目录
fs
.
Root
=
share
.
Get
Source
()
.
(
*
model
.
Folder
)
fs
.
Root
=
share
.
Source
()
.
(
*
model
.
Folder
)
// 找到缩略图的父目录
exist
,
parent
:=
fs
.
IsPathExist
(
service
.
Path
)
...
...
@@ -297,7 +297,7 @@ func (service *ArchiveService) Archive(c *gin.Context) serializer.Response {
defer
fs
.
Recycle
()
// 重设根目录
fs
.
Root
=
share
.
Get
Source
()
.
(
*
model
.
Folder
)
fs
.
Root
=
share
.
Source
()
.
(
*
model
.
Folder
)
// 找到要打包文件的父目录
exist
,
parent
:=
fs
.
IsPathExist
(
service
.
Path
)
...
...
@@ -309,7 +309,7 @@ func (service *ArchiveService) Archive(c *gin.Context) serializer.Response {
ctx
:=
context
.
WithValue
(
context
.
Background
(),
fsctx
.
LimitParentCtx
,
parent
)
// 用于调下层service
tempUser
:=
share
.
Get
Creator
()
tempUser
:=
share
.
Creator
()
tempUser
.
Group
.
OptionsSerialized
.
ArchiveDownloadEnabled
=
true
c
.
Set
(
"user"
,
tempUser
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录