syntax = "proto3"; package community.service.thumbup.v1; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/empty.proto"; option go_package = "api"; option (gogoproto.goproto_getters_all) = false; service Thumbup { // 点赞接口 rpc Like(LikeReq) returns(LikeReply); // 查询计数接口 rpc Stats(StatsReq) returns(StatsReply); // 批量查询计数接口 rpc MultiStats(MultiStatsReq) returns(MultiStatsReply); // 查询是否点赞接口 rpc HasLike(HasLikeReq) returns (HasLikeReply); // 用户对业务的点赞列表 rpc UserLikes(UserLikesReq) returns(UserLikesReply); // 对象的点赞人列表 rpc ItemLikes(ItemLikesReq) returns(ItemLikesReply); // 修改计数的值 rpc UpdateCount(UpdateCountReq) returns(.google.protobuf.Empty); // 查询原始计数 未修改的值 rpc RawStat(RawStatReq) returns(RawStatReply); } enum Action { // The first value represents the default and must be == 0. ACTION_UNSPECIFIED = 0; ACTION_LIKE = 1; ACTION_CANCEL_LIKE = 2; ACTION_DISLIKE = 3; ACTION_CANCEL_DISLIKE = 4; } enum State { // The first value represents the default and must be == 0. STATE_UNSPECIFIED = 0; STATE_LIKE = 1; STATE_DISLIKE = 2; } message LikeReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // mid int64 mid = 2 [(gogoproto.moretags) = 'form:"mid" validate:"required,min=1"']; // up 主mid int64 up_mid = 3 [(gogoproto.moretags) = 'form:"up_mid"']; // 来源id int64 origin_id = 4 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 5 [(gogoproto.moretags) = 'form:"message_id" validate:"required"', (gogoproto.customname) = "MessageID"]; Action action = 6 [(gogoproto.moretags) = 'form:"action_id" validate:"required"']; // ip string ip = 7 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message StatState { // 来源id int64 origin_id = 1 [(gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 2 [(gogoproto.customname) = "MessageID"]; // 点赞数 int64 like_number = 3; // 点踩数 int64 dislike_number = 4; // 点赞状态 State like_state = 5; } message LikeReply { // 来源id int64 origin_id = 1 [(gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 2 [(gogoproto.customname) = "MessageID"]; // 点赞数 int64 like_number = 3; // 点踩数 int64 dislike_number = 4; } message StatsReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // 来源id int64 origin_id = 2 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id repeated int64 message_ids = 3 [(gogoproto.moretags) = 'form:"message_ids" validate:"required"']; // mid 可选参数 不需要返回like_state不要填 int64 mid = 4 [(gogoproto.moretags) = 'form:"mid"']; // ip string ip = 5 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message StatsReply { map stats = 1; } message HasLikeReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // 对象id repeated int64 message_ids = 2 [(gogoproto.moretags) = 'form:"message_ids" validate:"required"']; // mid int64 mid = 3 [(gogoproto.moretags) = 'form:"mid" validate:"required"']; // ip string ip = 4 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message HasLikeReply { map states = 1; } message UserLikeState { // mid int64 mid = 1; // 点赞时间 int64 time = 2[(gogoproto.casttype) = "go-common/library/time.Time"]; State state = 3; } message UserLikesReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // mid int64 mid = 2 [(gogoproto.moretags) = 'form:"mid" validate:"required"']; // pn int64 pn = 3 [(gogoproto.moretags) = 'form:"pn" validate:"required,min=1"']; // ps int64 ps = 4 [(gogoproto.moretags) = 'form:"ps" validate:"required,min=1"']; // ip string ip = 5 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message ItemRecord { // 对象id int64 message_id = 1 [(gogoproto.customname) = "MessageID"]; // 点赞时间 int64 time = 2[(gogoproto.casttype) = "go-common/library/time.Time"]; } message UserLikesReply { int64 total = 1; repeated ItemRecord items = 2; } message UserRecord { // mid int64 mid = 1; // 点赞时间 int64 time = 2[(gogoproto.casttype) = "go-common/library/time.Time"]; } message ItemLikesReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // 来源id int64 origin_id = 2 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 3 [(gogoproto.moretags) = 'form:"message_id" validate:"required"', (gogoproto.customname) = "MessageID"]; // last_mid 上个mid 去重用 int64 last_mid = 4 [(gogoproto.moretags) = 'form:"last_mid" json:"last_mid"']; // pn int64 pn = 5 [(gogoproto.moretags) = 'form:"pn" validate:"required,min=1"']; // ps int64 ps = 6 [(gogoproto.moretags) = 'form:"ps" validate:"required,min=1"']; // ip string ip = 7 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message ItemLikesReply { repeated UserRecord users = 1; } message UpdateCountReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // 来源id int64 origin_id = 2 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 3 [(gogoproto.moretags) = 'form:"message_id" validate:"required"', (gogoproto.customname) = "MessageID"]; // 点赞数修改(增量) int64 like_change = 4; // 点踩数修改(增量) int64 dislike_change = 5; // 操作人 string operator = 6; // ip string ip = 7 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message RawStatReq { // 业务 string business = 1 [(gogoproto.moretags) = 'form:"business" validate:"required"']; // 来源id int64 origin_id = 2 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 3 [(gogoproto.moretags) = 'form:"message_id" validate:"required"', (gogoproto.customname) = "MessageID"]; // ip string ip = 4 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message RawStatReply { // 来源id int64 origin_id = 1 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 2 [(gogoproto.moretags) = 'form:"message_id" validate:"required"', (gogoproto.customname) = "MessageID"]; // 点赞数 int64 like_number = 3; // 点踩数 int64 dislike_number = 4; // 点赞数修改(增量) int64 like_change = 5; // 点踩数修改(增量) int64 dislike_change = 6; } message MultiStatsReq { message Record { // 来源id int64 origin_id = 1 [(gogoproto.moretags) = 'form:"origin_id"', (gogoproto.customname) = "OriginID"]; // 对象id int64 message_id = 2 [(gogoproto.moretags) = 'form:"message_id" validate:"required"', (gogoproto.customname) = "MessageID"]; } message Business { repeated Record records = 1; } // mid int64 mid = 1 [(gogoproto.moretags) = 'form:"mid" validate:"required"']; // business and records map business = 2; // ip string ip = 3 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"]; } message MultiStatsReply { message Records { map records = 1; } // business and records map business = 1; }