12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package service
- import (
- "context"
- "fmt"
- "go-common/app/admin/main/reply/conf"
- "go-common/app/admin/main/reply/dao"
- artrpc "go-common/app/interface/openplatform/article/rpc/client"
- accrpc "go-common/app/service/main/account/api"
- arcrpc "go-common/app/service/main/archive/api/gorpc"
- rlrpc "go-common/app/service/main/relation/rpc/client"
- thumbup "go-common/app/service/main/thumbup/api"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/rpc/warden"
- "go-common/library/sync/pipeline/fanout"
- )
- // Service is a service.
- type Service struct {
- conf *conf.Config
- dao *dao.Dao
- httpClient *bm.Client
- accSrv accrpc.AccountClient
- arcSrv *arcrpc.Service2
- articleSrv *artrpc.Service
- cache *fanout.Fanout
- thumbupClient thumbup.ThumbupClient
- relationSvc *rlrpc.Service
- // 特殊admin,针对大忽悠事件消息通知
- ads map[string]struct{}
- // 特殊稿件,针对大忽悠时间 不让删评论
- oids map[int64]int32
- // mark folded or unmark folded worker
- marker *fanout.Fanout
- // del cache or add cache worker
- cacheOperater *fanout.Fanout
- }
- // New new a service and return.
- func New(c *conf.Config) (s *Service) {
- s = &Service{
- conf: c,
- dao: dao.New(c),
- httpClient: bm.NewClient(c.HTTPClient),
- arcSrv: arcrpc.New2(c.RPCClient2.Archive),
- articleSrv: artrpc.New(c.RPCClient2.Article),
- cache: fanout.New("cache", fanout.Worker(1), fanout.Buffer(1024*10)),
- relationSvc: rlrpc.New(c.RPCClient2.Relation),
- marker: fanout.New("marker", fanout.Worker(1), fanout.Buffer(1024*10)),
- cacheOperater: fanout.New("cacheOp", fanout.Worker(1), fanout.Buffer(1024*10)),
- }
- accSrv, err := accrpc.NewClient(c.AccountClient)
- if err != nil {
- panic(err)
- }
- s.accSrv = accSrv
- cc, err := warden.NewConn(fmt.Sprintf("discovery://default/%s", thumbup.AppID))
- if err != nil {
- panic(err)
- }
- s.thumbupClient = thumbup.NewThumbupClient(cc)
- ads := make(map[string]struct{})
- for _, ID := range c.Reply.AdminName {
- ads[ID] = struct{}{}
- }
- s.ads = ads
- oids := make(map[int64]int32)
- for i, oid := range c.Reply.Oids {
- oids[oid] = c.Reply.Tps[i]
- }
- s.oids = oids
- return
- }
- // Ping check service is ok.
- func (s *Service) Ping(c context.Context) (err error) {
- return s.dao.Ping(c)
- }
|