Initial commit

This commit is contained in:
Donny
2019-04-22 20:46:32 +08:00
commit 49ab8aadd1
25441 changed files with 4055000 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
load(
"@io_bazel_rules_go//proto:def.bzl",
"go_proto_library",
)
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
proto_library(
name = "api_proto",
srcs = ["api.proto"],
tags = ["automanaged"],
deps = [
"@com_google_protobuf//:empty_proto",
"@gogo_special_proto//github.com/gogo/protobuf/gogoproto",
],
)
go_proto_library(
name = "api_go_proto",
compilers = ["@io_bazel_rules_go//proto:gogofast_grpc"],
importpath = "go-common/app/service/main/thumbup/api",
proto = ":api_proto",
tags = ["automanaged"],
deps = [
"//library/time:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@io_bazel_rules_go//proto/wkt:empty_go_proto",
],
)
go_library(
name = "go_default_library",
srcs = ["client.go"],
embed = [":api_go_proto"],
importpath = "go-common/app/service/main/thumbup/api",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/rpc/warden:go_default_library",
"//library/time:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@io_bazel_rules_go//proto/wkt:empty_go_proto",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_x_net//context:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,247 @@
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;
}

View File

@@ -0,0 +1,25 @@
package api
import (
"context"
"fmt"
"go-common/library/net/rpc/warden"
"google.golang.org/grpc"
)
// AppID .
const AppID = "community.service.thumbup"
// NewClient new grpc client
func NewClient(cfg *warden.ClientConfig, opts ...grpc.DialOption) (ThumbupClient, error) {
client := warden.NewClient(cfg, opts...)
cc, err := client.Dial(context.Background(), fmt.Sprintf("discovery://default/%s", AppID))
if err != nil {
return nil, err
}
return NewThumbupClient(cc), nil
}
//go:generate $GOPATH/src/go-common/app/tool/warden/protoc.sh