You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.1 KiB
82 lines
2.1 KiB
package service |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/app/interface/main/favorite/model" |
|
favmdl "go-common/app/service/main/favorite/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
var _emptyTopics = []*model.Topic{} |
|
|
|
// AddFavTopic add fav topic |
|
func (s *Service) AddFavTopic(c context.Context, mid, tpID int64, ck, ak string) (err error) { |
|
tpIDs := []int64{tpID} |
|
tps, err := s.topicDao.TopicMap(c, tpIDs, false, nil) |
|
if err != nil { |
|
log.Error("s.topic.Get(%v)", err) |
|
return |
|
} |
|
if len(tps) == 0 { |
|
err = ecode.TopicNotExist |
|
return |
|
} |
|
if err = s.AddFavRPC(c, favmdl.TypeTopic, mid, tpID, 0); err != nil { |
|
log.Error(" s.AddFavRPC(%d,%d) error(%v)", mid, tpID, err) |
|
} |
|
return |
|
} |
|
|
|
// DelFavTopic del fav topic |
|
func (s *Service) DelFavTopic(c context.Context, mid, tpID int64) (err error) { |
|
if err = s.DelFavRPC(c, favmdl.TypeTopic, mid, tpID, 0); err != nil { |
|
log.Error("s.DelFavRPC(%d,%d) error(%v)", mid, tpID, err) |
|
} |
|
return |
|
} |
|
|
|
// IsTopicFavoured topic is favoured. |
|
func (s *Service) IsTopicFavoured(c context.Context, mid, tpID int64) (faved bool, err error) { |
|
typ := favmdl.TypeTopic |
|
if faved, err = s.IsFavRPC(c, typ, mid, tpID); err != nil { |
|
log.Error("s.IsFavRPC(%d,%d,%d) error(%v)", typ, mid, tpID, err) |
|
} |
|
return |
|
} |
|
|
|
// FavTopics get fav topics |
|
func (s *Service) FavTopics(c context.Context, mid int64, pn, ps int, appInfo *model.AppInfo) (res *model.TopicList, err error) { |
|
res = &model.TopicList{} |
|
res.PageNum = pn |
|
res.PageSize = ps |
|
typ := favmdl.TypeTopic |
|
favs, err := s.FavoritesRPC(c, typ, mid, mid, 0, 0, "", "", pn, ps) |
|
if err != nil { |
|
log.Error("s.Favorites(%d,%d,%d,%d,%d,%d,%s) error(%v)", typ, mid, 0, pn, ps, err) |
|
return |
|
} |
|
res.Total = int64(favs.Page.Count) |
|
var oids []int64 |
|
for _, fav := range favs.List { |
|
oids = append(oids, fav.Oid) |
|
} |
|
if res.Total == 0 { |
|
res.List = _emptyTopics |
|
return |
|
} |
|
topics, err := s.topicDao.TopicMap(c, oids, false, appInfo) |
|
if err != nil { |
|
log.Error("s.topic.MuliGet error(%v)", err) |
|
return |
|
} |
|
for _, fav := range favs.List { |
|
if topic, ok := topics[fav.Oid]; ok { |
|
topic.FavAt = fav.MTime |
|
topic.MID = mid |
|
res.List = append(res.List, topic) |
|
} |
|
} |
|
return |
|
}
|
|
|