exa_file_upload_download.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package service
  2. import (
  3. "errors"
  4. "gin-vue-admin/global"
  5. "gin-vue-admin/model"
  6. "gin-vue-admin/model/request"
  7. "gin-vue-admin/utils/upload"
  8. "mime/multipart"
  9. "strings"
  10. )
  11. // @title Upload
  12. // @description 创建文件上传记录
  13. // @param file model.ExaFileUploadAndDownload
  14. // @auth (2020/04/05 20:22)
  15. // @return error
  16. func Upload(file model.ExaFileUploadAndDownload) error {
  17. err := global.GVA_DB.Create(&file).Error
  18. return err
  19. }
  20. // @title FindFile
  21. // @description 删除文件切片记录
  22. // @auth (2020/04/05 20:22)
  23. // @param id uint
  24. // @return error
  25. func FindFile(id uint) (error, model.ExaFileUploadAndDownload) {
  26. var file model.ExaFileUploadAndDownload
  27. err := global.GVA_DB.Where("id = ?", id).First(&file).Error
  28. return err, file
  29. }
  30. // @title DeleteFile
  31. // @description 删除文件记录
  32. // @auth (2020/04/05 20:22)
  33. // @param file model.ExaFileUploadAndDownload
  34. // @return error
  35. func DeleteFile(file model.ExaFileUploadAndDownload) (err error) {
  36. var fileFromDb model.ExaFileUploadAndDownload
  37. err, fileFromDb = FindFile(file.ID)
  38. if err = upload.Oss.DeleteFile(fileFromDb.Key); err != nil{
  39. return errors.New("文件删除失败")
  40. }
  41. err = global.GVA_DB.Where("id = ?", file.ID).Unscoped().Delete(file).Error
  42. return err
  43. }
  44. // @title GetFileRecordInfoList
  45. // @description 分页获取数据
  46. // @auth (2020/04/05 20:22)
  47. // @param info PageInfo
  48. // @return err error
  49. // @return list error
  50. // @return total error
  51. func GetFileRecordInfoList(info request.PageInfo) (err error, list interface{}, total int64) {
  52. limit := info.PageSize
  53. offset := info.PageSize * (info.Page - 1)
  54. db := global.GVA_DB
  55. var fileLists []model.ExaFileUploadAndDownload
  56. err = db.Find(&fileLists).Count(&total).Error
  57. err = db.Limit(limit).Offset(offset).Order("updated_at desc").Find(&fileLists).Error
  58. return err, fileLists, total
  59. }
  60. // @title UploadFile
  61. // @description 根据配置文件判断是文件上传到本地或者七牛云
  62. // @auth (2020/04/05 20:22)
  63. // @param header *multipart.FileHeader
  64. // @param noSave string
  65. // @return err error
  66. // @return file file model.ExaFileUploadAndDownload
  67. func UploadFile(header *multipart.FileHeader, noSave string) (err error, file model.ExaFileUploadAndDownload) {
  68. filePath, key, uploadErr := upload.Oss.Upload(header)
  69. if uploadErr != nil {
  70. panic(err)
  71. }
  72. if noSave == "0" {
  73. s := strings.Split(header.Filename, ".")
  74. f := model.ExaFileUploadAndDownload{
  75. Url: filePath,
  76. Name: header.Filename,
  77. Tag: s[len(s)-1],
  78. Key: key,
  79. }
  80. return Upload(f), f
  81. }
  82. return
  83. }