1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package service
- import (
- "context"
- "strings"
- artmdl "go-common/app/interface/openplatform/article/model"
- "go-common/app/job/openplatform/article/dao"
- "go-common/app/job/openplatform/article/model"
- "go-common/library/log"
- "go-common/library/sync/errgroup"
- "github.com/jaytaylor/html2text"
- )
- func (s *Service) updateSearchArt(c context.Context, art *model.Article) (err error) {
- if art == nil {
- return
- }
- a := artmdl.Meta{Attributes: art.Attributes}
- if a.AttrVal(artmdl.AttrBitNoDistribute) {
- return
- }
- searchArt := &model.SearchArticle{Article: *art}
- var (
- group *errgroup.Group
- errCtx context.Context
- )
- group, errCtx = errgroup.WithContext(c)
- group.Go(func() (err error) {
- if searchArt.Content, err = s.dao.ArticleContent(errCtx, art.ID); err != nil {
- return
- }
- searchArt.Content, err = extractText(searchArt.Content)
- return
- })
- group.Go(func() (err error) {
- var stat *artmdl.StatMsg
- if stat, err = s.dao.Stat(errCtx, art.ID); (err != nil) || (stat == nil) {
- return
- }
- searchArt.StatsDisLike = *stat.Dislike
- searchArt.StatsFavorite = *stat.Favorite
- searchArt.StatsLikes = *stat.Like
- searchArt.StatsReply = *stat.Reply
- searchArt.StatsShare = *stat.Share
- searchArt.StatsView = *stat.View
- searchArt.StatsCoin = *stat.Coin
- return
- })
- group.Go(func() (err error) {
- searchArt.Tags, err = s.tags(errCtx, art.ID)
- return
- })
- group.Go(func() (err error) {
- searchArt.Keywords, err = s.dao.Keywords(errCtx, art.ID)
- return
- })
- if err = group.Wait(); err == nil {
- err = s.dao.UpdateSearch(c, searchArt)
- }
- if err != nil {
- dao.PromError("search:更新文章")
- log.Error("updateSearchArt(%+v) err: %+v", searchArt, err)
- return
- }
- log.Info("success updateSearchArt(id: %v, title: %v)", searchArt.ID, searchArt.Title)
- return
- }
- func (s *Service) delSearchArt(c context.Context, aid int64) (err error) {
- err = s.dao.DelSearch(c, aid)
- return
- }
- func extractText(html string) (res string, err error) {
- ops := html2text.Options{PrettyTables: false}
- res, err = html2text.FromString(html, ops)
- res = strings.Replace(res, "*", "", -1)
- return
- }
- func (s *Service) updateSearchStats(c context.Context, stat *artmdl.StatMsg) (err error) {
- if err = s.dao.UpdateSearchStats(c, stat); err != nil {
- log.Error("updateSearchStats(%v) err: %+v", stat.String(), err)
- return
- }
- log.Info("updateSearchStats(%v) success", stat.String())
- return
- }
|