Feat: WebDAV account management

This commit is contained in:
HFO4
2020-02-18 12:10:28 +08:00
parent 663b827a1d
commit 86889e2fac
6 changed files with 148 additions and 21 deletions

View File

@@ -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()

View File

@@ -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,
)
}