diff --git a/backend/internal/controllers/download.go b/backend/internal/controllers/download.go index b95ab1b..6e17a56 100644 --- a/backend/internal/controllers/download.go +++ b/backend/internal/controllers/download.go @@ -120,7 +120,7 @@ func VaildateShare(c *echo.Context) error { } } // download_nums 必须放在创建token的时候减掉,不然多线程下载会导致多次减掉 - err = models.SetRedisShareInfo(r.ShareId, func(shareInfo *models.RedisShareInfo) *models.RedisShareInfo { + _, err = models.SetRedisShareInfo(r.ShareId, func(shareInfo *models.RedisShareInfo) *models.RedisShareInfo { shareInfo.ViewNum -= 1 return shareInfo }) @@ -130,7 +130,7 @@ func VaildateShare(c *echo.Context) error { // 统计分享数 currentDate := time.Now().Format("2006-01-02") - err = models.SetRedisStat(currentDate, func(stat *models.StatData) *models.StatData { + _, err = models.SetRedisStat(currentDate, func(stat *models.StatData) *models.StatData { stat.DownloadNum += 1 return stat }) diff --git a/backend/internal/controllers/file.go b/backend/internal/controllers/file.go index 4409637..4bcde6d 100644 --- a/backend/internal/controllers/file.go +++ b/backend/internal/controllers/file.go @@ -13,7 +13,6 @@ import ( "time" "github.com/labstack/echo/v5" - "github.com/spf13/cast" ) func CreateUploadTask(c *echo.Context) error { @@ -78,38 +77,33 @@ func CreateUploadTask(c *echo.Context) error { for r.FileSize/ChunkSize > 1000 { ChunkSize *= 2 } - uploadTaskExpire := cast.ToInt64(u.GetEnvWithDefault("upload.remove_expire", "2")) * 3600 - newFileInfo := models.RedisFileInfo{ - FileType: models.FileTypeInit, - FileInfo: models.FileInfo{ + redisFileInfo, err := models.SetRedisFileInfo(fileId, func(fileInfo *models.RedisFileInfo) *models.RedisFileInfo { + fileInfo.FileType = models.FileTypeInit + fileInfo.FileInfo = models.FileInfo{ FileSize: r.FileSize, MimeType: r.MimeType, FileHash: r.FileHash, ChunkSize: ChunkSize, - }, - CreatedAt: time.Now().Unix(), - Expire: uploadTaskExpire, - } - err = models.SetRedisFileInfo(fileId, func(fileInfo *models.RedisFileInfo) *models.RedisFileInfo { - return &newFileInfo + } + return fileInfo }) if err != nil { return utils.HTTPErrorHandler(c, err) } - err = s.SetFileRemoveTask(fileId, time.Duration(uploadTaskExpire)*time.Second) + err = s.SetFileRemoveTask(fileId, time.Duration(redisFileInfo.Expire)*time.Second) if err != nil { return utils.HTTPErrorHandler(c, err) } return utils.HTTPSuccessHandler(c, map[string]any{ - "size": newFileInfo.FileSize, - "mime_type": newFileInfo.MimeType, - "hash": newFileInfo.FileHash, - "type": newFileInfo.FileType, - "expire": newFileInfo.Expire, + "size": redisFileInfo.FileSize, + "mime_type": redisFileInfo.MimeType, + "hash": redisFileInfo.FileHash, + "type": redisFileInfo.FileType, + "expire": redisFileInfo.Expire, "id": fileId, - "chunk_size": newFileInfo.ChunkSize, + "chunk_size": redisFileInfo.ChunkSize, }) } @@ -235,7 +229,7 @@ func FinishUploadTask(c *echo.Context) error { } // 更新文件信息 - err = models.SetRedisFileInfo(r.FileId, func(fileInfo *models.RedisFileInfo) *models.RedisFileInfo { + fileInfo, err = models.SetRedisFileInfo(r.FileId, func(fileInfo *models.RedisFileInfo) *models.RedisFileInfo { fileInfo.FileType = models.FileTypeUpload return fileInfo }) @@ -244,7 +238,7 @@ func FinishUploadTask(c *echo.Context) error { } // 统计 currentDate := time.Now().Format("2006-01-02") - err = models.SetRedisStat(currentDate, func(stat *models.StatData) *models.StatData { + _, err = models.SetRedisStat(currentDate, func(stat *models.StatData) *models.StatData { stat.FileSize += fileInfo.FileSize stat.FileNum += 1 return stat diff --git a/backend/internal/controllers/share.go b/backend/internal/controllers/share.go index 010e07a..47ac970 100644 --- a/backend/internal/controllers/share.go +++ b/backend/internal/controllers/share.go @@ -73,16 +73,16 @@ func CreateShareInfo(c *echo.Context) error { password = hash } - err = models.SetRedisShareInfo(id, models.RedisShareInfo{ - Data: r.Data, - Type: r.Type, - CreatedAt: time.Now().Unix(), - Owner: owner, - ViewNum: r.Config.ViewNum, - Password: password, - // NotifyEmail: r.Config.NotifyEmail, - FileName: r.FileName, - ExpireAt: ExpireTime.Unix(), + _, err = models.SetRedisShareInfo(id, func(shareInfo *models.RedisShareInfo) *models.RedisShareInfo { + shareInfo.Data = r.Data + shareInfo.Type = r.Type + shareInfo.CreatedAt = time.Now().Unix() + shareInfo.Owner = owner + shareInfo.ViewNum = r.Config.ViewNum + shareInfo.Password = password + shareInfo.FileName = r.FileName + shareInfo.ExpireAt = ExpireTime.Unix() + return shareInfo }) if err != nil { return utils.HTTPErrorHandler(c, err) @@ -128,7 +128,7 @@ func CreateShareInfo(c *echo.Context) error { // 统计分享数 currentDate := time.Now().Format("2006-01-02") - err = models.SetRedisStat(currentDate, func(stat *models.StatData) *models.StatData { + _, err = models.SetRedisStat(currentDate, func(stat *models.StatData) *models.StatData { stat.ShareNum += 1 return stat }) diff --git a/worker/internal/services/file.go b/worker/internal/services/file.go index 8df06a9..e4d907a 100644 --- a/worker/internal/services/file.go +++ b/worker/internal/services/file.go @@ -7,8 +7,6 @@ import ( "pkg/services" u "pkg/utils" "time" - - "github.com/spf13/cast" ) type GenStandardFileReturn struct { @@ -48,21 +46,20 @@ func GenStandardFile(filePath string, mimeType string) (GenStandardFileReturn, e if err := os.Rename(filePath, newPath); err != nil { return GenStandardFileReturn{}, err } - expire := cast.ToInt64(u.GetEnvWithDefault("upload.remove_expire", "2")) * 3600 - err = services.SetFileRemoveTask(fileId, time.Duration(expire)*time.Second) - if err != nil { - return GenStandardFileReturn{}, err - } - if err := models.SetRedisFileInfo(fileId, func(fileInfo *models.RedisFileInfo) *models.RedisFileInfo { + redisFileInfo, err := models.SetRedisFileInfo(fileId, func(fileInfo *models.RedisFileInfo) *models.RedisFileInfo { fileInfo.FileInfo = models.FileInfo{ FileSize: fileSize, FileHash: fileHash, MimeType: mimeType, - }, - FileType: models.FileTypeUpload, - CreatedAt: time.Now().Unix(), - Expire: expire, - }); err != nil { + } + fileInfo.FileType = models.FileTypeUpload + return fileInfo + }) + if err != nil { + return GenStandardFileReturn{}, err + } + err = services.SetFileRemoveTask(fileId, time.Duration(redisFileInfo.Expire)*time.Second) + if err != nil { return GenStandardFileReturn{}, err } return GenStandardFileReturn{