go-common/app/admin/main/reply/service/service.go
2019-04-22 18:49:16 +08:00

83 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}