analyst.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package services
  2. import (
  3. "eta/eta_mini_crm_ht/models"
  4. "eta/eta_mini_crm_ht/utils"
  5. "eta/eta_mini_crm_ht/utils/oss"
  6. "fmt"
  7. "os"
  8. "sync"
  9. "time"
  10. )
  11. func RepairImageData() {
  12. sql := ` and (head_origin_img_url ='' or head_origin_img_url is null) `
  13. count, err := models.GetAnalystCount(sql)
  14. if err != nil {
  15. fmt.Println("修复研究员头像数据失败")
  16. return
  17. }
  18. list, err := models.GetAnalystList(sql, 0, count)
  19. if err != nil {
  20. fmt.Println("修复研究员头像数据失败")
  21. return
  22. }
  23. ossClient := oss.NewOssClient()
  24. if ossClient == nil {
  25. fmt.Println("初始化OSS服务失败")
  26. return
  27. }
  28. var wg sync.WaitGroup
  29. wg.Add(len(list))
  30. for _, v := range list {
  31. go func(analyst *models.CrmFinancialAnalyst) {
  32. defer wg.Done()
  33. if analyst.HeadImgUrl == "" {
  34. return
  35. }
  36. analyst.HeadOriginImgUrl = analyst.HeadImgUrl
  37. dateDir := time.Now().Format(time.DateOnly)
  38. downloadDir := utils.STATIC_DIR + "ht/analyst/repair/" + dateDir
  39. if info, existErr := os.Stat(downloadDir); existErr != nil || !info.IsDir() {
  40. err = os.MkdirAll(downloadDir, utils.DIR_MOD)
  41. if err != nil {
  42. fmt.Println("存储目录创建失败")
  43. return
  44. }
  45. }
  46. fileName := analyst.Name + "-头像"
  47. savePath := downloadDir + "/" + fileName
  48. savePath, err = ossClient.GetFile(analyst.HeadImgUrl, savePath)
  49. if err != nil {
  50. fmt.Printf("下载图片失败: %s,src:%s\n", err, analyst.HeadImgUrl)
  51. return
  52. }
  53. var thumbnailPath string
  54. thumbnailPath, err = utils.ImageResize(savePath, 400)
  55. if err != nil {
  56. fmt.Printf("图片压缩失败: %s,src:%s\n", err, analyst.HeadImgUrl)
  57. }
  58. if thumbnailPath != "" {
  59. ossUploadDir := utils.RESOURCE_DIR + "analyst/"
  60. saveOssPath := ossUploadDir + time.Now().Format("200601/20060102/")
  61. imgName := utils.GetRandStringNoSpecialChar(28)
  62. saveOssPath += imgName
  63. var url string
  64. url, err = ossClient.UploadFile("", thumbnailPath, saveOssPath)
  65. if err != nil {
  66. fmt.Printf("图片上传失败: %s,src:%s\n", err, analyst.HeadImgUrl)
  67. return
  68. }
  69. analyst.HeadImgUrl = url
  70. err = analyst.Update([]string{"head_img_url", "head_origin_img_url"})
  71. if err != nil {
  72. return
  73. }
  74. }
  75. defer func() {
  76. _ = os.Remove(savePath)
  77. _ = os.Remove(thumbnailPath)
  78. }()
  79. }(v)
  80. }
  81. wg.Wait()
  82. fmt.Println("修复研究员头像数据完成")
  83. }