upload_service.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package service
  2. import (
  3. "time"
  4. "xps/datamodel"
  5. "xps/datasource"
  6. "xps/repositories"
  7. minio "xps/three_party"
  8. )
  9. type TargetFile struct {
  10. FileName string
  11. FilePath string
  12. }
  13. type UploadService interface {
  14. UploadFile(ocId, userId, dirId int64, file TargetFile)(*datamodel.DocFile, error)
  15. UploadFiles(ocId, userId, dirId int64, files []TargetFile)([]datamodel.DocFile, error)
  16. }
  17. type uploadService struct {
  18. repo *repositories.DocFileRepo
  19. }
  20. func NewUploadService() UploadService {
  21. return &uploadService{
  22. repo: repositories.NewDocFileRepo(datasource.InstanceMaster()),
  23. }
  24. }
  25. func (s* uploadService) UploadFile(ocId, userId, dirId int64, file TargetFile) (*datamodel.DocFile, error) {
  26. dFile, err1 := minio.UploadFile(file.FileName, file.FilePath)
  27. if err1 != nil {
  28. return nil, err1
  29. }
  30. fileId := NewID()
  31. docFile := &datamodel.DocFile{
  32. OcId: ocId,
  33. FileId: fileId,
  34. FileTitle: dFile.FileName,
  35. FileIcon: "",
  36. FileExt: dFile.FileExt,
  37. DirId: dirId,
  38. FileUrl: dFile.FileUrl,
  39. FileSize: dFile.FileSize,
  40. FileAuthor: "",
  41. FileMimeType: dFile.FileMimeType,
  42. FileDesc: "",
  43. UploadedAt: time.Time{},
  44. UploadedBy: 0,
  45. CreatedBy: userId,
  46. CreatedAt: time.Time{},
  47. UpdatedBy: 0,
  48. UpdatedAt: time.Time{},
  49. DeletedFlag: 0,
  50. DeletedBy: 0,
  51. DeletedAt: time.Time{},
  52. }
  53. err2 := s.repo.Create(docFile)
  54. if err2 != nil {
  55. return nil, err2
  56. }
  57. return docFile, nil
  58. }
  59. func (s* uploadService) UploadFiles(ocId, userId, dirId int64, files []TargetFile) ([]datamodel.DocFile, error) {
  60. docFileList := make([]datamodel.DocFile, 0)
  61. for _, f := range files {
  62. // 1. Upload to minio
  63. dFile, err1 := minio.UploadFile(f.FileName, f.FilePath)
  64. if err1 != nil {
  65. return nil, err1
  66. }
  67. // 2. DocFile
  68. fileId := NewID()
  69. docFile := datamodel.DocFile{
  70. OcId: ocId,
  71. FileId: fileId,
  72. FileTitle: dFile.FileName,
  73. FileIcon: "",
  74. FileExt: dFile.FileExt,
  75. DirId: dirId,
  76. FileUrl: dFile.FileUrl,
  77. FileSize: dFile.FileSize,
  78. FileAuthor: "",
  79. FileMimeType: dFile.FileMimeType,
  80. FileDesc: "",
  81. UploadedAt: time.Time{},
  82. UploadedBy: 0,
  83. CreatedBy: userId,
  84. CreatedAt: time.Time{},
  85. UpdatedBy: 0,
  86. UpdatedAt: time.Time{},
  87. DeletedFlag: 0,
  88. DeletedBy: 0,
  89. DeletedAt: time.Time{},
  90. }
  91. err2 := s.repo.Create(&docFile)
  92. if err2 != nil {
  93. return nil, err2
  94. }
  95. // 3. DocFileList
  96. docFileList = append(docFileList, docFile)
  97. }
  98. return docFileList, nil
  99. }