智汀雲盤-網盤開發golagn:共享檔案

智汀科技發表於2022-01-21

 1. 共享資料夾列表

中獲取別人共享的檔案:

whereStr := fmt.Sprintf("auth.uid = %d and auth.read = 1 and auth.is_share = 1", user.UserID)
folderList, err := entity.GetRelateFolderList(whereStr, req.PageOffset, req.PageSize)

並將切片內的賦值到返回切片中:

for _, folderRow := range folderList {
    isFamilyPath := 0
    if filepath.Base(folderRow.AbsPath) == types.FolderFamilyDir {
        isFamilyPath = 1
    }
    list = append(list, Info{
        ID:       folderRow.Id,
        Name:     folderRow.Name,
        Path:     fmt.Sprintf("/s/%d", folderRow.Id),
        FromUser: folderRow.FromUser,
        Read:     folderRow.Read,
        Write:    folderRow.Write,
        Deleted:  folderRow.Deleted,
        IsFamilyPath: isFamilyPath,
    })
}

2. 共享檔案資源

共享資料夾設定成分享時,需要將原許可權刪除,並重新組建一個新的許可權陣列寫入至資料庫中。

// path轉換為實際路徑
folderId, err = utils.GetAbsFolderIdFromPath(path)
for _, uID := range req.ToUsers {
    // 許可權存在則刪除
    err = entity.DelFolderAuthByUidAndFolderId(uID, folderId)
    folderAuthCreate := entity.FolderAuth{
        Uid:      uID,
        FromUser: nickname,
        IsShare:  1,
        FolderId: folderId,
        Read:     req.Read,
        Write:    req.Write,
        Deleted:  req.Deleted,
    }
    folderAuthCreates = append(folderAuthCreates, folderAuthCreate)
}
if folderAuthCreates != nil {
    if err = entity.BatchInsertAuth(entity.GetDB(), folderAuthCreates); err != nil {
        err = errors.Wrap(err, errors.InternalServerErr)
        return
    }
}

3.慣例

如果你對本文有任何疑問或者高見,關注智汀公眾號共同交流探討(歡迎加入微訊號:13326423643可以免費贈送“智慧開關或其他智慧硬體”哦)。


 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009085/viewspace-2853353/,如需轉載,請註明出處,否則將追究法律責任。

相關文章