修复file上传未设置到用户,修复查询数据失败问题
This commit is contained in:
parent
6ec1a5906d
commit
58a0c9e8c3
38
dao/file.go
38
dao/file.go
|
|
@ -37,13 +37,7 @@ type ConfigFile struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type FileAuthListResp struct {
|
type FileAuthListResp struct {
|
||||||
gorm.Model
|
FileAuth
|
||||||
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"`
|
FileStoreName string `gorm:"column:file_store_name;type:varchar(255);uniqueIndex:idx_file_name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -191,8 +185,10 @@ func FindConfigFileByAuthID(auth_id int) []ConfigFile {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通用通过用户id及类型查询
|
// 通用通过用户id及类型查询
|
||||||
func FileUserFileList(userID int, fileType string) []FileAuthListResp {
|
func FileUserFileList(userID int, fileType string) ([]FileAuth, []File) {
|
||||||
var files []FileAuthListResp
|
var fileAuths []FileAuth
|
||||||
|
var files []File
|
||||||
|
|
||||||
query := DB.Where("file_auths.auth_id = ? AND file_auths.upload_type = ?", userID, fileType).
|
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")
|
Joins("LEFT JOIN files ON file_auths.file_id = files.id")
|
||||||
|
|
||||||
|
|
@ -200,13 +196,27 @@ func FileUserFileList(userID int, fileType string) []FileAuthListResp {
|
||||||
query = query.Debug()
|
query = query.Debug()
|
||||||
}
|
}
|
||||||
|
|
||||||
result := query.Find(&files)
|
// 先查询 FileAuth 相关记录
|
||||||
if result.Error != nil {
|
resultAuth := query.Find(&fileAuths)
|
||||||
log.Printf("查询文件列表时出错,UserID: %d, FileType: %s, 错误信息: %v", userID, fileType, result.Error)
|
if resultAuth.Error != nil {
|
||||||
return nil
|
log.Printf("查询文件认证列表时出错,UserID: %d, FileType: %s, 错误信息: %v", userID, fileType, resultAuth.Error)
|
||||||
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return files
|
// 如果有 FileAuth 记录,再查询对应的 File 记录
|
||||||
|
if len(fileAuths) > 0 {
|
||||||
|
fileIDs := make([]int, 0, len(fileAuths))
|
||||||
|
for _, auth := range fileAuths {
|
||||||
|
fileIDs = append(fileIDs, auth.FileID) // 假设 FileAuth 结构体中有 FileID 字段
|
||||||
|
}
|
||||||
|
resultFiles := DB.Where("id IN ?", fileIDs).Find(&files)
|
||||||
|
if resultFiles.Error != nil {
|
||||||
|
log.Printf("查询文件列表时出错,UserID: %d, FileType: %s, 错误信息: %v", userID, fileType, resultFiles.Error)
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fileAuths, files
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通过文件名及用户id查询(文件名模糊查询),索引不生效查询较慢
|
// 通过文件名及用户id查询(文件名模糊查询),索引不生效查询较慢
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,8 @@ func GetUserFileList(c *gin.Context) {
|
||||||
var req GetUserFileListReq
|
var req GetUserFileListReq
|
||||||
if err := c.ShouldBind(&req); err == nil {
|
if err := c.ShouldBind(&req); err == nil {
|
||||||
if req.Type == "all" {
|
if req.Type == "all" {
|
||||||
fileList := dao.FileUserFileList(user_id, proto.UserFileTypeFile)
|
fileList, files := dao.FileUserFileList(user_id, proto.UserFileTypeFile)
|
||||||
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "msg": "success", "data": fileList})
|
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "msg": "success", "data": fileList, "files": files})
|
||||||
} else if req.Type == "search" {
|
} else if req.Type == "search" {
|
||||||
fileList := dao.FindFileByUserFileName(req.FileName, user_id)
|
fileList := dao.FindFileByUserFileName(req.FileName, user_id)
|
||||||
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "msg": "success", "data": fileList})
|
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "msg": "success", "data": fileList})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue