package services import ( "fmt" "github.com/PuerkitoBio/goquery" "hongze/hongze_task/models" "hongze/hongze_task/utils" "html" "os" "strings" "time" ) func FixReportContentSub() { items, err := models.GetReport() if err != nil { fmt.Println("err:", err.Error()) return } for k, v := range items { fmt.Println(k, v.Id, v.ContentSub) content := html.UnescapeString(v.Content) utils.FileLog.Info("%s", content) doc, err := goquery.NewDocumentFromReader(strings.NewReader(content)) if err != nil { fmt.Println("create doc err:", err.Error()) return } n := 0 contentSub := "" doc.Find("p").Each(func(i int, s *goquery.Selection) { if n >= 5 { return } n++ phtml, err := s.Html() if err != nil { fmt.Println("get html err", err.Error()) return } if s.Text() != "" || strings.Contains(phtml, "src") { contentSub = contentSub + "
" + phtml + "
" utils.FileLog.Info("i:%d n:%d %s", i, n, contentSub) } }) err = models.ModifyReportContentSub(v.Id, contentSub) if err != nil { fmt.Println("ModifyReportContentSub Err:" + err.Error()) } } } func FixReportCount() { var err error defer func() { if err != nil { fmt.Println("err:", err.Error()) } }() list, err := models.GetReportLimit() if err != nil { return } for _, v := range list { content := v.Content contentHtml := html.UnescapeString(content) doc, err := goquery.NewDocumentFromReader(strings.NewReader(contentHtml)) if err != nil { fmt.Println("line 70:"+err.Error()) return } isModify := false doc.Find("img").Each(func(i int, img *goquery.Selection) { imgContent, srcExist := img.Attr("src") if srcExist { if strings.Contains(imgContent, "data:image/png;base64,") { contentBase64 := imgContent contentBase64 = strings.Replace(contentBase64, "data:image/png;base64,", "", -1) dateDir := time.Now().Format("20060102") uploadDir := "./" + dateDir err = os.MkdirAll(uploadDir, 777) if err != nil { return } randStr := utils.GetRandStringNoSpecialChar(28) fileName := randStr + ".png" fpath := uploadDir + "/" + fileName utils.SaveBase64ToFile(contentBase64, fpath) if err != nil { return } //上传到阿里云 resourceUrl, err := UploadAliyun(fileName, fpath) if err != nil { return } img.SetAttr("src", resourceUrl) isModify = true } } }) contentHtml, _ = doc.Html() fmt.Println(contentHtml) fmt.Println("isModify", isModify) err = models.EditReportContentHtml(v.Id, contentHtml) } } func DeleteReportSaveLog()(err error) { fmt.Println("start") models.DeleteReportSaveLog() fmt.Println("end") return }