Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
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 = "v1_proto",
srcs = ["api.proto"],
tags = ["automanaged"],
deps = ["@gogo_special_proto//github.com/gogo/protobuf/gogoproto"],
)
go_proto_library(
name = "v1_go_proto",
compilers = ["@io_bazel_rules_go//proto:gogofast_grpc"],
importpath = "go-common/app/service/live/recommend/api/grpc/v1",
proto = ":v1_proto",
tags = ["automanaged"],
deps = ["@com_github_gogo_protobuf//gogoproto:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = [
"api.bm.go",
"client.go",
"generate.go",
],
embed = [":v1_go_proto"],
importpath = "go-common/app/service/live/recommend/api/grpc/v1",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"//library/net/rpc/warden:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@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"],
)

View File

@@ -0,0 +1,71 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: api/grpc/v1/api.proto
/*
Package v1 is a generated blademaster stub package.
This code was generated with go-common/app/tool/bmgen/protoc-gen-bm v0.1.
It is generated from these files:
api/grpc/v1/api.proto
*/
package v1
import (
"context"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/binding"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
var _ binding.StructValidator
// ===================
// Recommend Interface
// ===================
type Recommend interface {
// 获取n个推荐, 得到的结果是在线的房间
// 去重,不会重复推荐
// 如果没有足够推荐的结果则返回空的结果,调用方需要补位
RandomRecsByUser(ctx context.Context, req *GetRandomRecReq) (resp *GetRandomRecResp, err error)
// 清空推荐缓存,清空推荐过的集合
ClearRecommendCache(ctx context.Context, req *ClearRecommendRequest) (resp *ClearRecommendResponse, err error)
}
var v1RecommendSvc Recommend
// @params GetRandomRecReq
// @router GET /xlive/recommend/v1/recommend/random_recs_by_user
// @response GetRandomRecResp
func recommendRandomRecsByUser(c *bm.Context) {
p := new(GetRandomRecReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1RecommendSvc.RandomRecsByUser(c, p)
c.JSON(resp, err)
}
// @params ClearRecommendRequest
// @router GET /xlive/recommend/v1/recommend/clear_recommend_cache
// @response ClearRecommendResponse
func recommendClearRecommendCache(c *bm.Context) {
p := new(ClearRecommendRequest)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1RecommendSvc.ClearRecommendCache(c, p)
c.JSON(resp, err)
}
// RegisterV1RecommendService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1RecommendService(e *bm.Engine, svc Recommend, midMap map[string]bm.HandlerFunc) {
v1RecommendSvc = svc
e.GET("/xlive/recommend/v1/recommend/random_recs_by_user", recommendRandomRecsByUser)
e.GET("/xlive/recommend/v1/recommend/clear_recommend_cache", recommendClearRecommendCache)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,41 @@
syntax = "proto3";
package live.recommend.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service Recommend {
// 获取n个推荐, 得到的结果是在线的房间
// 去重,不会重复推荐
// 如果没有足够推荐的结果则返回空的结果,调用方需要补位
rpc random_recs_by_user (GetRandomRecReq) returns (GetRandomRecResp);
// 清空推荐缓存,清空推荐过的集合
rpc clear_recommend_cache (ClearRecommendRequest) returns (ClearRecommendResponse);
}
message ClearRecommendRequest {
// 用户uid
int64 uid = 1 [(gogoproto.moretags) = 'validate:"gt=0"'];
}
message ClearRecommendResponse {
}
message GetRandomRecReq {
// 用户uid
int64 uid = 1 [(gogoproto.moretags) = 'validate:"gt=0"'];
// 获取数量
uint32 count = 2 [(gogoproto.moretags) = 'validate:"gt=0"'];
// room_id去重
repeated int64 exist_ids = 3;
}
message GetRandomRecResp {
// 返回数量
uint32 count = 1;
// 房间id
repeated int64 room_ids = 2;
}

View File

@@ -0,0 +1,48 @@
## 获取n个推荐, 得到的结果是在线的房间
去重,不会重复推荐
如果没有足够推荐的结果则返回空的结果,调用方需要补位
`GET http://api.live.bilibili.com/xlive/recommend/v1/recommend/random_recs_by_user`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户uid|
|count|否|integer| 获取数量|
|exist_ids|否|多个integer| room_id去重|
```json
{
"code": 0,
"message": "ok",
"data": {
// 返回数量
"count": 0,
// 房间id
"room_ids": [
0
]
}
}
```
## 清空推荐缓存,清空推荐过的集合
`GET http://api.live.bilibili.com/xlive/recommend/v1/recommend/clear_recommend_cache`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户uid|
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```

View File

@@ -0,0 +1,29 @@
package v1
import (
"context"
"google.golang.org/grpc"
"go-common/library/net/rpc/warden"
)
// AppID discovery id
const AppID = "live.recommend"
// Client recommend client
type Client struct {
RecommendClient
}
// NewClient new grpc client
func NewClient(cfg *warden.ClientConfig, opts ...grpc.DialOption) (*Client, error) {
client := warden.NewClient(cfg, opts...)
conn, err := client.Dial(context.Background(), "discovery://default/"+AppID)
if err != nil {
return nil, err
}
cli := &Client{}
cli.RecommendClient = NewRecommendClient(conn)
return cli, nil
}

View File

@@ -0,0 +1,3 @@
package v1
//go:generate bmgen --nobm