mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-27 10:01:56 +08:00
Feat: WebDAV account management
This commit is contained in:
@@ -53,11 +53,13 @@ func checkUserGroup() {
|
||||
func checkStoragePack() {
|
||||
packs := model.GetExpiredStoragePack()
|
||||
for _, pack := range packs {
|
||||
// 删除过期的容量包
|
||||
pack.Delete()
|
||||
|
||||
//找到所属用户
|
||||
user, err := model.GetUserByID(pack.ID)
|
||||
user, err := model.GetUserByID(pack.UserID)
|
||||
if err != nil {
|
||||
util.Log().Warning("[定时任务] 无法获取用户 [UID=%d] 信息, %s", pack.ID, err)
|
||||
util.Log().Warning("[定时任务] 无法获取用户 [UID=%d] 信息, %s", pack.UserID, err)
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -66,9 +68,6 @@ func checkStoragePack() {
|
||||
// 如果超额,则通知用户
|
||||
sendNotification(&user, "容量包过期")
|
||||
|
||||
// 删除过期的容量包
|
||||
pack.Delete()
|
||||
|
||||
// 更新最后通知日期
|
||||
user.Notified()
|
||||
|
||||
|
||||
@@ -185,38 +185,40 @@ func (fs *FileSystem) Delete(ctx context.Context, dirs, files []uint) error {
|
||||
// TODO 用户自主选择是否强制删除
|
||||
|
||||
// 删除文件记录
|
||||
err = model.DeleteFileByIDs(allFileIDs)
|
||||
err = model.DeleteFileByIDs(deletedFileIDs)
|
||||
if err != nil {
|
||||
return ErrDBDeleteObjects.WithError(err)
|
||||
}
|
||||
|
||||
// 删除文件记录对应的分享记录
|
||||
model.DeleteShareBySourceIDs(allFileIDs, false)
|
||||
model.DeleteShareBySourceIDs(deletedFileIDs, false)
|
||||
|
||||
// 归还容量
|
||||
var total uint64
|
||||
for _, value := range totalStorage {
|
||||
for _, value := range deletedStorage {
|
||||
total += value
|
||||
}
|
||||
fs.User.DeductionStorage(total)
|
||||
|
||||
// 删除目录
|
||||
var allFolderIDs = make([]uint, 0, len(fs.DirTarget))
|
||||
for _, value := range fs.DirTarget {
|
||||
allFolderIDs = append(allFolderIDs, value.ID)
|
||||
}
|
||||
err = model.DeleteFolderByIDs(allFolderIDs)
|
||||
if err != nil {
|
||||
return ErrDBDeleteObjects.WithError(err)
|
||||
}
|
||||
// 如果文件全部删除成功,继续删除目录
|
||||
if len(deletedFileIDs) == len(allFileIDs) {
|
||||
var allFolderIDs = make([]uint, 0, len(fs.DirTarget))
|
||||
for _, value := range fs.DirTarget {
|
||||
allFolderIDs = append(allFolderIDs, value.ID)
|
||||
}
|
||||
err = model.DeleteFolderByIDs(allFolderIDs)
|
||||
if err != nil {
|
||||
return ErrDBDeleteObjects.WithError(err)
|
||||
}
|
||||
|
||||
// 删除目录记录对应的分享记录
|
||||
model.DeleteShareBySourceIDs(allFolderIDs, true)
|
||||
// 删除目录记录对应的分享记录
|
||||
model.DeleteShareBySourceIDs(allFolderIDs, true)
|
||||
}
|
||||
|
||||
if notDeleted := len(fs.FileTarget) - len(deletedFileIDs); notDeleted > 0 {
|
||||
return serializer.NewError(
|
||||
serializer.CodeNotFullySuccess,
|
||||
fmt.Sprintf("有 %d 个文件未能成功删除,已删除它们的文件记录", notDeleted),
|
||||
fmt.Sprintf("有 %d 个文件未能成功删除", notDeleted),
|
||||
nil,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user