package services import ( "eta/eta_mini_crm_ht/models" "eta/eta_mini_crm_ht/utils" "eta/eta_mini_crm_ht/utils/oss" "fmt" "os" "sync" "time" ) func RepairImageData() { sql := ` and (head_origin_img_url ='' or head_origin_img_url is null) ` count, err := models.GetAnalystCount(sql) if err != nil { fmt.Println("修复研究员头像数据失败") return } list, err := models.GetAnalystList(sql, 0, count) if err != nil { fmt.Println("修复研究员头像数据失败") return } ossClient := oss.NewOssClient() if ossClient == nil { fmt.Println("初始化OSS服务失败") return } var wg sync.WaitGroup wg.Add(len(list)) for _, v := range list { go func(analyst *models.CrmFinancialAnalyst) { defer wg.Done() if analyst.HeadImgUrl == "" { return } analyst.HeadOriginImgUrl = analyst.HeadImgUrl dateDir := time.Now().Format(time.DateOnly) downloadDir := utils.STATIC_DIR + "ht/analyst/repair/" + dateDir if info, existErr := os.Stat(downloadDir); existErr != nil || !info.IsDir() { err = os.MkdirAll(downloadDir, utils.DIR_MOD) if err != nil { fmt.Println("存储目录创建失败") return } } fileName := analyst.Name + "-头像" savePath := downloadDir + "/" + fileName savePath, err = ossClient.GetFile(analyst.HeadImgUrl, savePath) if err != nil { fmt.Printf("下载图片失败: %s,src:%s\n", err, analyst.HeadImgUrl) return } var thumbnailPath string thumbnailPath, err = utils.ImageResize(savePath, 400) if err != nil { fmt.Printf("图片压缩失败: %s,src:%s\n", err, analyst.HeadImgUrl) } if thumbnailPath != "" { ossUploadDir := utils.RESOURCE_DIR + "analyst/" saveOssPath := ossUploadDir + time.Now().Format("200601/20060102/") imgName := utils.GetRandStringNoSpecialChar(28) saveOssPath += imgName var url string url, err = ossClient.UploadFile("", thumbnailPath, saveOssPath) if err != nil { fmt.Printf("图片上传失败: %s,src:%s\n", err, analyst.HeadImgUrl) return } analyst.HeadImgUrl = url err = analyst.Update([]string{"head_img_url", "head_origin_img_url"}) if err != nil { return } } defer func() { _ = os.Remove(savePath) _ = os.Remove(thumbnailPath) }() }(v) } wg.Wait() fmt.Println("修复研究员头像数据完成") }