You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
5.1 KiB
211 lines
5.1 KiB
// 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) |
|
}
|
|
|