image.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_mini_crm_ht/models"
  5. "eta/eta_mini_crm_ht/models/request"
  6. "eta/eta_mini_crm_ht/models/response"
  7. "eta/eta_mini_crm_ht/services"
  8. "eta/eta_mini_crm_ht/utils"
  9. "fmt"
  10. "os"
  11. "path"
  12. "strconv"
  13. "time"
  14. )
  15. type ImageController struct {
  16. BaseAuthController
  17. }
  18. // UploadImage @Title 上传图片
  19. // @Description 上传视频
  20. // @Param File query file true "文件"
  21. // @Success 200 {object} models.ReportAuthorResp
  22. // @router /uploadImage [post]
  23. func (this *ImageController) UploadImage() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. f, h, err := this.GetFile("File")
  30. if err != nil {
  31. br.Msg = "获取资源信息失败"
  32. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  33. return
  34. }
  35. defer f.Close()
  36. size, err := strconv.Atoi(utils.UPLOAD_IMG_SIZE)
  37. if err != nil {
  38. size = 100
  39. }
  40. if h.Size > 1024*1024*int64(size) {
  41. br.Msg = fmt.Sprintf("图片大小不能超过%dK", size)
  42. br.ErrMsg = "图片上传失败,Err:" + err.Error()
  43. return
  44. }
  45. ext := path.Ext(h.Filename)
  46. //if ext != ".mp3" {
  47. // br.Msg = "音频格式不正确"
  48. // br.ErrMsg = "音频上传失败,Err:" + err.Error()
  49. // return
  50. //}
  51. dateDir := time.Now().Format("20060102")
  52. uploadDir := utils.STATIC_DIR + "ht/audio" + dateDir
  53. err = os.MkdirAll(uploadDir, utils.DIR_MOD)
  54. if err != nil {
  55. br.Msg = "存储目录创建失败"
  56. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  57. return
  58. }
  59. randStr := utils.GetRandStringNoSpecialChar(28)
  60. fileName := randStr + ext
  61. fpath := uploadDir + "/" + fileName
  62. err = this.SaveToFile("File", fpath)
  63. if err != nil {
  64. br.Msg = "图片上传失败"
  65. br.ErrMsg = "图片上传失败,Err:" + err.Error()
  66. return
  67. }
  68. audioUploadDir := utils.RESOURCE_DIR + "img/"
  69. savePdfToOssPath := audioUploadDir + time.Now().Format("200601/20060102/")
  70. audioName := utils.GetRandStringNoSpecialChar(28)
  71. savePdfToOssPath += audioName + ext
  72. defer func() {
  73. err = os.Remove(fpath)
  74. fmt.Sprintf("删除文件失败:%v", err)
  75. }()
  76. ossClient := services.NewOssClient()
  77. if ossClient == nil {
  78. br.Msg = "图片上传失败"
  79. br.ErrMsg = "初始化OSS服务失败"
  80. return
  81. }
  82. mp3Url, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
  83. if err != nil {
  84. br.Msg = "图片上传失败"
  85. br.ErrMsg = "图片上传失败,Err:" + err.Error()
  86. return
  87. }
  88. base := path.Base(h.Filename)
  89. resp := new(response.MediaUploadResp)
  90. resp.Url = mp3Url
  91. resp.FileName = base
  92. br.Data = resp
  93. br.Msg = "上传成功"
  94. br.Ret = 200
  95. br.Success = true
  96. }
  97. // AddImage @Title 新增图片
  98. // @Description 新增图片
  99. // @Param File query file true "文件"
  100. // @router /addImage [post]
  101. func (this *ImageController) AddImage() {
  102. br := new(models.BaseResponse).Init()
  103. defer func() {
  104. this.Data["json"] = br
  105. this.ServeJSON()
  106. }()
  107. var req request.ImageReq
  108. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  109. br.Msg = "参数解析失败"
  110. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  111. return
  112. }
  113. if req.ImageName == "" {
  114. br.Msg = "图片名称为空"
  115. return
  116. }
  117. if req.SrcUrl == "" {
  118. br.Msg = "音频地址为空"
  119. return
  120. }
  121. if req.PermissionId <= 0 {
  122. br.Msg = "品种标签为空"
  123. return
  124. }
  125. var err error
  126. imageInsert := &models.ImageSource{
  127. ImgName: req.ImageName,
  128. SrcUrl: req.SrcUrl,
  129. PermissionId: req.PermissionId,
  130. Deleted: 0,
  131. CreatedTime: time.Now(),
  132. }
  133. _, err = imageInsert.Insert()
  134. if err != nil {
  135. br.Msg = "添加失败"
  136. br.ErrMsg = "图片新增失败,Err:" + err.Error()
  137. return
  138. }
  139. br.Msg = "添加成功"
  140. br.Ret = 200
  141. br.Success = true
  142. }
  143. // EditImage
  144. //
  145. // @Title 编辑音频
  146. //
  147. // @Description 编辑音频
  148. // @Success 200 {object} models.ReportAuthorResp
  149. // @router /editImage [post]
  150. func (this *ImageController) EditImage() {
  151. br := new(models.BaseResponse).Init()
  152. defer func() {
  153. this.Data["json"] = br
  154. this.ServeJSON()
  155. }()
  156. var req request.ImageReq
  157. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  158. br.Msg = "参数解析失败"
  159. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  160. return
  161. }
  162. if req.ImageId <= 0 {
  163. br.Msg = "图片ID为空"
  164. return
  165. }
  166. if req.ImageName == "" {
  167. br.Msg = "图片名称为空"
  168. return
  169. }
  170. if req.SrcUrl == "" {
  171. br.Msg = "图片src为空"
  172. return
  173. }
  174. if req.PermissionId <= 0 {
  175. br.Msg = "品种标签为空"
  176. return
  177. }
  178. var err error
  179. imageUpdate := &models.ImageSource{
  180. Id: req.ImageId,
  181. ImgName: req.ImageName,
  182. SrcUrl: req.SrcUrl,
  183. PermissionId: req.PermissionId,
  184. Deleted: 0,
  185. CreatedTime: time.Now(),
  186. }
  187. err = imageUpdate.Update()
  188. if err != nil {
  189. br.Msg = "更新失败"
  190. br.ErrMsg = "图片更新失败,Err:" + err.Error()
  191. return
  192. }
  193. br.Msg = "编辑成功"
  194. br.Ret = 200
  195. br.Success = true
  196. }
  197. // DeleteImage
  198. // @Title 删除音频
  199. //
  200. // @Description 删除音频
  201. // @Success 200 {object} models.ReportAuthorResp
  202. // @router /deleteImage [post]
  203. func (this *ImageController) DeleteImage() {
  204. br := new(models.BaseResponse).Init()
  205. defer func() {
  206. this.Data["json"] = br
  207. this.ServeJSON()
  208. }()
  209. var req request.ImageReq
  210. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  211. br.Msg = "参数解析失败"
  212. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  213. return
  214. }
  215. if req.ImageId <= 0 {
  216. br.Msg = "图片ID为空"
  217. return
  218. }
  219. var err error
  220. imageDelete := &models.ImageSource{
  221. Id: req.ImageId,
  222. Deleted: 1,
  223. }
  224. err = imageDelete.Delete()
  225. if err != nil {
  226. br.Msg = "删除失败"
  227. br.ErrMsg = "图片删除失败,Err:" + err.Error()
  228. return
  229. }
  230. br.Msg = "删除成功"
  231. br.Ret = 200
  232. br.Success = true
  233. }