2019-04-22 02:59:20 +00:00

248 lines
8.0 KiB
Protocol Buffer

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<int64, StatState> 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<int64, UserLikeState> 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<string, Business> business = 2;
// ip
string ip = 3 [(gogoproto.jsontag) = "ip", (gogoproto.customname) = "IP"];
}
message MultiStatsReply {
message Records {
map<int64, StatState> records = 1;
}
// business and records
map<string, Records> business = 1;
}