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.
141 lines
4.0 KiB
141 lines
4.0 KiB
package grpc |
|
|
|
import ( |
|
"context" |
|
|
|
pb "go-common/app/service/main/thumbup/api" |
|
"go-common/app/service/main/thumbup/model" |
|
"go-common/app/service/main/thumbup/service" |
|
"go-common/library/net/rpc/warden" |
|
|
|
"github.com/golang/protobuf/ptypes/empty" |
|
) |
|
|
|
// New Coin warden rpc server |
|
func New(c *warden.ServerConfig, svr *service.Service) *warden.Server { |
|
ws := warden.NewServer(c) |
|
pb.RegisterThumbupServer(ws.Server(), &server{s: svr}) |
|
ws, err := ws.Start() |
|
if err != nil { |
|
panic(err) |
|
} |
|
return ws |
|
} |
|
|
|
type server struct { |
|
s *service.Service |
|
} |
|
|
|
func (r server) Like(c context.Context, req *pb.LikeReq) (reply *pb.LikeReply, err error) { |
|
res, err := r.s.Like(c, req.Business, req.Mid, req.OriginID, req.MessageID, int8(req.Action), req.UpMid) |
|
reply = &pb.LikeReply{ |
|
OriginID: res.OriginID, |
|
MessageID: res.ID, |
|
LikeNumber: res.Likes, |
|
DislikeNumber: res.Dislikes, |
|
} |
|
return |
|
} |
|
|
|
func (r server) Stats(c context.Context, req *pb.StatsReq) (reply *pb.StatsReply, err error) { |
|
res, err := r.s.StatsWithLike(c, req.Business, req.Mid, req.OriginID, req.MessageIds) |
|
reply = &pb.StatsReply{Stats: map[int64]*pb.StatState{}} |
|
for name, item := range res { |
|
reply.Stats[name] = &pb.StatState{ |
|
OriginID: item.OriginID, |
|
MessageID: item.ID, |
|
LikeNumber: item.Likes, |
|
DislikeNumber: item.Dislikes, |
|
LikeState: pb.State(item.LikeState), |
|
} |
|
} |
|
return |
|
} |
|
|
|
func (r server) MultiStats(c context.Context, req *pb.MultiStatsReq) (reply *pb.MultiStatsReply, err error) { |
|
arg := &model.MultiBusiness{ |
|
Mid: req.Mid, |
|
Businesses: make(map[string][]*model.MultiBusinessItem), |
|
} |
|
for name, b := range req.Business { |
|
for _, i := range b.Records { |
|
arg.Businesses[name] = append(arg.Businesses[name], &model.MultiBusinessItem{ |
|
OriginID: i.OriginID, |
|
MessageID: i.MessageID, |
|
}) |
|
} |
|
} |
|
res, err := r.s.MultiStatsWithLike(c, arg) |
|
reply = &pb.MultiStatsReply{} |
|
if res != nil { |
|
reply.Business = make(map[string]*pb.MultiStatsReply_Records) |
|
for k, v := range res { |
|
items := &pb.MultiStatsReply_Records{ |
|
Records: make(map[int64]*pb.StatState), |
|
} |
|
for id, state := range v { |
|
items.Records[id] = &pb.StatState{ |
|
OriginID: state.OriginID, |
|
MessageID: state.ID, |
|
LikeNumber: state.Likes, |
|
DislikeNumber: state.Dislikes, |
|
LikeState: pb.State(state.LikeState), |
|
} |
|
} |
|
reply.Business[k] = items |
|
} |
|
} |
|
return |
|
} |
|
|
|
func (r server) HasLike(c context.Context, req *pb.HasLikeReq) (reply *pb.HasLikeReply, err error) { |
|
_, res, err := r.s.HasLike(c, req.Business, req.Mid, req.MessageIds) |
|
reply = &pb.HasLikeReply{States: res} |
|
return |
|
} |
|
|
|
func (r server) UserLikes(c context.Context, req *pb.UserLikesReq) (reply *pb.UserLikesReply, err error) { |
|
res, err := r.s.UserTotalLike(c, req.Business, req.Mid, int(req.Pn), int(req.Ps)) |
|
reply = &pb.UserLikesReply{} |
|
if res != nil { |
|
reply.Total = int64(res.Total) |
|
for _, item := range res.List { |
|
reply.Items = append(reply.Items, &pb.ItemRecord{ |
|
MessageID: item.MessageID, |
|
Time: item.Time, |
|
}) |
|
} |
|
} |
|
return |
|
} |
|
|
|
func (r server) ItemLikes(c context.Context, req *pb.ItemLikesReq) (reply *pb.ItemLikesReply, err error) { |
|
res, err := r.s.ItemLikes(c, req.Business, req.OriginID, req.MessageID, int(req.Pn), int(req.Ps), req.LastMid) |
|
reply = &pb.ItemLikesReply{} |
|
for _, item := range res { |
|
reply.Users = append(reply.Users, &pb.UserRecord{ |
|
Mid: item.Mid, |
|
Time: item.Time, |
|
}) |
|
} |
|
return |
|
} |
|
|
|
func (r server) UpdateCount(c context.Context, req *pb.UpdateCountReq) (reply *empty.Empty, err error) { |
|
reply = &empty.Empty{} |
|
err = r.s.UpdateCount(c, req.Business, req.OriginID, req.MessageID, req.LikeChange, req.DislikeChange, req.IP, req.Operator) |
|
return |
|
} |
|
|
|
func (r server) RawStat(c context.Context, req *pb.RawStatReq) (reply *pb.RawStatReply, err error) { |
|
res, err := r.s.RawStats(c, req.Business, req.OriginID, req.MessageID) |
|
reply = &pb.RawStatReply{ |
|
OriginID: res.OriginID, |
|
MessageID: res.ID, |
|
LikeNumber: res.Likes, |
|
DislikeNumber: res.Dislikes, |
|
LikeChange: res.LikesChange, |
|
DislikeChange: res.DislikesChange, |
|
} |
|
return |
|
}
|
|
|