12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package service
- import (
- "context"
- "go-common/app/interface/openplatform/article/dao"
- artmdl "go-common/app/interface/openplatform/article/model"
- thumbupmdl "go-common/app/service/main/thumbup/model"
- "go-common/library/ecode"
- "go-common/library/log"
- )
- func (s *Service) isLike(c context.Context, mid, aid int64) (res int8, err error) {
- r, err := s.HadLikesByMid(c, mid, []int64{aid})
- if err != nil {
- return
- }
- res = r[aid]
- return
- }
- // HadLikesByMid .
- func (s *Service) HadLikesByMid(c context.Context, mid int64, aids []int64) (res map[int64]int8, err error) {
- if mid == 0 || len(aids) == 0 {
- return
- }
- arg := &thumbupmdl.ArgHasLike{Business: "article", MessageIDs: aids, Mid: mid}
- res, err = s.thumbupRPC.HasLike(c, arg)
- return
- }
- // Like like article
- func (s *Service) Like(c context.Context, mid, aid int64, likeType int) (err error) {
- var art *artmdl.Meta
- if (likeType < 0) || (likeType > 4) {
- err = ecode.RequestErr
- return
- }
- if art, err = s.ArticleMeta(c, aid); err != nil || art == nil {
- err = ecode.NothingFound
- return
- }
- arg := &thumbupmdl.ArgLike{
- Mid: mid,
- UpMid: art.Author.Mid,
- Business: "article",
- MessageID: aid,
- Type: int8(likeType),
- }
- if err = s.thumbupRPC.Like(c, arg); err != nil {
- dao.PromError("like:thumbup-service")
- log.Error("s.thumbupRPC.Like(%+v) err: %+v", arg, err)
- }
- return
- }
- // RecommendsWithLike recommends with like state
- func (s *Service) RecommendsWithLike(c context.Context, cid int64, pn, ps int, lastAids []int64, sort int, mid int64) (res []*artmdl.RecommendArtWithLike, err error) {
- var recs []*artmdl.RecommendArt
- if recs, err = s.Recommends(c, cid, pn, ps, lastAids, sort); err != nil {
- return
- }
- var aids []int64
- for _, rec := range recs {
- aids = append(aids, rec.ID)
- }
- states, _ := s.HadLikesByMid(c, mid, aids)
- for _, rec := range recs {
- r := &artmdl.RecommendArtWithLike{RecommendArt: *rec}
- if states != nil {
- r.LikeState = int(states[rec.ID])
- }
- res = append(res, r)
- }
- return
- }
|