go-common/app/interface/main/history/server/grpc/server.go
2019-04-22 18:49:16 +08:00

212 lines
5.1 KiB
Go

// Package grpc generate by warden_gen
package grpc
import (
"context"
pb "go-common/app/interface/main/history/api/grpc"
"go-common/app/interface/main/history/model"
service "go-common/app/interface/main/history/service"
"go-common/library/net/rpc/warden"
)
// New History warden rpc server
func New(c *warden.ServerConfig, svr *service.Service) *warden.Server {
ws := warden.NewServer(c)
pb.RegisterHistoryServer(ws.Server(), &server{svr})
ws, err := ws.Start()
if err != nil {
panic(err)
}
return ws
}
type server struct {
svr *service.Service
}
var _ pb.HistoryServer = &server{}
// AddHistory add hisotry progress into hbase.
func (s *server) AddHistory(ctx context.Context, req *pb.AddHistoryReq) (*pb.AddHistoryReply, error) {
tp, err := model.MustCheckBusiness(req.H.Business)
if err != nil {
return nil, err
}
h := &model.History{
Mid: req.H.Mid,
Aid: req.H.Aid,
Sid: req.H.Sid,
Epid: req.H.Epid,
TP: tp,
Business: req.H.Business,
STP: int8(req.H.Stp),
Cid: req.H.Cid,
DT: int8(req.H.Dt),
Pro: req.H.Pro,
Unix: req.H.Unix,
}
return nil, s.svr.AddHistory(ctx, req.Mid, req.Rtime, h)
}
// Progress get view progress from cache/hbase.
func (s *server) Progress(ctx context.Context, req *pb.ProgressReq) (*pb.ProgressReply, error) {
histories, err := s.svr.Progress(ctx, req.Mid, req.Aids)
if err != nil {
return nil, err
}
reply := &pb.ProgressReply{Res: make(map[int64]*pb.ModelHistory)}
for k, v := range histories {
reply.Res[k] = &pb.ModelHistory{
Mid: v.Mid,
Aid: v.Aid,
Sid: v.Sid,
Epid: v.Epid,
Business: v.Business,
Stp: int32(v.STP),
Cid: v.Cid,
Dt: int32(v.DT),
Pro: v.Pro,
Unix: v.Unix,
}
}
return reply, nil
}
// Position get view progress from cache/hbase.
func (s *server) Position(ctx context.Context, req *pb.PositionReq) (*pb.PositionReply, error) {
tp, err := model.MustCheckBusiness(req.Business)
if err != nil {
return nil, err
}
h, err := s.svr.Position(ctx, req.Mid, req.Aid, tp)
if err != nil {
return nil, err
}
reply := &pb.PositionReply{
Res: &pb.ModelHistory{
Mid: h.Mid,
Aid: h.Aid,
Sid: h.Sid,
Epid: h.Epid,
Business: h.Business,
Stp: int32(h.STP),
Cid: h.Cid,
Dt: int32(h.DT),
Pro: h.Pro,
Unix: h.Unix,
},
}
return reply, err
}
// ClearHistory clear user's historys.
func (s *server) ClearHistory(ctx context.Context, req *pb.ClearHistoryReq) (*pb.ClearHistoryReply, error) {
var tps []int8
for _, b := range req.Businesses {
tp, err := model.MustCheckBusiness(b)
if err != nil {
return nil, err
}
tps = append(tps, tp)
}
return nil, s.svr.ClearHistory(ctx, req.Mid, tps)
}
// Histories return the user all av history.
func (s *server) Histories(ctx context.Context, req *pb.HistoriesReq) (*pb.HistoriesReply, error) {
tp, err := model.MustCheckBusiness(req.Business)
if err != nil {
return nil, err
}
resources, err := s.svr.Histories(ctx, req.Mid, tp, int(req.Pn), int(req.Ps))
if err != nil {
return nil, err
}
reply := &pb.HistoriesReply{}
for _, v := range resources {
reply.Res = append(reply.Res,
&pb.ModelResource{
Mid: v.Mid,
Oid: v.Oid,
Sid: v.Sid,
Epid: v.Epid,
Business: v.Business,
Stp: int32(v.STP),
Cid: v.Cid,
Dt: int32(v.DT),
Pro: v.Pro,
Unix: v.Unix,
})
}
return reply, nil
}
// HistoryCursor return the user all av history.
func (s *server) HistoryCursor(ctx context.Context, req *pb.HistoryCursorReq) (*pb.HistoryCursorReply, error) {
tp, err := model.MustCheckBusiness(req.Business)
if err != nil {
return nil, err
}
var tps []int8
for _, b := range req.Businesses {
t, er := model.MustCheckBusiness(b)
if er != nil {
return nil, er
}
tps = append(tps, t)
}
resources, err := s.svr.HistoryCursor(ctx, req.Mid, req.Max, req.ViewAt, int(req.Ps), tp, tps, req.Ip)
if err != nil {
return nil, err
}
reply := &pb.HistoryCursorReply{}
for _, v := range resources {
reply.Res = append(reply.Res,
&pb.ModelResource{
Mid: v.Mid,
Oid: v.Oid,
Sid: v.Sid,
Epid: v.Epid,
Business: v.Business,
Stp: int32(v.STP),
Cid: v.Cid,
Dt: int32(v.DT),
Pro: v.Pro,
Unix: v.Unix,
})
}
return reply, nil
}
// Delete .
func (s *server) Delete(ctx context.Context, req *pb.DeleteReq) (*pb.DeleteReply, error) {
var his []*model.History
for _, b := range req.His {
tp, err := model.MustCheckBusiness(b.Business)
if err != nil {
return nil, err
}
h := &model.History{
Mid: b.Mid,
Aid: b.Aid,
Sid: b.Sid,
Epid: b.Epid,
TP: tp,
Business: b.Business,
STP: int8(b.Stp),
Cid: b.Cid,
DT: int8(b.Dt),
Pro: b.Pro,
Unix: b.Unix,
}
his = append(his, h)
}
return nil, s.svr.Delete(ctx, req.Mid, his)
}
// FlushHistory flush to hbase from cache.
func (s *server) FlushHistory(ctx context.Context, req *pb.FlushHistoryReq) (*pb.FlushHistoryReply, error) {
return nil, s.svr.FlushHistory(ctx, req.Mids, req.Stime)
}