142 lines
4.0 KiB
Go
142 lines
4.0 KiB
Go
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
|
|
}
|