123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package service
- import (
- "context"
- "time"
- "go-common/app/interface/main/space/conf"
- "go-common/app/interface/main/space/dao"
- tagrpc "go-common/app/interface/main/tag/rpc/client"
- artrpc "go-common/app/interface/openplatform/article/rpc/client"
- accclient "go-common/app/service/main/account/api"
- accwar "go-common/app/service/main/account/api"
- accmdl "go-common/app/service/main/account/model"
- arcclient "go-common/app/service/main/archive/api"
- assrpc "go-common/app/service/main/assist/rpc/client"
- coinclient "go-common/app/service/main/coin/api"
- favrpc "go-common/app/service/main/favorite/api/gorpc"
- fltrpc "go-common/app/service/main/filter/rpc/client"
- member "go-common/app/service/main/member/api/gorpc"
- "go-common/app/service/main/relation/rpc/client"
- thumbup "go-common/app/service/main/thumbup/rpc/client"
- upclient "go-common/app/service/main/up/api/v1"
- "go-common/library/ecode"
- "go-common/library/log"
- "go-common/library/sync/pipeline/fanout"
- )
- // Service service struct.
- type Service struct {
- c *conf.Config
- dao *dao.Dao
- // rpc
- art *artrpc.Service
- ass *assrpc.Service
- tag *tagrpc.Service
- filter *fltrpc.Service
- fav *favrpc.Service
- thumbup *thumbup.Service
- relation *relation.Service
- member *member.Service
- // grpc
- accClient accwar.AccountClient
- arcClient arcclient.ArchiveClient
- coinClient coinclient.CoinClient
- upClient upclient.UpClient
- // cache proc
- cache *fanout.Fanout
- // noNoticeMids
- noNoticeMids map[int64]struct{}
- BlacklistValue map[int64]struct{}
- }
- // New new service.
- func New(c *conf.Config) *Service {
- s := &Service{
- c: c,
- dao: dao.New(c),
- art: artrpc.New(c.ArticleRPC),
- ass: assrpc.New(c.AssistRPC),
- tag: tagrpc.New2(c.TagRPC),
- fav: favrpc.New2(c.FavoriteRPC),
- filter: fltrpc.New(c.FilterRPC),
- thumbup: thumbup.New(c.ThumbupRPC),
- relation: relation.New(c.RelationRPC),
- member: member.New(c.MemberRPC),
- cache: fanout.New("cache"),
- }
- var err error
- if s.accClient, err = accclient.NewClient(c.AccClient); err != nil {
- panic(err)
- }
- if s.arcClient, err = arcclient.NewClient(c.ArcClient); err != nil {
- panic(err)
- }
- if s.coinClient, err = coinclient.NewClient(c.CoinClient); err != nil {
- panic(err)
- }
- if s.upClient, err = upclient.NewClient(c.UpClient); err != nil {
- panic(err)
- }
- s.initMids()
- go s.loadBlacklist()
- return s
- }
- // Ping ping service
- func (s *Service) Ping(c context.Context) (err error) {
- if err = s.dao.Ping(c); err != nil {
- log.Error("s.dao.Ping error(%v)", err)
- }
- return
- }
- func (s *Service) initMids() {
- tmp := make(map[int64]struct{}, len(s.c.Rule.NoNoticeMids))
- for _, id := range s.c.Rule.NoNoticeMids {
- tmp[id] = struct{}{}
- }
- s.noNoticeMids = tmp
- }
- func (s *Service) realName(c context.Context, mid int64) (profile *accmdl.Profile, err error) {
- var reply *accwar.ProfileReply
- if reply, err = s.accClient.Profile3(c, &accwar.MidReq{Mid: mid}); err != nil || reply == nil {
- log.Error("s.accClient.Profile3(%d) error(%v)", mid, err)
- return
- }
- profile = reply.Profile
- if !s.c.Rule.RealNameOn {
- return
- }
- if profile.Identification == 0 && profile.TelStatus == 0 {
- err = ecode.UserCheckNoPhone
- return
- }
- if profile.Identification == 0 && profile.TelStatus == 2 {
- err = ecode.UserCheckInvalidPhone
- return
- }
- return
- }
- func (s *Service) privacyCheck(c context.Context, vmid int64, field string) (err error) {
- privacy := s.privacy(c, vmid)
- if value, ok := privacy[field]; !ok || value != _defaultPrivacy {
- err = ecode.SpaceNoPrivacy
- return
- }
- return
- }
- // loadBlacklist load spack blacklist
- func (s *Service) loadBlacklist() {
- for {
- time.Sleep(time.Duration(conf.Conf.Rule.BlackFre))
- s.Blacklist(context.Background())
- }
- }
|