voice.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package controllers
  2. import (
  3. "hongze/hongze_admin/models"
  4. "hongze/hongze_admin/services"
  5. "hongze/hongze_admin/utils"
  6. "os"
  7. "path"
  8. "time"
  9. )
  10. //音频
  11. type VoiceController struct {
  12. BaseAuthController
  13. }
  14. // @Title 音频上传
  15. // @Description 音频上传接口
  16. // @Param file query file true "文件"
  17. // @Param ReportId query int true "报告ID"
  18. // @Success Ret=200 上传成功
  19. // @router /upload [post]
  20. func (this *VoiceController) Upload() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. f, h, err := this.GetFile("file")
  27. if err != nil {
  28. br.Msg = "获取资源信息失败"
  29. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  30. return
  31. }
  32. reportId, err := this.GetInt("ReportId")
  33. if err != nil {
  34. br.Msg = "获取资源信息失败"
  35. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  36. return
  37. }
  38. report, err := models.GetReportItemById(reportId)
  39. if err != nil {
  40. br.Msg = "获取报告信息失败"
  41. br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
  42. return
  43. }
  44. ext := path.Ext(h.Filename)
  45. dateDir := time.Now().Format("20060102")
  46. uploadDir := utils.STATIC_DIR + "hongze/" + dateDir
  47. err = os.MkdirAll(uploadDir, 777)
  48. if err != nil {
  49. br.Msg = "存储目录创建失败"
  50. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  51. return
  52. }
  53. randStr := utils.GetRandStringNoSpecialChar(28)
  54. fileName := randStr + ext
  55. fpath := uploadDir + "/" + fileName
  56. defer f.Close() //关闭上传文件
  57. err = this.SaveToFile("file", fpath)
  58. if err != nil {
  59. br.Msg = "文件上传失败"
  60. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  61. return
  62. }
  63. //上传到阿里云
  64. resourceUrl, err := services.UploadAudioAliyun(fileName, fpath)
  65. if err != nil {
  66. br.Msg = "文件上传失败"
  67. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  68. return
  69. }
  70. defer func() {
  71. os.Remove(fpath)
  72. }()
  73. item := new(models.Resource)
  74. item.ResourceUrl = resourceUrl
  75. item.ResourceType = 2
  76. item.CreateTime = time.Now()
  77. newId, err := models.AddResource(item)
  78. if err != nil {
  79. br.Msg = "资源上传失败"
  80. br.ErrMsg = "资源上传失败,Err:" + err.Error()
  81. return
  82. }
  83. playSeconds, err := utils.GetVideoPlaySeconds(fpath)
  84. if err != nil {
  85. br.Msg = "获取音频时间失败"
  86. br.ErrMsg = "获取音频时间失败,Err:" + err.Error()
  87. return
  88. }
  89. createTime := report.CreateTime.Format("0102")
  90. videoName := report.Title + "(" + createTime + ")"
  91. err = models.ModifyReportVideo(reportId, resourceUrl, videoName, playSeconds)
  92. if err != nil {
  93. br.Msg = "上传失败"
  94. br.ErrMsg = "上传失败,Err:" + err.Error()
  95. return
  96. }
  97. resp := new(models.ResourceResp)
  98. resp.Id = newId
  99. resp.ResourceUrl = resourceUrl
  100. br.Msg = "上传成功"
  101. br.Ret = 200
  102. br.Success = true
  103. br.Data = resp
  104. return
  105. }