file.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package dao
  2. import (
  3. "iot_manager_service/app/file/model"
  4. "time"
  5. )
  6. // File 文件表
  7. type File struct {
  8. ID int `gorm:"primary_key;type:int" json:"id"` //编号
  9. OriginalName string `gorm:"type:varchar(45)" json:"originalName"` //文件原始名
  10. EncryptedName string `gorm:"type:varchar(45)" json:"encryptedName"` //文件加密名
  11. SavePath string `gorm:"type:varchar(45)" json:"savePath"` //保存路径
  12. CategoryName string `gorm:"type:varchar(12)" json:"categoryName"` //文件类别名
  13. AuthId string `gorm:"type:varchar(12);default:'100'" json:"authId"` //权限id
  14. SuffixName string `gorm:"type:varchar(12)" json:"suffixName"` //文件后缀名
  15. UploadTime time.Time `gorm:"column:upload_time;type:datetime" json:"uploadTime"` //上传时间
  16. Uploader int `gorm:"type:int" json:"uploader"` //上传者id
  17. IsShowed int `gorm:"type:int;default:0" json:"isShowed"` //是否展示 0=展示,1=不展示
  18. Icon string `gorm:"type:varchar(191)" json:"icon"` //文件图标
  19. IsDeleted int `gorm:"type:int;default:0" json:"isDeleted"` //是否删除 0=未删除,1=删除
  20. }
  21. func (*File) TableName() string {
  22. return "file"
  23. }
  24. func (f *File) Create() error {
  25. return Db.Model(&f).Save(&f).Error
  26. }
  27. func (f *File) GetSysUserFiles(uid int, search model.SearchSysUserFiles) ([]File, error) {
  28. var files []File
  29. //var db *gorm.DB
  30. db := Db.Table("file").
  31. Select("file.*").
  32. Joins("left join user_file uf on uf.file_id = file.id").
  33. Where("uf.receiver = ? AND file.is_showed = 0 AND file.is_deleted = 0 AND uf.is_deleted = 0 AND uf.operation_status = '下发'", uid). // 根据upload_time字段降序排列
  34. Group("file.id")
  35. if search.OriginalName != "" {
  36. db.Where("original_name like ?", "%"+search.OriginalName+"%")
  37. }
  38. if search.SuffixName != "" {
  39. db.Where("suffix_name = ?", search.SuffixName)
  40. }
  41. if search.Sort == 0 {
  42. db.Order("upload_time DESC")
  43. } else {
  44. db.Order("upload_time ASC")
  45. }
  46. limit := search.PageSize
  47. offset := search.PageSize * (search.PageNO - 1)
  48. // 执行查询并检查错误
  49. err := db.Limit(limit).Offset(offset).Scan(&files).Error
  50. if err != nil {
  51. return files, err
  52. }
  53. return files, err
  54. }
  55. func (f *File) GetFileInfo(fileid, uid string) (model.RespFileInfo, error) {
  56. var result map[string]interface{}
  57. Db.Raw("SELECT file.auth_id, uf.effective_date FROM file LEFT JOIN user_file uf ON uf.file_id = file.id WHERE uf.file_id = ? AND uf.operation_status = '下发' AND uf.receiver = ? ORDER BY uf.effective_date DESC LIMIT 1", fileid, uid).Scan(&result)
  58. authId, _ := result["auth_id"].(string)
  59. effectiveDate, _ := result["effective_date"].(time.Time)
  60. return model.RespFileInfo{AuthId: authId, EffectiveDate: effectiveDate}, nil
  61. }
  62. func (f *File) GetFile(id string) (*File, error) {
  63. err := Db.Model(&f).Where("id = ?", id).First(&f).Error
  64. return f, err
  65. }