topic.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package service
  2. import (
  3. "context"
  4. "go-common/app/interface/main/favorite/model"
  5. favmdl "go-common/app/service/main/favorite/model"
  6. "go-common/library/ecode"
  7. "go-common/library/log"
  8. )
  9. var _emptyTopics = []*model.Topic{}
  10. // AddFavTopic add fav topic
  11. func (s *Service) AddFavTopic(c context.Context, mid, tpID int64, ck, ak string) (err error) {
  12. tpIDs := []int64{tpID}
  13. tps, err := s.topicDao.TopicMap(c, tpIDs, false, nil)
  14. if err != nil {
  15. log.Error("s.topic.Get(%v)", err)
  16. return
  17. }
  18. if len(tps) == 0 {
  19. err = ecode.TopicNotExist
  20. return
  21. }
  22. if err = s.AddFavRPC(c, favmdl.TypeTopic, mid, tpID, 0); err != nil {
  23. log.Error(" s.AddFavRPC(%d,%d) error(%v)", mid, tpID, err)
  24. }
  25. return
  26. }
  27. // DelFavTopic del fav topic
  28. func (s *Service) DelFavTopic(c context.Context, mid, tpID int64) (err error) {
  29. if err = s.DelFavRPC(c, favmdl.TypeTopic, mid, tpID, 0); err != nil {
  30. log.Error("s.DelFavRPC(%d,%d) error(%v)", mid, tpID, err)
  31. }
  32. return
  33. }
  34. // IsTopicFavoured topic is favoured.
  35. func (s *Service) IsTopicFavoured(c context.Context, mid, tpID int64) (faved bool, err error) {
  36. typ := favmdl.TypeTopic
  37. if faved, err = s.IsFavRPC(c, typ, mid, tpID); err != nil {
  38. log.Error("s.IsFavRPC(%d,%d,%d) error(%v)", typ, mid, tpID, err)
  39. }
  40. return
  41. }
  42. // FavTopics get fav topics
  43. func (s *Service) FavTopics(c context.Context, mid int64, pn, ps int, appInfo *model.AppInfo) (res *model.TopicList, err error) {
  44. res = &model.TopicList{}
  45. res.PageNum = pn
  46. res.PageSize = ps
  47. typ := favmdl.TypeTopic
  48. favs, err := s.FavoritesRPC(c, typ, mid, mid, 0, 0, "", "", pn, ps)
  49. if err != nil {
  50. log.Error("s.Favorites(%d,%d,%d,%d,%d,%d,%s) error(%v)", typ, mid, 0, pn, ps, err)
  51. return
  52. }
  53. res.Total = int64(favs.Page.Count)
  54. var oids []int64
  55. for _, fav := range favs.List {
  56. oids = append(oids, fav.Oid)
  57. }
  58. if res.Total == 0 {
  59. res.List = _emptyTopics
  60. return
  61. }
  62. topics, err := s.topicDao.TopicMap(c, oids, false, appInfo)
  63. if err != nil {
  64. log.Error("s.topic.MuliGet error(%v)", err)
  65. return
  66. }
  67. for _, fav := range favs.List {
  68. if topic, ok := topics[fav.Oid]; ok {
  69. topic.FavAt = fav.MTime
  70. topic.MID = mid
  71. res.List = append(res.List, topic)
  72. }
  73. }
  74. return
  75. }