初始化2

This commit is contained in:
2026-07-10 17:33:33 +08:00
parent b51ee98afa
commit 94f6ecf901
59 changed files with 3893 additions and 980 deletions

View File

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