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,62 @@
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/xlottery/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",
],
embed = [":v1_go_proto"],
importpath = "go-common/app/service/live/xlottery/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,342 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: 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.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
var PathCapsuleGetDetail = "/live.xlottery.v1.Capsule/get_detail"
var PathCapsuleOpenCapsule = "/live.xlottery.v1.Capsule/open_capsule"
var PathCapsuleGetCoinList = "/live.xlottery.v1.Capsule/get_coin_list"
var PathCapsuleUpdateCoinConfig = "/live.xlottery.v1.Capsule/update_coin_config"
var PathCapsuleUpdateCoinStatus = "/live.xlottery.v1.Capsule/update_coin_status"
var PathCapsuleDeleteCoin = "/live.xlottery.v1.Capsule/delete_coin"
var PathCapsuleGetPoolList = "/live.xlottery.v1.Capsule/get_pool_list"
var PathCapsuleUpdatePool = "/live.xlottery.v1.Capsule/update_pool"
var PathCapsuleDeletePool = "/live.xlottery.v1.Capsule/delete_pool"
var PathCapsuleUpdatePoolStatus = "/live.xlottery.v1.Capsule/update_pool_status"
var PathCapsuleGetPoolPrize = "/live.xlottery.v1.Capsule/get_pool_prize"
var PathCapsuleGetPrizeType = "/live.xlottery.v1.Capsule/get_prize_type"
var PathCapsuleGetPrizeExpire = "/live.xlottery.v1.Capsule/get_prize_expire"
var PathCapsuleUpdatePoolPrize = "/live.xlottery.v1.Capsule/update_pool_prize"
var PathCapsuleDeletePoolPrize = "/live.xlottery.v1.Capsule/delete_pool_prize"
var PathCapsuleGetCapsuleInfo = "/live.xlottery.v1.Capsule/get_capsule_info"
var PathCapsuleOpenCapsuleByType = "/live.xlottery.v1.Capsule/open_capsule_by_type"
var PathCapsuleGetCouponList = "/live.xlottery.v1.Capsule/get_coupon_list"
var PathStormStart = "/live.xlottery.v1.Storm/Start"
var PathStormCanStart = "/live.xlottery.v1.Storm/CanStart"
var PathStormJoin = "/live.xlottery.v1.Storm/Join"
var PathStormCheck = "/live.xlottery.v1.Storm/Check"
// =================
// Capsule Interface
// =================
type CapsuleBMServer interface {
GetDetail(ctx context.Context, req *CapsuleGetDetailReq) (resp *CapsuleGetDetailResp, err error)
OpenCapsule(ctx context.Context, req *CapsuleOpenCapsuleReq) (resp *CapsuleOpenCapsuleResp, err error)
GetCoinList(ctx context.Context, req *GetCoinListReq) (resp *GetCoinListResp, err error)
UpdateCoinConfig(ctx context.Context, req *UpdateCoinConfigReq) (resp *UpdateCoinConfigResp, err error)
UpdateCoinStatus(ctx context.Context, req *UpdateCoinStatusReq) (resp *UpdateCoinStatusResp, err error)
DeleteCoin(ctx context.Context, req *DeleteCoinReq) (resp *DeleteCoinResp, err error)
GetPoolList(ctx context.Context, req *GetPoolListReq) (resp *GetPoolListResp, err error)
UpdatePool(ctx context.Context, req *UpdatePoolReq) (resp *UpdatePoolResp, err error)
DeletePool(ctx context.Context, req *DeletePoolReq) (resp *DeletePoolResp, err error)
UpdatePoolStatus(ctx context.Context, req *UpdatePoolStatusReq) (resp *UpdatePoolStatusResp, err error)
GetPoolPrize(ctx context.Context, req *GetPoolPrizeReq) (resp *GetPoolPrizeResp, err error)
GetPrizeType(ctx context.Context, req *GetPrizeTypeReq) (resp *GetPrizeTypeResp, err error)
GetPrizeExpire(ctx context.Context, req *GetPrizeExpireReq) (resp *GetPrizeExpireResp, err error)
UpdatePoolPrize(ctx context.Context, req *UpdatePoolPrizeReq) (resp *UpdatePoolPrizeResp, err error)
DeletePoolPrize(ctx context.Context, req *DeletePoolPrizeReq) (resp *DeletePoolPrizeResp, err error)
GetCapsuleInfo(ctx context.Context, req *CapsuleGetCapsuleInfoReq) (resp *CapsuleGetCapsuleInfoResp, err error)
OpenCapsuleByType(ctx context.Context, req *CapsuleOpenCapsuleByTypeReq) (resp *CapsuleOpenCapsuleByTypeResp, err error)
GetCouponList(ctx context.Context, req *CapsuleGetCouponListReq) (resp *CapsuleGetCouponListResp, err error)
}
var v1CapsuleSvc CapsuleBMServer
func capsuleGetDetail(c *bm.Context) {
p := new(CapsuleGetDetailReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetDetail(c, p)
c.JSON(resp, err)
}
func capsuleOpenCapsule(c *bm.Context) {
p := new(CapsuleOpenCapsuleReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.OpenCapsule(c, p)
c.JSON(resp, err)
}
func capsuleGetCoinList(c *bm.Context) {
p := new(GetCoinListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetCoinList(c, p)
c.JSON(resp, err)
}
func capsuleUpdateCoinConfig(c *bm.Context) {
p := new(UpdateCoinConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.UpdateCoinConfig(c, p)
c.JSON(resp, err)
}
func capsuleUpdateCoinStatus(c *bm.Context) {
p := new(UpdateCoinStatusReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.UpdateCoinStatus(c, p)
c.JSON(resp, err)
}
func capsuleDeleteCoin(c *bm.Context) {
p := new(DeleteCoinReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.DeleteCoin(c, p)
c.JSON(resp, err)
}
func capsuleGetPoolList(c *bm.Context) {
p := new(GetPoolListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetPoolList(c, p)
c.JSON(resp, err)
}
func capsuleUpdatePool(c *bm.Context) {
p := new(UpdatePoolReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.UpdatePool(c, p)
c.JSON(resp, err)
}
func capsuleDeletePool(c *bm.Context) {
p := new(DeletePoolReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.DeletePool(c, p)
c.JSON(resp, err)
}
func capsuleUpdatePoolStatus(c *bm.Context) {
p := new(UpdatePoolStatusReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.UpdatePoolStatus(c, p)
c.JSON(resp, err)
}
func capsuleGetPoolPrize(c *bm.Context) {
p := new(GetPoolPrizeReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetPoolPrize(c, p)
c.JSON(resp, err)
}
func capsuleGetPrizeType(c *bm.Context) {
p := new(GetPrizeTypeReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetPrizeType(c, p)
c.JSON(resp, err)
}
func capsuleGetPrizeExpire(c *bm.Context) {
p := new(GetPrizeExpireReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetPrizeExpire(c, p)
c.JSON(resp, err)
}
func capsuleUpdatePoolPrize(c *bm.Context) {
p := new(UpdatePoolPrizeReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.UpdatePoolPrize(c, p)
c.JSON(resp, err)
}
func capsuleDeletePoolPrize(c *bm.Context) {
p := new(DeletePoolPrizeReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.DeletePoolPrize(c, p)
c.JSON(resp, err)
}
func capsuleGetCapsuleInfo(c *bm.Context) {
p := new(CapsuleGetCapsuleInfoReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetCapsuleInfo(c, p)
c.JSON(resp, err)
}
func capsuleOpenCapsuleByType(c *bm.Context) {
p := new(CapsuleOpenCapsuleByTypeReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.OpenCapsuleByType(c, p)
c.JSON(resp, err)
}
func capsuleGetCouponList(c *bm.Context) {
p := new(CapsuleGetCouponListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1CapsuleSvc.GetCouponList(c, p)
c.JSON(resp, err)
}
// RegisterCapsuleBMServer Register the blademaster route
func RegisterCapsuleBMServer(e *bm.Engine, server CapsuleBMServer) {
v1CapsuleSvc = server
e.GET("/live.xlottery.v1.Capsule/get_detail", capsuleGetDetail)
e.GET("/live.xlottery.v1.Capsule/open_capsule", capsuleOpenCapsule)
e.GET("/live.xlottery.v1.Capsule/get_coin_list", capsuleGetCoinList)
e.GET("/live.xlottery.v1.Capsule/update_coin_config", capsuleUpdateCoinConfig)
e.GET("/live.xlottery.v1.Capsule/update_coin_status", capsuleUpdateCoinStatus)
e.GET("/live.xlottery.v1.Capsule/delete_coin", capsuleDeleteCoin)
e.GET("/live.xlottery.v1.Capsule/get_pool_list", capsuleGetPoolList)
e.GET("/live.xlottery.v1.Capsule/update_pool", capsuleUpdatePool)
e.GET("/live.xlottery.v1.Capsule/delete_pool", capsuleDeletePool)
e.GET("/live.xlottery.v1.Capsule/update_pool_status", capsuleUpdatePoolStatus)
e.GET("/live.xlottery.v1.Capsule/get_pool_prize", capsuleGetPoolPrize)
e.GET("/live.xlottery.v1.Capsule/get_prize_type", capsuleGetPrizeType)
e.GET("/live.xlottery.v1.Capsule/get_prize_expire", capsuleGetPrizeExpire)
e.GET("/live.xlottery.v1.Capsule/update_pool_prize", capsuleUpdatePoolPrize)
e.GET("/live.xlottery.v1.Capsule/delete_pool_prize", capsuleDeletePoolPrize)
e.GET("/live.xlottery.v1.Capsule/get_capsule_info", capsuleGetCapsuleInfo)
e.GET("/live.xlottery.v1.Capsule/open_capsule_by_type", capsuleOpenCapsuleByType)
e.GET("/live.xlottery.v1.Capsule/get_coupon_list", capsuleGetCouponList)
}
// ===============
// Storm Interface
// ===============
// 节奏风暴 服务
type StormBMServer interface {
// 开启节奏风暴
Start(ctx context.Context, req *StartStormReq) (resp *StartStormResp, err error)
// 节奏风暴是否能开启
CanStart(ctx context.Context, req *StartStormReq) (resp *CanStartStormResp, err error)
// 加入节奏风暴
Join(ctx context.Context, req *JoinStormReq) (resp *JoinStormResp, err error)
// 检查是否加入节奏风暴
Check(ctx context.Context, req *CheckStormReq) (resp *CheckStormResp, err error)
}
var v1StormSvc StormBMServer
func stormStart(c *bm.Context) {
p := new(StartStormReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1StormSvc.Start(c, p)
c.JSON(resp, err)
}
func stormCanStart(c *bm.Context) {
p := new(StartStormReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1StormSvc.CanStart(c, p)
c.JSON(resp, err)
}
func stormJoin(c *bm.Context) {
p := new(JoinStormReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1StormSvc.Join(c, p)
c.JSON(resp, err)
}
func stormCheck(c *bm.Context) {
p := new(CheckStormReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1StormSvc.Check(c, p)
c.JSON(resp, err)
}
// RegisterStormBMServer Register the blademaster route
func RegisterStormBMServer(e *bm.Engine, server StormBMServer) {
v1StormSvc = server
e.GET("/live.xlottery.v1.Storm/Start", stormStart)
e.GET("/live.xlottery.v1.Storm/CanStart", stormCanStart)
e.GET("/live.xlottery.v1.Storm/Join", stormJoin)
e.GET("/live.xlottery.v1.Storm/Check", stormCheck)
}

View File

@@ -0,0 +1,836 @@
<!-- package=live.xlottery.v1 -->
- [/live.xlottery.v1.Capsule/get_detail](#live.xlottery.v1.Capsuleget_detail)
- [/live.xlottery.v1.Capsule/open_capsule](#live.xlottery.v1.Capsuleopen_capsule)
- [/live.xlottery.v1.Capsule/get_coin_list](#live.xlottery.v1.Capsuleget_coin_list)
- [/live.xlottery.v1.Capsule/update_coin_config](#live.xlottery.v1.Capsuleupdate_coin_config)
- [/live.xlottery.v1.Capsule/update_coin_status](#live.xlottery.v1.Capsuleupdate_coin_status)
- [/live.xlottery.v1.Capsule/delete_coin](#live.xlottery.v1.Capsuledelete_coin)
- [/live.xlottery.v1.Capsule/get_pool_list](#live.xlottery.v1.Capsuleget_pool_list)
- [/live.xlottery.v1.Capsule/update_pool](#live.xlottery.v1.Capsuleupdate_pool)
- [/live.xlottery.v1.Capsule/delete_pool](#live.xlottery.v1.Capsuledelete_pool)
- [/live.xlottery.v1.Capsule/update_pool_status](#live.xlottery.v1.Capsuleupdate_pool_status)
- [/live.xlottery.v1.Capsule/get_pool_prize](#live.xlottery.v1.Capsuleget_pool_prize)
- [/live.xlottery.v1.Capsule/get_prize_type](#live.xlottery.v1.Capsuleget_prize_type)
- [/live.xlottery.v1.Capsule/get_prize_expire](#live.xlottery.v1.Capsuleget_prize_expire)
- [/live.xlottery.v1.Capsule/update_pool_prize](#live.xlottery.v1.Capsuleupdate_pool_prize)
- [/live.xlottery.v1.Capsule/delete_pool_prize](#live.xlottery.v1.Capsuledelete_pool_prize)
- [/live.xlottery.v1.Capsule/get_capsule_info](#live.xlottery.v1.Capsuleget_capsule_info)
- [/live.xlottery.v1.Capsule/open_capsule_by_type](#live.xlottery.v1.Capsuleopen_capsule_by_type)
- [/live.xlottery.v1.Capsule/get_coupon_list](#live.xlottery.v1.Capsuleget_coupon_list)
## /live.xlottery.v1.Capsule/get_detail
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户uid|
|from|否|string| 来源 h5 web room|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 普通扭蛋信息
"normal": {
"status": true,
// 扭蛋数量
"coin": 0,
// 变化值
"change": 0,
// 进度
"progress": {
// 当前进度
"now": 0,
// 最大进度
"max": 0
},
// 规则
"rule": "",
// 奖品列表
"gift": [
{
// 礼物名称
"name": "",
// 礼物图片
"image": "",
// 用法
"usage": {
// 用法描述
"text": "",
// 跳转链接
"url": ""
},
// web礼物图片
"web_image": "",
// mobile礼物图片
"mobile_image": ""
}
],
// 历史获奖列表
"list": [
{
// 数量
"num": 0,
// 礼物名称
"gift": "",
// 时间
"date": "",
// 用户名
"name": ""
}
]
},
// 梦幻扭蛋信息若梦幻扭蛋status=false则无coin、change、process、gift、list字段
"colorful": {
"status": true,
// 扭蛋数量
"coin": 0,
// 变化值
"change": 0,
// 进度
"progress": {
// 当前进度
"now": 0,
// 最大进度
"max": 0
},
// 规则
"rule": "",
// 奖品列表
"gift": [
{
// 礼物名称
"name": "",
// 礼物图片
"image": "",
// 用法
"usage": {
// 用法描述
"text": "",
// 跳转链接
"url": ""
},
// web礼物图片
"web_image": "",
// mobile礼物图片
"mobile_image": ""
}
],
// 历史获奖列表
"list": [
{
// 数量
"num": 0,
// 礼物名称
"gift": "",
// 时间
"date": "",
// 用户名
"name": ""
}
]
}
}
}
```
## /live.xlottery.v1.Capsule/open_capsule
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户uid|
|type|否|string| 扭蛋类型|
|count|否|integer| 扭的个数|
|platform|否|string||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 扭蛋币扣除状态
"status": true,
// 奖品文案
"text": [
""
],
// 是否包含实物奖品
"isEntity": true,
// 用户扭蛋币拥有状态
"info": {
// 普通扭蛋币
"normal": {
// 拥有的币
"coin": 0,
// 变化值
"change": 0,
// 进度
"progress": {
// 当前进度
"now": 0,
// 最大进度
"max": 0
}
},
// 梦幻扭蛋币
"colorful": {
// 拥有的币
"coin": 0,
// 变化值
"change": 0,
// 进度
"progress": {
// 当前进度
"now": 0,
// 最大进度
"max": 0
}
}
},
// 头衔? 恒为空字符串, 忽略之
"showTitle": "",
// 奖品列表
"awards": [
{
// 奖品名字
"name": "",
// 奖品数量
"num": 0,
// 奖品 X 数量
"text": "",
// 奖品图片
"img": "",
// 奖品用法说明
"usage": {
// 用法描述
"text": "",
// 跳转链接
"url": ""
},
// web礼物图片
"web_image": "",
// mobile礼物图片
"mobile_image": ""
}
]
}
}
```
## /live.xlottery.v1.Capsule/get_coin_list
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|page|是|integer||
|page_size|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"total": 0,
"total_page": 0,
"list": [
{
"id": 0,
"title": "",
"change_num": 0,
"start_time": 0,
"end_time": 0,
"status": 0,
"gift_type": 0,
"gift_config": "",
"area_ids": [
{
"parent_id": 0,
"is_all": 0,
"list": [
0
]
}
]
}
]
}
}
```
## /live.xlottery.v1.Capsule/update_coin_config
### 无标题
#### 方法GET
#### 请求参数
```javascript
{
"id": 0,
"title": "",
"change_num": 0,
"start_time": 0,
"end_time": 0,
"status": 0,
"gift_type": 0,
"gift_ids": [
0
],
"area_ids": [
{
"parent_id": 0,
"is_all": 0,
"list": [
0
]
}
]
}
```
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/update_coin_status
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer||
|status|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/delete_coin
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/get_pool_list
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|page|是|integer||
|page_size|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"total": 0,
"total_page": 0,
"list": [
{
"id": 0,
"coin_id": 0,
"title": "",
"coin_title": "",
"start_time": 0,
"end_time": 0,
"status": 0,
"rule": ""
}
]
}
}
```
## /live.xlottery.v1.Capsule/update_pool
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer||
|coin_id|是|integer||
|title|是|string||
|start_time|是|integer||
|end_time|是|integer||
|rule|是|string||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/delete_pool
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/update_pool_status
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer||
|status|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/get_pool_prize
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|pool_id|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"id": 0,
"pool_id": 0,
"type": 0,
"num": 0,
"object_id": 0,
"web_url": "",
"mobile_url": "",
"description": "",
"jump_url": "",
"pro_type": 0,
"chance": "",
"loop": 0,
"limit": 0,
"name": "",
"weight": 0,
"white_uids": [
0
],
"expire": 0
}
]
}
}
```
## /live.xlottery.v1.Capsule/get_prize_type
### 无标题
#### 方法GET
#### 请求参数
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"type": 0,
"name": ""
}
]
}
}
```
## /live.xlottery.v1.Capsule/get_prize_expire
### 无标题
#### 方法GET
#### 请求参数
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"expire": 0,
"name": ""
}
]
}
}
```
## /live.xlottery.v1.Capsule/update_pool_prize
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer||
|pool_id|否|integer||
|type|是|integer||
|num|是|integer||
|object_id|否|integer||
|expire|否|integer||
|web_url|是|string||
|mobile_url|是|string||
|description|是|string||
|jump_url|否|string||
|pro_type|是|integer||
|chance|否|integer||
|loop|否|integer||
|limit|否|integer||
|weight|否|integer||
|white_uids|否|多个integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true,
"prize_id": 0
}
}
```
## /live.xlottery.v1.Capsule/delete_pool_prize
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"status": true
}
}
```
## /live.xlottery.v1.Capsule/get_capsule_info
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户uid|
|type|否|string| 类型|
|from|否|string| 来源 h5 web room|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 扭蛋数量
"coin": 0,
// 规则
"rule": "",
// 奖品列表,包含数量
"gift_list": [
{
// 礼物id
"id": 0,
// 礼物名称
"name": "",
// 礼物数量
"num": 0,
// 权重
"weight": 0,
// 礼物图片
"web_url": "",
// 礼物图片
"mobile_url": "",
// 用法
"usage": {
// 用法描述
"text": "",
// 跳转链接
"url": ""
},
// 奖品类型 2 头衔
"type": 0,
// 过期时间
"expire": ""
}
],
// 奖品列表,不包含数量,同一类别只有一条
"gift_filter": [
{
// 礼物id
"id": 0,
// 礼物名称
"name": "",
// 礼物图片
"web_url": "",
// 礼物图片
"mobile_url": "",
// 用法
"usage": {
// 用法描述
"text": "",
// 跳转链接
"url": ""
}
}
]
}
}
```
## /live.xlottery.v1.Capsule/open_capsule_by_type
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户uid|
|type|否|string| 扭蛋类型week周星|
|count|否|integer| 扭的个数 1 10 100|
|platform|否|string| 平台|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 扭蛋币扣除状态
"status": true,
// 是否包含实物奖品
"isEntity": true,
// 用户扭蛋币拥有状态
"info": {
// 拥有的币
"coin": 0
},
// 奖品列表
"awards": [
{
// 奖品id
"id": 0,
// 奖品名字
"name": "",
// 奖品数量
"num": 0,
// 奖品 X 数量
"text": "",
// 礼物图片
"web_url": "",
// 礼物图片
"mobile_url": "",
// 奖品用法说明
"usage": {
// 用法描述
"text": "",
// 跳转链接
"url": ""
},
// 奖品权重
"weight": 0,
// 奖品类型 2 头衔
"type": 0,
// 过期时间
"expire": ""
}
],
// 奖品列表
"text": [
""
]
}
}
```
## /live.xlottery.v1.Capsule/get_coupon_list
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"uid": 0,
// 中奖时间
"award_time": "",
// 奖品名称
"award_name": "",
// 券码
"award_code": "",
// 0 重试 1 成功
"status": 0,
// 上次重试时间
"retry_time": ""
}
]
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,647 @@
syntax = "proto3";
package live.xlottery.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service Capsule {
rpc get_detail(CapsuleGetDetailReq) returns (CapsuleGetDetailResp);
rpc open_capsule(CapsuleOpenCapsuleReq) returns (CapsuleOpenCapsuleResp);
rpc get_coin_list(GetCoinListReq) returns (GetCoinListResp);
rpc update_coin_config(UpdateCoinConfigReq) returns (UpdateCoinConfigResp);
rpc update_coin_status(UpdateCoinStatusReq) returns (UpdateCoinStatusResp);
rpc delete_coin(DeleteCoinReq) returns (DeleteCoinResp);
rpc get_pool_list(GetPoolListReq) returns (GetPoolListResp);
rpc update_pool(UpdatePoolReq) returns (UpdatePoolResp);
rpc delete_pool(DeletePoolReq) returns (DeletePoolResp);
rpc update_pool_status(UpdatePoolStatusReq) returns (UpdatePoolStatusResp);
rpc get_pool_prize(GetPoolPrizeReq) returns (GetPoolPrizeResp);
rpc get_prize_type (GetPrizeTypeReq) returns (GetPrizeTypeResp);
rpc get_prize_expire (GetPrizeExpireReq) returns (GetPrizeExpireResp);
rpc update_pool_prize(UpdatePoolPrizeReq) returns (UpdatePoolPrizeResp);
rpc delete_pool_prize(DeletePoolPrizeReq) returns (DeletePoolPrizeResp);
rpc get_capsule_info (CapsuleGetCapsuleInfoReq) returns (CapsuleGetCapsuleInfoResp);
rpc open_capsule_by_type (CapsuleOpenCapsuleByTypeReq) returns (CapsuleOpenCapsuleByTypeResp);
rpc get_coupon_list (CapsuleGetCouponListReq) returns (CapsuleGetCouponListResp);
}
message CapsuleGetDetailReq {
// 用户uid
int64 uid = 1 [(gogoproto.jsontag) = "uid"];
// 来源 h5 web room
string from = 2 [(gogoproto.jsontag) = "from"];
}
message Usage {
// 用法描述
string text = 1 [(gogoproto.jsontag) = "text"];
// 跳转链接
string url = 2 [(gogoproto.jsontag) = "url"];
}
message Progress {
// 当前进度
int64 now = 1 [(gogoproto.jsontag) = "now"];
// 最大进度
int64 max = 2 [(gogoproto.jsontag) = "max"];
}
message CapsuleGetDetailResp {
// 普通扭蛋信息
CapsuleInfo normal = 1 [(gogoproto.jsontag) = "normal"];
// 梦幻扭蛋信息若梦幻扭蛋status=false则无coin、change、process、gift、list字段
CapsuleInfo colorful = 2 [(gogoproto.jsontag) = "colorful"];
message Gift {
// 礼物名称
string name = 2 [(gogoproto.jsontag) = "name"];
// 礼物图片
string image = 3 [(gogoproto.jsontag) = "image"];
// 用法
Usage usage = 4 [(gogoproto.jsontag) = "usage"];
// web礼物图片
string web_image = 5 [(gogoproto.jsontag) = "web_image"];
// mobile礼物图片
string mobile_image = 6 [(gogoproto.jsontag) = "mobile_image"];
}
message List {
// 数量
int64 num = 1 [(gogoproto.jsontag) = "num"];
// 礼物名称
string gift = 2 [(gogoproto.jsontag) = "gift"];
// 时间
string date = 3 [(gogoproto.jsontag) = "date"];
// 用户名
string name = 4 [(gogoproto.jsontag) = "name"];
}
message CapsuleInfo {
//
bool status = 1 [(gogoproto.jsontag) = "status"];
// 扭蛋数量
int64 coin = 2 [(gogoproto.jsontag) = "coin"];
// 变化值
int64 change = 3 [(gogoproto.jsontag) = "change"];
// 进度
Progress progress = 4 [(gogoproto.jsontag) = "progress"];
// 规则
string rule = 5 [(gogoproto.jsontag) = "rule"];
// 奖品列表
repeated Gift gift = 6 [(gogoproto.jsontag) = "gift"];
// 历史获奖列表
repeated List list = 7 [(gogoproto.jsontag) = "list"];
}
}
message CapsuleOpenCapsuleReq {
// 用户uid
int64 uid = 1 [(gogoproto.jsontag) = "uid"];
// 扭蛋类型
string type = 2 [(gogoproto.jsontag) = "type"];
// 扭的个数
int64 count = 3 [(gogoproto.jsontag) = "count"];
string platform = 4 [(gogoproto.jsontag) = "platform"];
}
message CapsuleOpenCapsuleResp {
// 扭蛋币扣除状态
bool status = 1 [(gogoproto.jsontag) = "status"];
// 奖品文案
repeated string text = 2 [(gogoproto.jsontag) = "text"];
// 是否包含实物奖品
bool isEntity = 3 [(gogoproto.jsontag) = "isEntity"];
// 用户扭蛋币拥有状态
Info info = 4 [(gogoproto.jsontag) = "info"];
// 头衔? 恒为空字符串, 忽略之
string showTitle = 5 [(gogoproto.jsontag) = "showTitle"];
// 奖品列表
repeated Award awards = 6 [(gogoproto.jsontag) = "awards"];
message CapsuleInfo {
// 拥有的币
int64 coin = 1 [(gogoproto.jsontag) = "coin"];
// 变化值
int64 change = 2 [(gogoproto.jsontag) = "change"];
// 进度
Progress progress = 3 [(gogoproto.jsontag) = "progress"];
}
message Info {
// 普通扭蛋币
CapsuleInfo normal = 1 [(gogoproto.jsontag) = "normal"];
// 梦幻扭蛋币
CapsuleInfo colorful = 2 [(gogoproto.jsontag) = "colorful"];
}
message Award {
// 奖品名字
string name = 2 [(gogoproto.jsontag) = "name"];
// 奖品数量
int64 num = 3 [(gogoproto.jsontag) = "num"];
// 奖品 X 数量
string text = 4 [(gogoproto.jsontag) = "text"];
// 奖品图片
string img = 5 [(gogoproto.jsontag) = "img"];
// 奖品用法说明
Usage usage = 6 [(gogoproto.jsontag) = "usage"];
// web礼物图片
string web_image = 7 [(gogoproto.jsontag) = "web_image"];
// mobile礼物图片
string mobile_image = 8 [(gogoproto.jsontag) = "mobile_image"];
}
}
message CapsuleGetCapsuleInfoReq {
// 用户uid
int64 uid = 1 [(gogoproto.jsontag) = "uid"];
// 类型
string type = 2 [(gogoproto.jsontag) = "type"];
// 来源 h5 web room
string from = 3 [(gogoproto.jsontag) = "from"];
}
message CapsuleGetCapsuleInfoResp {
message GiftList {
// 礼物id
int64 id = 1 [(gogoproto.jsontag) = "id"];
// 礼物名称
string name = 2 [(gogoproto.jsontag) = "name"];
// 礼物数量
int64 num = 3 [(gogoproto.jsontag) = "num"];
// 权重
int64 weight = 4 [(gogoproto.jsontag) = "weight"];
// 礼物图片
string web_url = 5 [(gogoproto.jsontag) = "web_url"];
// 礼物图片
string mobile_url = 6 [(gogoproto.jsontag) = "mobile_url"];
// 用法
Usage usage = 7 [(gogoproto.jsontag) = "usage"];
// 奖品类型 2 头衔
int64 type = 8 [(gogoproto.jsontag) = "type"];
// 过期时间
string expire = 9 [(gogoproto.jsontag) = "expire"];
}
message GiftFilter {
// 礼物id
int64 id = 1 [(gogoproto.jsontag) = "id"];
// 礼物名称
string name = 2 [(gogoproto.jsontag) = "name"];
// 礼物图片
string web_url = 3 [(gogoproto.jsontag) = "web_url"];
// 礼物图片
string mobile_url = 4 [(gogoproto.jsontag) = "mobile_url"];
// 用法
Usage usage = 5 [(gogoproto.jsontag) = "usage"];
}
// 扭蛋数量
int64 coin = 1 [(gogoproto.jsontag) = "coin"];
// 规则
string rule = 2 [(gogoproto.jsontag) = "rule"];
// 奖品列表,包含数量
repeated GiftList gift_list = 3 [(gogoproto.jsontag) = "gift_list"];
// 奖品列表,不包含数量,同一类别只有一条
repeated GiftFilter gift_filter = 4 [(gogoproto.jsontag) = "gift_filter"];
}
message CapsuleOpenCapsuleByTypeReq {
// 用户uid
int64 uid = 1 [(gogoproto.jsontag) = "uid"];
// 扭蛋类型week周星
string type = 2 [(gogoproto.jsontag) = "type"];
// 扭的个数 1 10 100
int64 count = 3 [(gogoproto.jsontag) = "count"];
// 平台
string platform = 4 [(gogoproto.jsontag) = "platform"];
}
message CapsuleOpenCapsuleByTypeResp {
message CapsuleInfo {
// 拥有的币
int64 coin = 1 [(gogoproto.jsontag) = "coin"];
}
message Award {
// 奖品id
int64 id = 1 [(gogoproto.jsontag) = "id"];
// 奖品名字
string name = 2 [(gogoproto.jsontag) = "name"];
// 奖品数量
int64 num = 3 [(gogoproto.jsontag) = "num"];
// 奖品 X 数量
string text = 4 [(gogoproto.jsontag) = "text"];
// 礼物图片
string web_url = 5 [(gogoproto.jsontag) = "web_url"];
// 礼物图片
string mobile_url = 6 [(gogoproto.jsontag) = "mobile_url"];
// 奖品用法说明
Usage usage = 7 [(gogoproto.jsontag) = "usage"];
// 奖品权重
int64 weight = 8 [(gogoproto.jsontag) = "weight"];
// 奖品类型 2 头衔
int64 type = 9 [(gogoproto.jsontag) = "type"];
// 过期时间
string expire = 10 [(gogoproto.jsontag) = "expire"];
}
// 扭蛋币扣除状态
bool status = 1 [(gogoproto.jsontag) = "status"];
// 是否包含实物奖品
bool isEntity = 2 [(gogoproto.jsontag) = "isEntity"];
// 用户扭蛋币拥有状态
CapsuleInfo info = 3 [(gogoproto.jsontag) = "info"];
// 奖品列表
repeated Award awards = 4 [(gogoproto.jsontag) = "awards"];
// 奖品列表
repeated string text = 5 [(gogoproto.jsontag) = "text"];
}
message GetCoinListReq{
int64 page = 1 [(gogoproto.jsontag) = "page", (gogoproto.moretags) = 'form:"page" validate:"required"']; //页码从1开始
int64 page_size = 2 [(gogoproto.jsontag) = "page_size", (gogoproto.moretags) = 'form:"page_size" validate:"required"'];//页面的大小
}
message GetCoinListResp{
int64 total = 1 [(gogoproto.jsontag) = "total"]; //
int64 total_page = 2 [(gogoproto.jsontag) = "total_page"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List{
int64 id = 1 [(gogoproto.jsontag) = "id"];//扭蛋ID
string title = 2 [(gogoproto.jsontag) = "title"];//名称 普通扭蛋, 梦幻扭蛋
int64 change_num = 3 [(gogoproto.jsontag) = "change_num"];//转化数量
int64 start_time = 4 [(gogoproto.jsontag) = "start_time"];//开始时间
int64 end_time = 5 [(gogoproto.jsontag) = "end_time"];//结束时间
int64 status = 6 [(gogoproto.jsontag) = "status"]; //状态 0为下线1为上线
int64 gift_type = 7 [(gogoproto.jsontag) = "gift_type"];//获得方式 1为所有瓜子道具2为所有金瓜子道具3为指定道具ID
string gift_config = 8 [(gogoproto.jsontag) = "gift_config"];// 道具的ID
repeated AreaIds area_ids = 9 [(gogoproto.jsontag) = "area_ids"];//活动分区
message AreaIds{
int64 parent_id = 1 [(gogoproto.jsontag) = "parent_id"];// 父分区ID
int64 is_all = 2 [(gogoproto.jsontag) = "is_all"];// 是否全选
repeated int64 list = 3 [(gogoproto.jsontag) = "list"];// 子分区ID
}
}
}
message UpdateCoinConfigReq{
int64 id = 1 [(gogoproto.jsontag) = "id",(gogoproto.moretags) = 'form:"id"'];//扭蛋ID
string title = 2 [(gogoproto.jsontag) = "title", (gogoproto.moretags) = 'form:"title" validate:"required"'];//名称 普通扭蛋, 梦幻扭蛋
int64 change_num = 3 [(gogoproto.jsontag) = "change_num", (gogoproto.moretags) = 'form:"change_num" validate:"required"'];//转化数量
int64 start_time = 4 [(gogoproto.jsontag) = "start_time", (gogoproto.moretags) = 'form:"start_time" validate:"required"'];//开始时间
int64 end_time = 5 [(gogoproto.jsontag) = "end_time", (gogoproto.moretags) = 'form:"end_time" validate:"required"'];//结束时间
int64 status = 6 [(gogoproto.jsontag) = "status", (gogoproto.moretags) = 'form:"status" validate:"required"']; //状态 0为下线1为上线
int64 gift_type = 7 [(gogoproto.jsontag) = "gift_type", (gogoproto.moretags) = 'form:"gift_type" validate:"required"'];//获得方式 1为所有瓜子道具2为所有金瓜子道具3为指定道具ID
repeated int64 gift_ids = 8 [(gogoproto.jsontag) = "gift_ids", (gogoproto.moretags) = 'form:"gift_ids"'];// 道具的ID
repeated AreaIds area_ids = 9 [(gogoproto.jsontag) = "area_ids", (gogoproto.moretags) = 'form:"area_ids" validate:"required"'];//活动分区
message AreaIds{
int64 parent_id = 1 [(gogoproto.jsontag) = "parent_id", (gogoproto.moretags) = 'form:"parent_id" validate:"required"'];// 父分区ID
int64 is_all = 2 [(gogoproto.jsontag) = "is_all", (gogoproto.moretags) = 'form:"is_all"'];// 是否全选
repeated int64 list = 3 [(gogoproto.jsontag) = "list", (gogoproto.moretags) = 'form:"list" validate:"required"'];// 子分区ID
}
}
message UpdateCoinConfigResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message UpdateCoinStatusReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id" validate:"required"']; //扭蛋币id
int64 status = 2 [(gogoproto.jsontag) = "status", (gogoproto.moretags) = 'form:"status"'];//状态 0为下线1为上线
}
message UpdateCoinStatusResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message DeleteCoinReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id" validate:"required"'];//扭蛋币id
}
message DeleteCoinResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message GetPoolListReq{
int64 page = 1 [(gogoproto.jsontag) = "page", (gogoproto.moretags) = 'form:"page" validate:"required"'];//页码
int64 page_size = 2 [(gogoproto.jsontag) = "page_size", (gogoproto.moretags) = 'form:"page_size" validate:"required"'];//页面的大小
}
message GetPoolListResp{
int64 total = 1 [(gogoproto.jsontag) = "total"];
int64 total_page = 2 [(gogoproto.jsontag) = "total_page"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List{
int64 id = 1 [(gogoproto.jsontag) = "id"];// 奖池id
int64 coin_id = 2 [(gogoproto.jsontag) = "coin_id"];// 扭蛋名称
string title = 3 [(gogoproto.jsontag) = "title"];//奖池名称
string coin_title = 8 [(gogoproto.jsontag) = "coin_title"];//扭蛋币名称
int64 start_time = 4 [(gogoproto.jsontag) = "start_time"];//开始时间
int64 end_time = 5 [(gogoproto.jsontag) = "end_time"];//结束时间
int64 status = 6 [(gogoproto.jsontag) = "status"];//状态 0为下线1为上线
string rule = 7 [(gogoproto.jsontag) = "rule"];//描述
}
}
message UpdatePoolReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id"'];// 奖池id
int64 coin_id = 2 [(gogoproto.jsontag) = "coin_id", (gogoproto.moretags) = 'form:"coin_id" validate:"required"'];// 扭蛋名称
string title = 3 [(gogoproto.jsontag) = "title", (gogoproto.moretags) = 'form:"title" validate:"required"'];//奖池名称
int64 start_time = 4 [(gogoproto.jsontag) = "start_time", (gogoproto.moretags) = 'form:"start_time" validate:"required"'];//开始时间
int64 end_time = 5 [(gogoproto.jsontag) = "end_time", (gogoproto.moretags) = 'form:"end_time" validate:"required"'];//结束时间
string rule = 6 [(gogoproto.jsontag) = "rule", (gogoproto.moretags) = 'form:"rule" validate:"required"'];//描述
}
message UpdatePoolResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message DeletePoolReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id" validate:"required"'];//奖池id
}
message DeletePoolResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message UpdatePoolStatusReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id" validate:"required"'];//奖池id
int64 status = 2 [(gogoproto.jsontag) = "status", (gogoproto.moretags) = 'form:"status"'];//状态 0为未上线1为上线
}
message UpdatePoolStatusResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message GetPoolPrizeReq{
int64 pool_id = 1 [(gogoproto.jsontag) = "pool_id", (gogoproto.moretags) = 'form:"pool_id" validate:"required"'];//奖池id
}
message GetPoolPrizeResp{
repeated List list = 1 [(gogoproto.jsontag) = "list"];
message List{
int64 id = 1 [(gogoproto.jsontag) = "id"]; //奖励id
int64 pool_id = 2 [(gogoproto.jsontag) = "pool_id"]; //奖池id
int64 type = 3 [(gogoproto.jsontag) = "type"]; //奖品类型 1为道具2为头衔3为经验原石4为经验曜石5为贤者之石6为小号小电视7为舰长守护8为提督守护9为总督守护
int64 num = 4 [(gogoproto.jsontag) = "num"]; //数量
int64 object_id = 5 [(gogoproto.jsontag) = "object_id"]; //奖品真实id
string web_url = 6 [(gogoproto.jsontag) = "web_url"]; //web端图片
string mobile_url = 7 [(gogoproto.jsontag) = "mobile_url"]; //移动端图片
string description = 8 [(gogoproto.jsontag) = "description"]; //奖励描述
string jump_url = 9 [(gogoproto.jsontag) = "jump_url"]; //跳转地址
int64 pro_type = 10 [(gogoproto.jsontag) = "pro_type"]; //概率类型 1为普通2为固定每天3为固定每周
string chance = 11 [(gogoproto.jsontag) = "chance"]; //概率3位小数''为另一种概率模式
int64 loop = 12 [(gogoproto.jsontag) = "loop"]; //循环的数量 0为另一种概率模式
int64 limit = 13 [(gogoproto.jsontag) = "limit"]; //限制数量 0为另一种概率模式
string name = 14 [(gogoproto.jsontag) = "name"]; // 奖励名称
int64 weight = 15 [(gogoproto.jsontag) = "weight"];
repeated int64 white_uids = 16 [(gogoproto.jsontag) = "white_uids"];
int64 expire = 17 [(gogoproto.jsontag) = "expire"];
}
}
message UpdatePoolPrizeReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id"'];//奖励id
int64 pool_id = 2 [(gogoproto.jsontag) = "pool_id", (gogoproto.moretags) = 'form:"pool_id"'];//奖池id
int64 type = 3 [(gogoproto.jsontag) = "type", (gogoproto.moretags) = 'form:"type" validate:"required"'];//奖品类型 1为道具2为头衔3为经验原石4为经验曜石5为贤者之石6为小号小电视7为舰长守护8为提督守护9为总督守护
int64 num = 4 [(gogoproto.jsontag) = "num", (gogoproto.moretags) = 'form:"num" validate:"required"'];//数量
int64 object_id = 5 [(gogoproto.jsontag) = "object_id", (gogoproto.moretags) = 'form:"object_id"'];//奖品真实id
int64 expire = 6 [(gogoproto.jsontag) = "expire", (gogoproto.moretags) = 'form:"expire"'];//过期时间
string web_url = 7 [(gogoproto.jsontag) = "web_url", (gogoproto.moretags) = 'form:"web_url" validate:"required"'];//web端图片
string mobile_url = 8 [(gogoproto.jsontag) = "mobile_url", (gogoproto.moretags) = 'form:"mobile_url" validate:"required"'];//移动端图片
string description = 9 [(gogoproto.jsontag) = "description", (gogoproto.moretags) = 'form:"description" validate:"required"'];//奖励描述
string jump_url = 10 [(gogoproto.jsontag) = "jump_url", (gogoproto.moretags) = 'form:"jump_url"'];//跳转地址
int64 pro_type = 11 [(gogoproto.jsontag) = "pro_type", (gogoproto.moretags) = 'form:"pro_type" validate:"required"'];//概率类型 1为普通2为固定每天3为固定每周
int64 chance = 12 [(gogoproto.jsontag) = "chance", (gogoproto.moretags) = 'form:"chance"'];//概率3位小数''为另一种概率模式
int64 loop = 13 [(gogoproto.jsontag) = "loop", (gogoproto.moretags) = 'form:"loop"'];//循环的数量 0为另一种概率模式
int64 limit = 14 [(gogoproto.jsontag) = "limit", (gogoproto.moretags) = 'form:"limit"'];//限制数量 0为另一种概率模式
int64 weight = 15 [(gogoproto.jsontag) = "weight"];
repeated int64 white_uids = 16 [(gogoproto.jsontag) = "white_uids"];
}
message UpdatePoolPrizeResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
int64 prize_id = 2 [(gogoproto.jsontag) = "prize_id"];
}
message DeletePoolPrizeReq{
int64 id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = 'form:"id" validate:"required"'];//奖励id
}
message DeletePoolPrizeResp{
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message GetPrizeTypeReq {
}
message GetPrizeTypeResp {
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
//
int64 type = 1 [(gogoproto.jsontag) = "type"];
//
string name = 2 [(gogoproto.jsontag) = "name"];
}
}
message GetPrizeExpireReq {
}
message GetPrizeExpireResp {
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
//
int64 expire = 1 [(gogoproto.jsontag) = "expire"];
//
string name = 2 [(gogoproto.jsontag) = "name"];
}
}
// 节奏风暴 服务
service Storm {
// 开启节奏风暴
rpc Start(StartStormReq)returns(StartStormResp);
//节奏风暴是否能开启
rpc CanStart(StartStormReq)returns(CanStartStormResp);
//加入节奏风暴
rpc Join (JoinStormReq)returns(JoinStormResp);
//检查是否加入节奏风暴
rpc Check (CheckStormReq)returns(CheckStormResp);
}
message StartStormReq {
// 用户id
int64 uid = 1;
// 主播id
int64 ruid = 2;
//房间号
int64 roomid = 3;
//是否开启敏感词过滤
bool useShield = 4;
//道具数量
int64 num = 5;
//节奏内容id
int64 beatid = 6;
//
int64 skipExternalCheck= 7;
}
message StartStormResp {
// 错误码
int32 code = 1;
// 错误信息
string msg = 2;
StartData start = 3;
}
message StartData {
//倒计时,秒
int32 time = 1;
//抽奖标识
int64 id = 2;
}
message CanStartStormResp {
// 错误码
int32 code = 1;
// 错误信息
string msg = 2;
//是否能开启节奏风暴
bool ret_status = 3;
}
message JoinStormReq {
//抽奖id
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
//房间id
int64 roomid = 2 [(gogoproto.moretags) = 'form:"roomid" '];
//弹幕颜色
string color = 3 [(gogoproto.moretags) = 'form:"color"'];
//userid
int64 mid = 4 [(gogoproto.moretags) = 'form:"mid"'];
//平台 webiosandroid
string platform = 5 [(gogoproto.moretags) = 'form:"platform"'];
//验证码标识
string captcha_token = 6 [(gogoproto.moretags) = 'form:"captcha_token"'];
//验证码明文
string captcha_phrase = 7 [(gogoproto.moretags) = 'form:"captcha_phrase"'];
}
message JoinStormResp {
// 错误码
int32 code = 1;
// 错误信息
string msg = 2;
// 加入成功返回数据
JoinData join = 3;
}
message JoinData {
//礼物id
int64 gift_id = 1 [(gogoproto.jsontag) = "gift_id"];
//标题
string title = 2 [(gogoproto.jsontag) = "title"];
//礼物web内容
string content = 3 [(gogoproto.jsontag) = "content"];
//礼物移动端内容
string mobile_content = 4 [(gogoproto.jsontag) = "mobile_content"];
//礼物图片
string gift_img = 5 [(gogoproto.jsontag) = "gift_img"];
//礼物数量
int64 gift_num = 6 [(gogoproto.jsontag) = "gift_num"];
//礼物名字
string gift_name = 7 [(gogoproto.jsontag) = "gift_name"];
}
message CheckStormReq {
//房间号
int64 roomid = 1 [(gogoproto.moretags) = 'form:"roomid" validate:"required"'];
//用户id
int64 uid = 2 [(gogoproto.moretags) = 'form:"uid" '];
}
message CheckStormResp {
// 错误码
int32 code = 1;
// 错误信息
string msg = 2;
CheckData check = 3;
}
message CheckData {
//用户id
int64 id = 1 [(gogoproto.jsontag) = "id"];
//房间号
int64 roomid = 2 [(gogoproto.jsontag) = "roomid"];
//数量
int64 num = 3 [(gogoproto.jsontag) = "num"];
//发送数量
string send_num = 4 [(gogoproto.jsontag) = "send_num"];
//结束时间戳
int64 time = 5 [(gogoproto.jsontag) = "time"];
//内容
string content = 6 [(gogoproto.jsontag) = "content"];
//是否已经加入
int32 hasJoin = 7 [(gogoproto.jsontag) = "hasJoin"]; //是否加入
//图片链接
string storm_gif = 8 [(gogoproto.jsontag) = "storm_gif"];
}
message CapsuleGetCouponListReq {
//
int64 uid = 1 [(gogoproto.jsontag) = "uid"];
}
message CapsuleGetCouponListResp {
message List {
//
int64 uid = 1 [(gogoproto.jsontag) = "uid"];
// 中奖时间
string award_time = 2 [(gogoproto.jsontag) = "award_time"];
// 奖品名称
string award_name = 3 [(gogoproto.jsontag) = "award_name"];
// 券码
string award_code = 4 [(gogoproto.jsontag) = "award_code"];
// 0 重试 1 成功
int64 status = 5 [(gogoproto.jsontag) = "status"];
// 上次重试时间
string retry_time = 6 [(gogoproto.jsontag) = "retry_time"];
}
repeated List list = 1 [(gogoproto.jsontag) = "list"];
}

View File

@@ -0,0 +1,175 @@
<!-- package=live.xlottery.v1 -->
- [/live.xlottery.v1.Storm/Start](#live.xlottery.v1.StormStart) 开启节奏风暴
- [/live.xlottery.v1.Storm/CanStart](#live.xlottery.v1.StormCanStart) 节奏风暴是否能开启
- [/live.xlottery.v1.Storm/Join](#live.xlottery.v1.StormJoin) 加入节奏风暴
- [/live.xlottery.v1.Storm/Check](#live.xlottery.v1.StormCheck) 检查是否加入节奏风暴
## /live.xlottery.v1.Storm/Start
### 开启节奏风暴
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户id|
|ruid|否|integer| 主播id|
|roomid|否|integer|房间号|
|useShield|否|bool|是否开启敏感词过滤|
|num|否|integer|道具数量|
|beatid|否|integer|节奏内容id|
|skipExternalCheck|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 错误码
"code": 0,
// 错误信息
"msg": "",
"start": {
// 倒计时,秒
"time": 0,
// 抽奖标识
"id": 0
}
}
}
```
## /live.xlottery.v1.Storm/CanStart
###节奏风暴是否能开启
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|否|integer| 用户id|
|ruid|否|integer| 主播id|
|roomid|否|integer|房间号|
|useShield|否|bool|是否开启敏感词过滤|
|num|否|integer|道具数量|
|beatid|否|integer|节奏内容id|
|skipExternalCheck|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 错误码
"code": 0,
// 错误信息
"msg": "",
// 是否能开启节奏风暴
"ret_status": true
}
}
```
## /live.xlottery.v1.Storm/Join
###加入节奏风暴
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer|抽奖id|
|roomid|否|integer|房间id|
|color|否|string|弹幕颜色 |
|mid|否|integer|userid |
|platform|否|string|平台 webiosandroid|
|captcha_token|否|string|验证码标识|
|captcha_phrase|否|string|验证码明文 |
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 错误码
"code": 0,
// 错误信息
"msg": "",
// 加入成功返回数据
"join": {
// 礼物id
"gift_id": 0,
// 标题
"title": "",
// 礼物web内容
"content": "",
// 礼物移动端内容
"mobile_content": "",
// 礼物图片
"gift_img": "",
// 礼物数量
"gift_num": 0,
// 礼物名字
"gift_name": ""
}
}
}
```
## /live.xlottery.v1.Storm/Check
###检查是否加入节奏风暴
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|roomid|是|integer|房间号|
|uid|否|integer|用户id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 错误码
"code": 0,
// 错误信息
"msg": "",
"check": {
// 用户id
"id": 0,
// 房间号
"roomid": 0,
// 数量
"num": 0,
// 发送数量
"send_num": "",
// 结束时间戳
"time": 0,
// 内容
"content": "",
// 是否已经加入
"hasJoin": 0,
// 图片链接
"storm_gif": ""
}
}
}
```

View File

@@ -0,0 +1,31 @@
package v1
import (
"context"
"go-common/library/net/rpc/warden"
"google.golang.org/grpc"
)
// AppID unique app id for service discovery
const AppID = "live.xlottery"
// Client grpc client for interface
type Client struct {
CapsuleClient
StormClient
}
// NewClient new lottery 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.CapsuleClient = NewCapsuleClient(conn)
cli.StormClient = NewStormClient(conn)
return cli, nil
}

View File

@@ -0,0 +1,4 @@
#! /bin/sh
# 在环境变量中设置好$GOPATH即可食用
cd $GOPATH/src/go-common/app/service/live/xlottery/api/grpc/v1
$GOPATH/src/go-common/app/tool/warden/protoc.sh