83 lines
2.3 KiB
Go
83 lines
2.3 KiB
Go
|
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)
|
|||
|
}
|