go-common/app/admin/main/reply/service/service.go

83 lines
2.3 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
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)
}