初始化2
This commit is contained in:
@@ -37,12 +37,24 @@ func (c *FileController) Upload(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 获取目标文件夹ID
|
||||
folderIDStr := ctx.DefaultQuery("folder_id", "0")
|
||||
// 获取目标文件夹ID(优先查询参数, 其次表单字段)
|
||||
folderIDStr := ctx.DefaultQuery("folder_id", "")
|
||||
if folderIDStr == "" {
|
||||
folderIDStr = ctx.PostForm("folder_id")
|
||||
}
|
||||
if folderIDStr == "" {
|
||||
folderIDStr = "0"
|
||||
}
|
||||
folderID, _ := strconv.ParseUint(folderIDStr, 10, 64)
|
||||
|
||||
// 获取存储策略ID(可选, 0=使用默认策略)
|
||||
policyIDStr := ctx.DefaultQuery("storage_policy_id", "0")
|
||||
policyIDStr := ctx.DefaultQuery("storage_policy_id", "")
|
||||
if policyIDStr == "" {
|
||||
policyIDStr = ctx.PostForm("storage_policy_id")
|
||||
}
|
||||
if policyIDStr == "" {
|
||||
policyIDStr = "0"
|
||||
}
|
||||
storagePolicyID, _ := strconv.ParseUint(policyIDStr, 10, 64)
|
||||
|
||||
// 调用服务层
|
||||
@@ -108,7 +120,8 @@ func (c *FileController) GetDownloadURL(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
downloadURL, err := c.fileService.GetDownloadURL(id)
|
||||
token := ctx.GetHeader("token")
|
||||
downloadURL, err := c.fileService.GetDownloadURL(id, token)
|
||||
if err != nil {
|
||||
utils.NotFound(ctx, err.Error())
|
||||
return
|
||||
@@ -126,7 +139,9 @@ func (c *FileController) GetPreviewURL(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
previewURL, err := c.fileService.GetPreviewURL(id)
|
||||
token := ctx.GetHeader("token")
|
||||
|
||||
previewURL, err := c.fileService.GetPreviewURL(id, token)
|
||||
if err != nil {
|
||||
utils.NotFound(ctx, err.Error())
|
||||
return
|
||||
@@ -221,14 +236,14 @@ func (c *FileController) Move(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
var req struct {
|
||||
TargetFolderID uint64 `json:"target_folder_id" binding:"required"`
|
||||
TargetFolderID dto.StringID `json:"target_folder_id" binding:"required"`
|
||||
}
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
utils.BadRequest(ctx, "参数错误: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if err := c.fileService.Move(id, req.TargetFolderID, ownerID); err != nil {
|
||||
if err := c.fileService.Move(id, uint64(req.TargetFolderID), ownerID); err != nil {
|
||||
utils.ServerError(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
@@ -354,3 +369,73 @@ func (c *FileController) ListTrashed(ctx *gin.Context) {
|
||||
|
||||
utils.Success(ctx, results)
|
||||
}
|
||||
|
||||
// GrantPermission 授权文件权限
|
||||
// POST /api/file/:id/grant
|
||||
func (c *FileController) GrantPermission(ctx *gin.Context) {
|
||||
ownerID := middleware.GetCurrentUserID(ctx)
|
||||
|
||||
id, err := strconv.ParseUint(ctx.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
utils.BadRequest(ctx, "无效的文件ID")
|
||||
return
|
||||
}
|
||||
|
||||
var req dto.GrantPermissionRequest
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
utils.BadRequest(ctx, "参数错误: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if err := c.fileService.GrantPermission(id, ownerID, &req); err != nil {
|
||||
utils.ServerError(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.SuccessWithMessage(ctx, "授权成功", nil)
|
||||
}
|
||||
|
||||
// RevokePermission 撤销文件权限
|
||||
// DELETE /api/file/:id/grant/:permId
|
||||
func (c *FileController) RevokePermission(ctx *gin.Context) {
|
||||
ownerID := middleware.GetCurrentUserID(ctx)
|
||||
|
||||
fileID, err := strconv.ParseUint(ctx.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
utils.BadRequest(ctx, "无效的文件ID")
|
||||
return
|
||||
}
|
||||
|
||||
permID, err := strconv.ParseUint(ctx.Param("permId"), 10, 64)
|
||||
if err != nil {
|
||||
utils.BadRequest(ctx, "无效的权限ID")
|
||||
return
|
||||
}
|
||||
|
||||
if err := c.fileService.RevokePermission(fileID, permID, ownerID); err != nil {
|
||||
utils.ServerError(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.SuccessWithMessage(ctx, "已撤销", nil)
|
||||
}
|
||||
|
||||
// ListPermissions 查看文件的授权列表
|
||||
// GET /api/file/:id/grant
|
||||
func (c *FileController) ListPermissions(ctx *gin.Context) {
|
||||
ownerID := middleware.GetCurrentUserID(ctx)
|
||||
|
||||
fileID, err := strconv.ParseUint(ctx.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
utils.BadRequest(ctx, "无效的文件ID")
|
||||
return
|
||||
}
|
||||
|
||||
results, err := c.fileService.ListPermissions(fileID, ownerID)
|
||||
if err != nil {
|
||||
utils.ServerError(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.Success(ctx, results)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user