analyst.go 2.3 KB

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