132 lines
4.2 KiB
Go
132 lines
4.2 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go-common/app/service/main/thumbup/model"
|
|
"go-common/library/net/rpc"
|
|
)
|
|
|
|
const (
|
|
_like = "RPC.Like"
|
|
_likeWithStats = "RPC.LikeWithStats"
|
|
_hasLike = "RPC.HasLike"
|
|
_stats = "RPC.Stats"
|
|
_userLikes = "RPC.UserLikes"
|
|
_userDislikes = "RPC.UserDislikes"
|
|
_itemLikes = "RPC.ItemLikes"
|
|
_itemDislikes = "RPC.ItemDislikes"
|
|
_statsWithLike = "RPC.StatsWithLike"
|
|
_userTotalLike = "RPC.UserTotalLike"
|
|
_updateCount = "RPC.UpdateCount"
|
|
_rawStats = "RPC.RawStats"
|
|
)
|
|
|
|
const (
|
|
_appid = "community.service.thumbup"
|
|
)
|
|
|
|
var (
|
|
// _noArg = &struct{}{}
|
|
_noReply = &struct{}{}
|
|
)
|
|
|
|
//go:generate mockgen -source thumbup.go -destination mock.go -package client
|
|
|
|
// ThumbupRPC rpc interface
|
|
type ThumbupRPC interface {
|
|
Like(c context.Context, arg *model.ArgLike) (err error)
|
|
HasLike(c context.Context, arg *model.ArgHasLike) (res map[int64]int8, err error)
|
|
Stats(c context.Context, arg *model.ArgStats) (res map[int64]*model.Stats, err error)
|
|
UserLikes(c context.Context, arg *model.ArgUserLikes) (res []*model.ItemLikeRecord, err error)
|
|
UserDislikes(c context.Context, arg *model.ArgUserLikes) (res []*model.ItemLikeRecord, err error)
|
|
ItemLikes(c context.Context, arg *model.ArgItemLikes) (res []*model.UserLikeRecord, err error)
|
|
ItemDislikes(c context.Context, arg *model.ArgItemLikes) (res []*model.UserLikeRecord, err error)
|
|
StatsWithLike(c context.Context, arg *model.ArgStatsWithLike) (res map[int64]*model.StatsWithLike, err error)
|
|
UserTotalLike(c context.Context, arg *model.ArgUserLikes) (res *model.UserTotalLike, err error)
|
|
}
|
|
|
|
// Service struct info.
|
|
type Service struct {
|
|
client *rpc.Client2
|
|
}
|
|
|
|
// New new service instance and return.
|
|
func New(c *rpc.ClientConfig) (s *Service) {
|
|
s = &Service{}
|
|
s.client = rpc.NewDiscoveryCli(_appid, c)
|
|
return
|
|
}
|
|
|
|
// Like add like/dislike
|
|
func (s *Service) Like(c context.Context, arg *model.ArgLike) (err error) {
|
|
err = s.client.Call(c, _like, arg, _noReply)
|
|
return
|
|
}
|
|
|
|
// LikeWithStats add like/dislike and return the stats info
|
|
func (s *Service) LikeWithStats(ctx context.Context, arg *model.ArgLike) (res *model.Stats, err error) {
|
|
err = s.client.Call(ctx, _likeWithStats, arg, &res)
|
|
return
|
|
}
|
|
|
|
// HasLike query user has liked something
|
|
func (s *Service) HasLike(c context.Context, arg *model.ArgHasLike) (res map[int64]int8, err error) {
|
|
err = s.client.Call(c, _hasLike, arg, &res)
|
|
return
|
|
}
|
|
|
|
// Stats return stats message
|
|
func (s *Service) Stats(c context.Context, arg *model.ArgStats) (res map[int64]*model.Stats, err error) {
|
|
err = s.client.Call(c, _stats, arg, &res)
|
|
return
|
|
}
|
|
|
|
// UserLikes user likes list
|
|
func (s *Service) UserLikes(c context.Context, arg *model.ArgUserLikes) (res []*model.ItemLikeRecord, err error) {
|
|
err = s.client.Call(c, _userLikes, arg, &res)
|
|
return
|
|
}
|
|
|
|
// UserDislikes user dislikes list
|
|
func (s *Service) UserDislikes(c context.Context, arg *model.ArgUserLikes) (res []*model.ItemLikeRecord, err error) {
|
|
err = s.client.Call(c, _userDislikes, arg, &res)
|
|
return
|
|
}
|
|
|
|
// ItemLikes item likes list
|
|
func (s *Service) ItemLikes(c context.Context, arg *model.ArgItemLikes) (res []*model.UserLikeRecord, err error) {
|
|
err = s.client.Call(c, _itemLikes, arg, &res)
|
|
return
|
|
}
|
|
|
|
// ItemDislikes item dislikes list
|
|
func (s *Service) ItemDislikes(c context.Context, arg *model.ArgItemLikes) (res []*model.UserLikeRecord, err error) {
|
|
err = s.client.Call(c, _itemDislikes, arg, &res)
|
|
return
|
|
}
|
|
|
|
// StatsWithLike return stats and like state
|
|
func (s *Service) StatsWithLike(c context.Context, arg *model.ArgStatsWithLike) (res map[int64]*model.StatsWithLike, err error) {
|
|
err = s.client.Call(c, _statsWithLike, arg, &res)
|
|
return
|
|
}
|
|
|
|
// UserTotalLike user item list with total count
|
|
func (s *Service) UserTotalLike(c context.Context, arg *model.ArgUserLikes) (res *model.UserTotalLike, err error) {
|
|
err = s.client.Call(c, _userTotalLike, arg, &res)
|
|
return
|
|
}
|
|
|
|
// UpdateCount update count
|
|
func (s *Service) UpdateCount(c context.Context, arg *model.ArgUpdateCount) (err error) {
|
|
err = s.client.Call(c, _updateCount, arg, _noReply)
|
|
return
|
|
}
|
|
|
|
// RawStats get stat changes
|
|
func (s *Service) RawStats(c context.Context, arg *model.ArgRawStats) (res model.RawStats, err error) {
|
|
err = s.client.Call(c, _rawStats, arg, &res)
|
|
return
|
|
}
|