go-common/app/interface/main/app-feed/service/region/region.go

103 lines
2.2 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package region
import (
"context"
"time"
"go-common/app/interface/main/app-feed/model"
"go-common/app/interface/main/app-feed/model/tag"
"go-common/library/ecode"
"go-common/library/log"
)
var (
_emptyHotTags = []*tag.Hot{}
_emptyTags = []*tag.Tag{}
_banRegion = map[int16]struct{}{
// bangumi
33: struct{}{},
32: struct{}{},
153: struct{}{},
51: struct{}{},
152: struct{}{},
// music
29: struct{}{},
54: struct{}{},
130: struct{}{},
// tech
37: struct{}{},
96: struct{}{},
// movie
145: struct{}{},
146: struct{}{},
147: struct{}{},
// TV series
15: struct{}{},
34: struct{}{},
86: struct{}{},
// entertainment
71: struct{}{},
137: struct{}{},
131: struct{}{},
}
)
// HotTags get hot tags of region id.
func (s *Service) HotTags(c context.Context, mid int64, rid int16, ver string, plat int8, now time.Time) (hs []*tag.Hot, version string, err error) {
if hs, err = s.tg.Hots(c, mid, rid, now); err != nil {
log.Error("tg.HotTags(%d) error(%v)", rid, err)
return
}
if model.IsOverseas(plat) {
for _, hot := range hs {
if _, ok := _banRegion[hot.Rid]; ok {
hot.Tags = _emptyTags
}
}
}
if len(hs) == 0 {
hs = _emptyHotTags
return
}
version = s.md5(hs)
if ver == version {
err = ecode.NotModified
}
return
}
func (s *Service) SubTags(c context.Context, mid int64, pn, ps int) (t *tag.SubTag) {
t = &tag.SubTag{}
sub, err := s.tg.SubTags(c, mid, 0, pn, ps)
if err != nil {
log.Error("s.tg.SubTags(%d,%d,%d) error(%v)", mid, pn, ps, err)
return
}
subTags := make([]*tag.Tag, 0, len(sub.Tags))
for _, st := range sub.Tags {
subTag := &tag.Tag{ID: st.ID, Name: st.Name, IsAtten: st.IsAtten}
subTags = append(subTags, subTag)
}
if len(subTags) != 0 {
t.SubTags = subTags
} else {
t.SubTags = _emptyTags
}
t.Count = sub.Total
return
}
func (s *Service) AddTag(c context.Context, mid, tid int64, now time.Time) (err error) {
if err = s.tg.Add(c, mid, tid, now); err != nil {
log.Error("s.tg.Add(%d, %d) error(%v)", mid, tid, err)
}
return
}
func (s *Service) CancelTag(c context.Context, mid, tid int64, now time.Time) (err error) {
if err = s.tg.Cancel(c, mid, tid, now); err != nil {
log.Error("s.tg.Cancel(%d, %d) error(%v)", mid, tid, err)
}
return
}