From 6ec1a5906d815846e6aa185cc19c3340ec4b0020 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Fri, 28 Mar 2025 20:17:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfile=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=9C=AA=E8=AE=BE=E7=BD=AE=E5=88=B0=E7=94=A8=E6=88=B7,?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/file.go | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/dao/file.go b/dao/file.go index c9fa6a1..8dbf48a 100644 --- a/dao/file.go +++ b/dao/file.go @@ -3,6 +3,7 @@ package dao import ( "StuAcaWorksAI/proto" "gorm.io/gorm" + "log" ) type File struct { @@ -35,6 +36,17 @@ type ConfigFile struct { FilePath string `gorm:"column:file_path"` } +type FileAuthListResp struct { + gorm.Model + AuthID int `gorm:"column:auth_id"` + FileID int `gorm:"column:file_id"` + UserFileName string `gorm:"column:user_file_name;type:varchar(255);uniqueIndex:idx_file_name"` //对于同一个文件,不同用户有不同的文件名 + UploadType string `gorm:"column:upload_type"` // 上传类型: im,avatar,file,config,config为系统文件 + IsPrivate int `gorm:"column:is_private"` // 是否私有,私有文件只能自己下载或者通过分享链接下载,1为私有,0为公开 + ShareCode string `gorm:"column:share_code"` // 分享码,用于分享时的验证,构建分享链接 + FileStoreName string `gorm:"column:file_store_name;type:varchar(255);uniqueIndex:idx_file_name"` +} + func CreateFile(fileStoreName, fileName, fileType, filePath, md5Str string, fileSize, authID int, NeedAuth bool) File { file := File{FileStoreName: fileStoreName, FileName: fileName, FileType: fileType, FilePath: filePath, FileSize: fileSize, AuthID: authID, NeedAuth: NeedAuth, Md5: md5Str} result := DB.Create(&file) @@ -179,13 +191,21 @@ func FindConfigFileByAuthID(auth_id int) []ConfigFile { } // 通用通过用户id及类型查询 -func FileUserFileList(userID int, fileType string) []FileAuth { - var files []FileAuth +func FileUserFileList(userID int, fileType string) []FileAuthListResp { + var files []FileAuthListResp + query := DB.Where("file_auths.auth_id = ? AND file_auths.upload_type = ?", userID, fileType). + Joins("LEFT JOIN files ON file_auths.file_id = files.id") + if proto.Config.SERVER_SQL_LOG { - DB.Debug().Where("auth_id = ? and upload_type = ?", userID, fileType).Find(&files) - } else { - DB.Where("auth_id = ? and upload_type = ?", userID, fileType).Find(&files) + query = query.Debug() } + + result := query.Find(&files) + if result.Error != nil { + log.Printf("查询文件列表时出错,UserID: %d, FileType: %s, 错误信息: %v", userID, fileType, result.Error) + return nil + } + return files }