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,72 @@
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 = [
"capsule.proto",
"gaea.proto",
"payGoods.proto",
"payLive.proto",
"resource.proto",
"room.proto",
"upload.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/admin/live/live-admin/api/http/v1",
proto = ":v1_proto",
tags = ["automanaged"],
deps = ["@com_github_gogo_protobuf//gogoproto:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = [
"capsule.bm.go",
"gaea.bm.go",
"payGoods.bm.go",
"payLive.bm.go",
"resource.bm.go",
"room.bm.go",
"upload.bm.go",
],
embed = [":v1_go_proto"],
importpath = "go-common/app/admin/live/live-admin/api/http/v1",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto: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,253 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: capsule.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:
capsule.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 PathCapsuleGetCoinList = "/live.liveadmin.v1.Capsule/get_coin_list"
var PathCapsuleUpdateCoinConfig = "/live.liveadmin.v1.Capsule/update_coin_config"
var PathCapsuleUpdateCoinStatus = "/live.liveadmin.v1.Capsule/update_coin_status"
var PathCapsuleDeleteCoin = "/live.liveadmin.v1.Capsule/delete_coin"
var PathCapsuleGetPoolList = "/live.liveadmin.v1.Capsule/get_pool_list"
var PathCapsuleUpdatePool = "/live.liveadmin.v1.Capsule/update_pool"
var PathCapsuleDeletePool = "/live.liveadmin.v1.Capsule/delete_pool"
var PathCapsuleUpdatePoolStatus = "/live.liveadmin.v1.Capsule/update_pool_status"
var PathCapsuleGetPoolPrize = "/live.liveadmin.v1.Capsule/get_pool_prize"
var PathCapsuleGetPrizeType = "/live.liveadmin.v1.Capsule/get_prize_type"
var PathCapsuleGetPrizeExpire = "/live.liveadmin.v1.Capsule/get_prize_expire"
var PathCapsuleUpdatePoolPrize = "/live.liveadmin.v1.Capsule/update_pool_prize"
var PathCapsuleDeletePoolPrize = "/live.liveadmin.v1.Capsule/delete_pool_prize"
var PathCapsuleGetCouponList = "/live.liveadmin.v1.Capsule/get_coupon_list"
// =================
// Capsule Interface
// =================
type CapsuleBMServer interface {
// `internal:"true"`
GetCoinList(ctx context.Context, req *GetCoinListReqAdmin) (resp *GetCoinListRespAdmin, err error)
// `method:"POST" internal:"true"`
UpdateCoinConfig(ctx context.Context, req *UpdateCoinConfigReqAdmin) (resp *UpdateCoinConfigRespAdmin, err error)
// `method:"POST" internal:"true"`
UpdateCoinStatus(ctx context.Context, req *UpdateCoinStatusReqAdmin) (resp *UpdateCoinStatusRespAdmin, err error)
// `method:"POST" internal:"true"`
DeleteCoin(ctx context.Context, req *DeleteCoinReqAdmin) (resp *DeleteCoinRespAdmin, err error)
// `internal:"true"`
GetPoolList(ctx context.Context, req *GetPoolListReqAdmin) (resp *GetPoolListRespAdmin, err error)
// `method:"POST" internal:"true"`
UpdatePool(ctx context.Context, req *UpdatePoolReqAdmin) (resp *UpdatePoolRespAdmin, err error)
// `method:"POST" internal:"true"`
DeletePool(ctx context.Context, req *DeletePoolReqAdmin) (resp *DeletePoolRespAdmin, err error)
// `method:"POST" internal:"true"`
UpdatePoolStatus(ctx context.Context, req *UpdatePoolStatusReqAdmin) (resp *UpdatePoolStatusRespAdmin, err error)
// `internal:"true"`
GetPoolPrize(ctx context.Context, req *GetPoolPrizeReqAdmin) (resp *GetPoolPrizeRespAdmin, err error)
// `internal:"true"`
GetPrizeType(ctx context.Context, req *GetPrizeTypeReq) (resp *GetPrizeTypeResp, err error)
// `internal:"true"`
GetPrizeExpire(ctx context.Context, req *GetPrizeExpireReq) (resp *GetPrizeExpireResp, err error)
// `method:"POST" internal:"true"`
UpdatePoolPrize(ctx context.Context, req *UpdatePoolPrizeReqAdmin) (resp *UpdatePoolPrizeRespAdmin, err error)
// `method:"POST" internal:"true" `
DeletePoolPrize(ctx context.Context, req *DeletePoolPrizeReqAdmin) (resp *DeletePoolPrizeRespAdmin, err error)
// `internal:"true"`
GetCouponList(ctx context.Context, req *CapsuleGetCouponListReq) (resp *CapsuleGetCouponListResp, err error)
}
var v1CapsuleSvc CapsuleBMServer
func capsuleGetCoinList(c *bm.Context) {
p := new(GetCoinListReqAdmin)
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(UpdateCoinConfigReqAdmin)
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(UpdateCoinStatusReqAdmin)
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(DeleteCoinReqAdmin)
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(GetPoolListReqAdmin)
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(UpdatePoolReqAdmin)
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(DeletePoolReqAdmin)
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(UpdatePoolStatusReqAdmin)
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(GetPoolPrizeReqAdmin)
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(UpdatePoolPrizeReqAdmin)
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(DeletePoolPrizeReqAdmin)
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 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)
}
// RegisterV1CapsuleService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1CapsuleService(e *bm.Engine, svc CapsuleBMServer, midMap map[string]bm.HandlerFunc) {
v1CapsuleSvc = svc
e.GET("/xlive/internal/live-admin/v1/capsule/get_coin_list", capsuleGetCoinList)
e.POST("/xlive/internal/live-admin/v1/capsule/update_coin_config", capsuleUpdateCoinConfig)
e.POST("/xlive/internal/live-admin/v1/capsule/update_coin_status", capsuleUpdateCoinStatus)
e.POST("/xlive/internal/live-admin/v1/capsule/delete_coin", capsuleDeleteCoin)
e.GET("/xlive/internal/live-admin/v1/capsule/get_pool_list", capsuleGetPoolList)
e.POST("/xlive/internal/live-admin/v1/capsule/update_pool", capsuleUpdatePool)
e.POST("/xlive/internal/live-admin/v1/capsule/delete_pool", capsuleDeletePool)
e.POST("/xlive/internal/live-admin/v1/capsule/update_pool_status", capsuleUpdatePoolStatus)
e.GET("/xlive/internal/live-admin/v1/capsule/get_pool_prize", capsuleGetPoolPrize)
e.GET("/xlive/internal/live-admin/v1/capsule/get_prize_type", capsuleGetPrizeType)
e.GET("/xlive/internal/live-admin/v1/capsule/get_prize_expire", capsuleGetPrizeExpire)
e.POST("/xlive/internal/live-admin/v1/capsule/update_pool_prize", capsuleUpdatePoolPrize)
e.POST("/xlive/internal/live-admin/v1/capsule/delete_pool_prize", capsuleDeletePoolPrize)
e.GET("/xlive/internal/live-admin/v1/capsule/get_coupon_list", capsuleGetCouponList)
}
// RegisterCapsuleBMServer Register the blademaster route
func RegisterCapsuleBMServer(e *bm.Engine, server CapsuleBMServer) {
v1CapsuleSvc = server
e.GET("/live.liveadmin.v1.Capsule/get_coin_list", capsuleGetCoinList)
e.POST("/live.liveadmin.v1.Capsule/update_coin_config", capsuleUpdateCoinConfig)
e.POST("/live.liveadmin.v1.Capsule/update_coin_status", capsuleUpdateCoinStatus)
e.POST("/live.liveadmin.v1.Capsule/delete_coin", capsuleDeleteCoin)
e.GET("/live.liveadmin.v1.Capsule/get_pool_list", capsuleGetPoolList)
e.POST("/live.liveadmin.v1.Capsule/update_pool", capsuleUpdatePool)
e.POST("/live.liveadmin.v1.Capsule/delete_pool", capsuleDeletePool)
e.POST("/live.liveadmin.v1.Capsule/update_pool_status", capsuleUpdatePoolStatus)
e.GET("/live.liveadmin.v1.Capsule/get_pool_prize", capsuleGetPoolPrize)
e.GET("/live.liveadmin.v1.Capsule/get_prize_type", capsuleGetPrizeType)
e.GET("/live.liveadmin.v1.Capsule/get_prize_expire", capsuleGetPrizeExpire)
e.POST("/live.liveadmin.v1.Capsule/update_pool_prize", capsuleUpdatePoolPrize)
e.POST("/live.liveadmin.v1.Capsule/delete_pool_prize", capsuleDeletePoolPrize)
e.GET("/live.liveadmin.v1.Capsule/get_coupon_list", capsuleGetCouponList)
}

View File

@@ -0,0 +1,505 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/capsule/get_coin_list](#xliveinternallive-adminv1capsuleget_coin_list)
- [/xlive/internal/live-admin/v1/capsule/update_coin_config](#xliveinternallive-adminv1capsuleupdate_coin_config)
- [/xlive/internal/live-admin/v1/capsule/update_coin_status](#xliveinternallive-adminv1capsuleupdate_coin_status)
- [/xlive/internal/live-admin/v1/capsule/delete_coin](#xliveinternallive-adminv1capsuledelete_coin)
- [/xlive/internal/live-admin/v1/capsule/get_pool_list](#xliveinternallive-adminv1capsuleget_pool_list)
- [/xlive/internal/live-admin/v1/capsule/update_pool](#xliveinternallive-adminv1capsuleupdate_pool)
- [/xlive/internal/live-admin/v1/capsule/delete_pool](#xliveinternallive-adminv1capsuledelete_pool)
- [/xlive/internal/live-admin/v1/capsule/update_pool_status](#xliveinternallive-adminv1capsuleupdate_pool_status)
- [/xlive/internal/live-admin/v1/capsule/get_pool_prize](#xliveinternallive-adminv1capsuleget_pool_prize)
- [/xlive/internal/live-admin/v1/capsule/get_prize_type](#xliveinternallive-adminv1capsuleget_prize_type)
- [/xlive/internal/live-admin/v1/capsule/get_prize_expire](#xliveinternallive-adminv1capsuleget_prize_expire)
- [/xlive/internal/live-admin/v1/capsule/update_pool_prize](#xliveinternallive-adminv1capsuleupdate_pool_prize)
- [/xlive/internal/live-admin/v1/capsule/delete_pool_prize](#xliveinternallive-adminv1capsuledelete_pool_prize)
- [/xlive/internal/live-admin/v1/capsule/get_coupon_list](#xliveinternallive-adminv1capsuleget_coupon_list)
## /xlive/internal/live-admin/v1/capsule/get_coin_list
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|page|是|integer|页码从1开始|
|page_size|是|integer|页面的大小|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"total": 0,
"total_page": 0,
"list": [
{
// 扭蛋ID
"id": 0,
// 名称 普通扭蛋, 梦幻扭蛋
"title": "",
// 转化数量
"change_num": 0,
// 开始时间
"start_time": "",
// 结束时间
"end_time": "",
// 状态 0为下线1为上线
"status": 0,
// 获得方式 1为所有瓜子道具2为所有金瓜子道具3为指定道具ID
"gift_type": 0,
// 道具的ID
"gift_config": "",
// 活动分区
"area_ids": [
{
// 父分区ID
"parent_id": 0,
// 是否全选
"is_all": 0,
// 子分区ID
"list": [
0
]
}
]
}
]
}
}
```
## /xlive/internal/live-admin/v1/capsule/update_coin_config
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer|扭蛋ID|
|title|是|string|名称 普通扭蛋, 梦幻扭蛋|
|change_num|是|integer|转化数量|
|start_time|是|string|开始时间|
|end_time|是|string|结束时间|
|status|是|integer|状态 0为下线1为上线|
|gift_type|是|integer|获得方式 1为所有瓜子道具2为所有金瓜子道具3为指定道具ID|
|gift_config|否|string| 道具的ID|
|area_ids|是|string|里面是父分区ID是否全选分区ID|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/v1/capsule/update_coin_status
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer|扭蛋币id|
|status|否|integer|状态 0为下线1为上线|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/v1/capsule/delete_coin
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer|扭蛋币id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/v1/capsule/get_pool_list
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|page|是|integer|页码|
|page_size|是|integer|页面的大小|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 总数
"total": 0,
// 总页数
"total_page": 0,
"list": [
{
// 奖池id
"id": 0,
// 扭蛋名称
"coin_id": 0,
// 奖池名称
"title": "",
// 奖池名称
"coin_title": "",
// 开始时间
"start_time": "",
// 结束时间
"end_time": "",
// 状态 0为下线1为上线
"status": 0,
// 描述
"rule": ""
}
]
}
}
```
## /xlive/internal/live-admin/v1/capsule/update_pool
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer| 奖池id|
|coin_id|是|integer| 扭蛋名称|
|title|是|string|奖池名称|
|start_time|是|string|开始时间|
|end_time|是|string|结束时间|
|rule|是|string|描述|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/v1/capsule/delete_pool
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer|奖池id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/v1/capsule/update_pool_status
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer|奖池id|
|status|否|integer|状态 0为未上线1为上线|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/v1/capsule/get_pool_prize
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|pool_id|是|integer|奖池id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
// 奖励id
"id": 0,
// 奖池id
"pool_id": 0,
// 奖品类型 1为道具2为头衔3为经验原石4为经验曜石5为贤者之石6为小号小电视7为舰长守护8为提督守护9为总督守护
"type": 0,
// 数量
"num": 0,
// 奖品真实id
"object_id": 0,
// web端图片
"web_url": "",
// 移动端图片
"mobile_url": "",
// 奖励描述
"description": "",
// 跳转地址
"jump_url": "",
// 概率类型 1为普通2为固定每天3为固定每周
"pro_type": 0,
// 概率3位小数''为另一种概率模式
"chance": "",
// 循环的数量 0为另一种概率模式
"loop": 0,
// 限制数量 0为另一种概率模式
"limit": 0,
// 奖励名称
"name": "",
// 权重
"weight": 0,
// 白名单用户
"white_uids": "",
// 过期类型
"expire": 0
}
]
}
}
```
## /xlive/internal/live-admin/v1/capsule/get_prize_type
### 无标题
#### 方法GET
#### 请求参数
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"type": 0,
"name": ""
}
]
}
}
```
## /xlive/internal/live-admin/v1/capsule/get_prize_expire
### 无标题
#### 方法GET
#### 请求参数
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"expire": 0,
"name": ""
}
]
}
}
```
## /xlive/internal/live-admin/v1/capsule/update_pool_prize
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer|奖励id|
|pool_id|否|integer|奖池id|
|type|是|integer|奖品类型 1为道具2为头衔3为经验原石4为经验曜石5为贤者之石6为小号小电视7为舰长守护8为提督守护9为总督守护|
|num|是|integer|数量|
|object_id|否|integer|奖品真实id|
|expire|否|integer|过期时间|
|web_url|是|string|web端图片|
|mobile_url|是|string|移动端图片|
|description|是|string|奖励描述|
|jump_url|否|string|跳转地址|
|pro_type|是|integer|概率类型 1为普通2为固定每天3为固定每周4位白名单|
|chance|否|string|概率3位小数''为另一种概率模式|
|loop|否|integer|循环的数量 0为另一种概率模式|
|limit|否|integer|限制数量 0为另一种概率模式|
|weight|否|integer| 权重|
|white_uids|否|string| 白名单用户|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true,
// 新增id
"prize_id": 0
}
}
```
## /xlive/internal/live-admin/v1/capsule/delete_pool_prize
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer|奖励id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 状态
"status": true
}
}
```
## /xlive/internal/live-admin/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,366 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service Capsule{
// `internal:"true"`
rpc get_coin_list(GetCoinListReqAdmin) returns (GetCoinListRespAdmin);
// `method:"POST" internal:"true"`
rpc update_coin_config(UpdateCoinConfigReqAdmin) returns (UpdateCoinConfigRespAdmin);
// `method:"POST" internal:"true"`
rpc update_coin_status(UpdateCoinStatusReqAdmin) returns (UpdateCoinStatusRespAdmin);
// `method:"POST" internal:"true"`
rpc delete_coin(DeleteCoinReqAdmin) returns (DeleteCoinRespAdmin);
// `internal:"true"`
rpc get_pool_list(GetPoolListReqAdmin) returns (GetPoolListRespAdmin);
// `method:"POST" internal:"true"`
rpc update_pool(UpdatePoolReqAdmin) returns (UpdatePoolRespAdmin);
// `method:"POST" internal:"true"`
rpc delete_pool(DeletePoolReqAdmin) returns (DeletePoolRespAdmin);
// `method:"POST" internal:"true"`
rpc update_pool_status(UpdatePoolStatusReqAdmin) returns (UpdatePoolStatusRespAdmin);
// `internal:"true"`
rpc get_pool_prize(GetPoolPrizeReqAdmin) returns (GetPoolPrizeRespAdmin);
// `internal:"true"`
rpc get_prize_type (GetPrizeTypeReq) returns (GetPrizeTypeResp);
// `internal:"true"`
rpc get_prize_expire (GetPrizeExpireReq) returns (GetPrizeExpireResp);
// `method:"POST" internal:"true"`
rpc update_pool_prize(UpdatePoolPrizeReqAdmin) returns (UpdatePoolPrizeRespAdmin);
// `method:"POST" internal:"true" `
rpc delete_pool_prize(DeletePoolPrizeReqAdmin) returns (DeletePoolPrizeRespAdmin);
// `internal:"true"`
rpc get_coupon_list (CapsuleGetCouponListReq) returns (CapsuleGetCouponListResp);
}
message GetCoinListReqAdmin{
//页码从1开始
int64 page = 1 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
//页面的大小
int64 page_size = 2 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
}
message GetCoinListRespAdmin{
int64 total = 1 [(gogoproto.jsontag) = "total"]; //
int64 total_page = 2 [(gogoproto.jsontag) = "total_page"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List{
//扭蛋ID
int64 id = 1 [(gogoproto.jsontag) = "id"];
//名称 普通扭蛋, 梦幻扭蛋
string title = 2 [(gogoproto.jsontag) = "title"];
//转化数量
int64 change_num = 3 [(gogoproto.jsontag) = "change_num"];
//开始时间
string start_time = 4 [(gogoproto.jsontag) = "start_time"];
//结束时间
string end_time = 5 [(gogoproto.jsontag) = "end_time"];
//状态 0为下线1为上线
int64 status = 6 [(gogoproto.jsontag) = "status"];
//获得方式 1为所有瓜子道具2为所有金瓜子道具3为指定道具ID
int64 gift_type = 7 [(gogoproto.jsontag) = "gift_type"];
// 道具的ID
string gift_config = 8 [(gogoproto.jsontag) = "gift_config"];
//活动分区
repeated Area_ids area_ids = 9 [(gogoproto.jsontag) = "area_ids"];
message Area_ids{
// 父分区ID
int64 parent_id = 1 [(gogoproto.jsontag) = "parent_id"];
// 是否全选
int64 is_all = 2 [(gogoproto.jsontag) = "is_all"];
// 子分区ID
repeated int64 list = 3 [(gogoproto.jsontag) = "list"];
}
}
}
message UpdateCoinConfigReqAdmin{
//扭蛋ID
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
//名称 普通扭蛋, 梦幻扭蛋
string title = 2 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
//转化数量
int64 change_num = 3 [(gogoproto.moretags) = 'form:"change_num" validate:"required"'];
//开始时间
string start_time = 4 [(gogoproto.moretags) = 'form:"start_time" validate:"required"'];
//结束时间
string end_time = 5 [(gogoproto.moretags) = 'form:"end_time" validate:"required"'];
//状态 0为下线1为上线
int64 status = 6 [(gogoproto.moretags) = 'form:"status" validate:"required"'];
//获得方式 1为所有瓜子道具2为所有金瓜子道具3为指定道具ID
int64 gift_type = 7 [(gogoproto.moretags) = 'form:"gift_type" validate:"required"'];
// 道具的ID
string gift_config = 8 [(gogoproto.moretags) = 'form:"gift_config"'];
//里面是父分区ID是否全选分区ID
string area_ids = 9 [(gogoproto.moretags) = 'form:"area_ids" validate:"required"'];
}
message UpdateCoinConfigRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message UpdateCoinStatusReqAdmin{
//扭蛋币id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
//状态 0为下线1为上线
int64 status = 2 [(gogoproto.moretags) = 'form:"status"'];
}
message UpdateCoinStatusRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message DeleteCoinReqAdmin{
//扭蛋币id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message DeleteCoinRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message GetPoolListReqAdmin{
//页码
int64 page = 1 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
//页面的大小
int64 page_size = 2 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
}
message GetPoolListRespAdmin{
//总数
int64 total = 1 [(gogoproto.jsontag) = "total"];
//总页数
int64 total_page = 2 [(gogoproto.jsontag) = "total_page"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List{
// 奖池id
int64 id = 1 [(gogoproto.jsontag) = "id"];
// 扭蛋名称
int64 coin_id = 2 [(gogoproto.jsontag) = "coin_id"];
// 奖池名称
string title = 3 [(gogoproto.jsontag) = "title"];
// 奖池名称
string coin_title = 8 [(gogoproto.jsontag) = "coin_title"];
//开始时间
string start_time = 4 [(gogoproto.jsontag) = "start_time"];
//结束时间
string end_time = 5 [(gogoproto.jsontag) = "end_time"];
//状态 0为下线1为上线
int64 status = 6 [(gogoproto.jsontag) = "status"];
//描述
string rule = 7 [(gogoproto.jsontag) = "rule"];
}
}
message UpdatePoolReqAdmin{
// 奖池id
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
// 扭蛋名称
int64 coin_id = 2 [(gogoproto.moretags) = 'form:"coin_id" validate:"required"'];
//奖池名称
string title = 3 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
//开始时间
string start_time = 4 [(gogoproto.moretags) = 'form:"start_time" validate:"required"'];
//结束时间
string end_time = 5 [(gogoproto.moretags) = 'form:"end_time" validate:"required"'];
//描述
string rule = 6 [(gogoproto.moretags) = 'form:"rule" validate:"required"'];
}
message UpdatePoolRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message DeletePoolReqAdmin{
//奖池id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message DeletePoolRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message UpdatePoolStatusReqAdmin{
//奖池id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
//状态 0为未上线1为上线
int64 status = 2 [(gogoproto.moretags) = 'form:"status"'];
}
message UpdatePoolStatusRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
}
message GetPoolPrizeReqAdmin{
//奖池id
int64 pool_id = 1 [(gogoproto.moretags) = 'form:"pool_id" validate:"required"'];
}
message GetPoolPrizeRespAdmin{
repeated List list = 1 [(gogoproto.jsontag) = "list"];
message List{
//奖励id
int64 id = 1 [(gogoproto.jsontag) = "id"];
//奖池id
int64 pool_id = 2 [(gogoproto.jsontag) = "pool_id"];
//奖品类型 1为道具2为头衔3为经验原石4为经验曜石5为贤者之石6为小号小电视7为舰长守护8为提督守护9为总督守护
int64 type = 3 [(gogoproto.jsontag) = "type"];
//数量
int64 num = 4 [(gogoproto.jsontag) = "num"];
//奖品真实id
int64 object_id = 5 [(gogoproto.jsontag) = "object_id"];
//web端图片
string web_url = 6 [(gogoproto.jsontag) = "web_url"];
//移动端图片
string mobile_url = 7 [(gogoproto.jsontag) = "mobile_url"];
//奖励描述
string description = 8 [(gogoproto.jsontag) = "description"];
//跳转地址
string jump_url = 9 [(gogoproto.jsontag) = "jump_url"];
//概率类型 1为普通2为固定每天3为固定每周
int64 pro_type = 10 [(gogoproto.jsontag) = "pro_type"];
//概率3位小数''为另一种概率模式
string chance = 11 [(gogoproto.jsontag) = "chance"];
//循环的数量 0为另一种概率模式
int64 loop = 12 [(gogoproto.jsontag) = "loop"];
//限制数量 0为另一种概率模式
int64 limit = 13 [(gogoproto.jsontag) = "limit"];
// 奖励名称
string name = 14 [(gogoproto.jsontag) = "name"];
// 权重
int64 weight = 15 [(gogoproto.jsontag) = "weight"];
// 白名单用户
string white_uids = 16 [(gogoproto.jsontag) = "white_uids"];
// 过期类型
int64 expire = 17 [(gogoproto.jsontag) = "expire"];
}
}
message UpdatePoolPrizeReqAdmin{
//奖励id
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
//奖池id
int64 pool_id = 2 [(gogoproto.moretags) = 'form:"pool_id"'];
//奖品类型 1为道具2为头衔3为经验原石4为经验曜石5为贤者之石6为小号小电视7为舰长守护8为提督守护9为总督守护
int64 type = 3 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
//数量
int64 num = 4 [(gogoproto.moretags) = 'form:"num" validate:"required"'];
//奖品真实id
int64 object_id = 5 [(gogoproto.moretags) = 'form:"object_id"'];
//过期时间
int64 expire = 6 [(gogoproto.moretags) = 'form:"expire"'];
//web端图片
string web_url = 7 [(gogoproto.moretags) = 'form:"web_url" validate:"required"'];
//移动端图片
string mobile_url = 8 [(gogoproto.moretags) = 'form:"mobile_url" validate:"required"'];
//奖励描述
string description = 9 [(gogoproto.moretags) = 'form:"description" validate:"required"'];
//跳转地址
string jump_url = 10 [(gogoproto.moretags) = 'form:"jump_url"'];
//概率类型 1为普通2为固定每天3为固定每周4位白名单
int64 pro_type = 11 [(gogoproto.moretags) = 'form:"pro_type" validate:"required"'];
//概率3位小数''为另一种概率模式
string chance = 12 [(gogoproto.moretags) = 'form:"chance"'];
//循环的数量 0为另一种概率模式
int64 loop = 13 [(gogoproto.moretags) = 'form:"loop"'];
//限制数量 0为另一种概率模式
int64 limit = 14 [(gogoproto.moretags) = 'form:"limit"'];
// 权重
int64 weight = 15 [(gogoproto.moretags) = 'form:"weight"'];
// 白名单用户
string white_uids = 16 [(gogoproto.moretags) = 'form:"white_uids"'];
}
message UpdatePoolPrizeRespAdmin{
//状态
bool status = 1 [(gogoproto.jsontag) = "status"];
//新增id
int64 prize_id = 2 [(gogoproto.jsontag) = "prize_id"];
}
message DeletePoolPrizeReqAdmin{
//奖励id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message DeletePoolPrizeRespAdmin{
//状态
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"];
}
}
message CapsuleGetCouponListReq {
//
int64 uid = 1 [(gogoproto.moretags) = 'form:"uid" validate:"required"'];
}
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,133 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: gaea.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:
gaea.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 PathGaeaGetConfigByKeyword = "/live.liveadmin.v1.gaea/get_config_by_keyword"
var PathGaeaSetConfigByKeyword = "/live.liveadmin.v1.gaea/set_config_by_keyword"
var PathGaeaGetConfigsByParams = "/live.liveadmin.v1.gaea/get_configs_by_params"
var PathGaeaGetConfigsByTeam = "/live.liveadmin.v1.gaea/get_configs_by_team"
var PathGaeaGetConfigsByKeyword = "/live.liveadmin.v1.gaea/get_configs_by_keyword"
var PathGaeaGetConfigsByTeams = "/live.liveadmin.v1.gaea/get_configs_by_teams"
// ==============
// Gaea Interface
// ==============
type GaeaBMServer interface {
// 获取team下某个keyword的配置 `internal:"true"`
GetConfigByKeyword(ctx context.Context, req *GetConfigReq) (resp *GetConfigResp, err error)
// `method:"POST" internal:"true"` 设置team下某个keyword配置
SetConfigByKeyword(ctx context.Context, req *SetConfigReq) (resp *SetConfigResp, err error)
// 管理后台根据条件获取配置 `internal:"true"`
GetConfigsByParams(ctx context.Context, req *ParamsConfigReq) (resp *ParamsConfigResp, err error)
// 获取单个team的全部配置 `internal:"true"`
GetConfigsByTeam(ctx context.Context, req *TeamConfigReq) (resp *TeamConfigResp, err error)
// 通过keyword获取配置 `internal:"true"`
GetConfigsByKeyword(ctx context.Context, req *GetConfigsReq) (resp *GetConfigsResp, err error)
// 获取多个team下的全部配置 `internal:"true"`
GetConfigsByTeams(ctx context.Context, req *TeamsConfigReq) (resp *TeamsConfigResp, err error)
}
var v1GaeaSvc GaeaBMServer
func gaeaGetConfigByKeyword(c *bm.Context) {
p := new(GetConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1GaeaSvc.GetConfigByKeyword(c, p)
c.JSON(resp, err)
}
func gaeaSetConfigByKeyword(c *bm.Context) {
p := new(SetConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1GaeaSvc.SetConfigByKeyword(c, p)
c.JSON(resp, err)
}
func gaeaGetConfigsByParams(c *bm.Context) {
p := new(ParamsConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1GaeaSvc.GetConfigsByParams(c, p)
c.JSON(resp, err)
}
func gaeaGetConfigsByTeam(c *bm.Context) {
p := new(TeamConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1GaeaSvc.GetConfigsByTeam(c, p)
c.JSON(resp, err)
}
func gaeaGetConfigsByKeyword(c *bm.Context) {
p := new(GetConfigsReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1GaeaSvc.GetConfigsByKeyword(c, p)
c.JSON(resp, err)
}
func gaeaGetConfigsByTeams(c *bm.Context) {
p := new(TeamsConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1GaeaSvc.GetConfigsByTeams(c, p)
c.JSON(resp, err)
}
// RegisterV1GaeaService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1GaeaService(e *bm.Engine, svc GaeaBMServer, midMap map[string]bm.HandlerFunc) {
v1GaeaSvc = svc
e.GET("/xlive/internal/live-admin/v1/gaea/get_config_by_keyword", gaeaGetConfigByKeyword)
e.POST("/xlive/internal/live-admin/v1/gaea/set_config_by_keyword", gaeaSetConfigByKeyword)
e.GET("/xlive/internal/live-admin/v1/gaea/get_configs_by_params", gaeaGetConfigsByParams)
e.GET("/xlive/internal/live-admin/v1/gaea/get_configs_by_team", gaeaGetConfigsByTeam)
e.GET("/xlive/internal/live-admin/v1/gaea/get_configs_by_keyword", gaeaGetConfigsByKeyword)
e.GET("/xlive/internal/live-admin/v1/gaea/get_configs_by_teams", gaeaGetConfigsByTeams)
}
// RegisterGaeaBMServer Register the blademaster route
func RegisterGaeaBMServer(e *bm.Engine, server GaeaBMServer) {
v1GaeaSvc = server
e.GET("/live.liveadmin.v1.gaea/get_config_by_keyword", gaeaGetConfigByKeyword)
e.POST("/live.liveadmin.v1.gaea/set_config_by_keyword", gaeaSetConfigByKeyword)
e.GET("/live.liveadmin.v1.gaea/get_configs_by_params", gaeaGetConfigsByParams)
e.GET("/live.liveadmin.v1.gaea/get_configs_by_team", gaeaGetConfigsByTeam)
e.GET("/live.liveadmin.v1.gaea/get_configs_by_keyword", gaeaGetConfigsByKeyword)
e.GET("/live.liveadmin.v1.gaea/get_configs_by_teams", gaeaGetConfigsByTeams)
}

View File

@@ -0,0 +1,248 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/gaea/get_config_by_keyword](#xliveinternallive-adminv1gaeaget_config_by_keyword)
- [/xlive/internal/live-admin/v1/gaea/set_config_by_keyword](#xliveinternallive-adminv1gaeaset_config_by_keyword)
- [/xlive/internal/live-admin/v1/gaea/get_configs_by_params](#xliveinternallive-adminv1gaeaget_configs_by_params)
- [/xlive/internal/live-admin/v1/gaea/get_configs_by_team](#xliveinternallive-adminv1gaeaget_configs_by_team)
- [/xlive/internal/live-admin/v1/gaea/get_configs_by_keyword](#xliveinternallive-adminv1gaeaget_configs_by_keyword)
- [/xlive/internal/live-admin/v1/gaea/get_configs_by_teams](#xliveinternallive-adminv1gaeaget_configs_by_teams)
## /xlive/internal/live-admin/v1/gaea/get_config_by_keyword
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|否|integer|team|
|keyword|否|string|索引名称|
|id|否|integer|id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// team
"team": 0,
// 索引名称
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0,
// id
"id": 0
}
}
```
## /xlive/internal/live-admin/v1/gaea/set_config_by_keyword
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|否|integer|team|
|keyword|是|string|索引名称|
|value|是|string|配置值|
|name|否|string|配置解释|
|id|否|integer|编辑时id|
|status|否|integer|状态|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"id": 0
}
}
```
## /xlive/internal/live-admin/v1/gaea/get_configs_by_params
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|否|integer||
|keyword|否|string||
|name|否|string||
|status|否|integer||
|page|是|integer||
|page_size|是|integer|页量|
|id|否|integer|id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
// Id
"id": 0,
// team
"team": 0,
// 索引名称
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0
}
],
// 记录总数
"total_num": 0
}
}
```
## /xlive/internal/live-admin/v1/gaea/get_configs_by_team
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|是|string|team|
|page|是|integer|页码 从1开始|
|page_size|是|integer|页量|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 数据列表
"list": [
{
// Id
"id": 0,
// team
"team": 0,
// 索引名称
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0
}
],
// 记录总数
"total_num": 0
}
}
```
## /xlive/internal/live-admin/v1/gaea/get_configs_by_keyword
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|keyword|是|string|索引名称|
|page|是|integer|页码|
|page_size|是|integer|页量|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 数据列表
"list": [
{
// Id
"id": 0,
// team
"team": 0,
// 索引名称
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0
}
],
// 记录总数
"total_num": 0
}
}
```
## /xlive/internal/live-admin/v1/gaea/get_configs_by_teams
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|是|多个integer|team|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": ""
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,154 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service gaea {
//获取team下某个keyword的配置 `internal:"true"`
rpc get_config_by_keyword(GetConfigReq) returns (GetConfigResp);
//`method:"POST" internal:"true"` 设置team下某个keyword配置
rpc set_config_by_keyword(SetConfigReq) returns (SetConfigResp);
//管理后台根据条件获取配置 `internal:"true"`
rpc get_configs_by_params(ParamsConfigReq) returns (ParamsConfigResp);
//获取单个team的全部配置 `internal:"true"`
rpc get_configs_by_team(TeamConfigReq) returns (TeamConfigResp);
//通过keyword获取配置 `internal:"true"`
rpc get_configs_by_keyword(GetConfigsReq) returns (GetConfigsResp);
//获取多个team下的全部配置 `internal:"true"`
rpc get_configs_by_teams(TeamsConfigReq) returns (TeamsConfigResp);
}
// 通过参数获取一条记录的信息
message GetConfigReq {
//team
int64 team = 1 [(gogoproto.moretags) = 'form:"team"'];
//索引名称
string keyword = 2 [(gogoproto.moretags) = 'form:"keyword"'];
//id
int64 id = 3 [(gogoproto.moretags) = 'form:"id"'];
}
message GetConfigResp {
//team
int64 team = 1 [(gogoproto.jsontag) = "team"];
//索引名称
string keyword = 2 [(gogoproto.jsontag) = "keyword"];
//配置值
string value = 3 [(gogoproto.jsontag) = "value"];
//配置解释
string name = 4 [(gogoproto.jsontag) = "name"];
//创建时间
string ctime = 5 [(gogoproto.jsontag) = "ctime"];
//最近更新时间
string mtime = 6 [(gogoproto.jsontag) = "mtime"];
//状态
int64 status = 7 [(gogoproto.jsontag) = "status"];
//id
int64 id = 8 [(gogoproto.jsontag) = "id"];
}
// 设置某个key的信息
message SetConfigReq {
//team
int64 team = 1 [(gogoproto.moretags) = 'form:"team"'];
//索引名称
string keyword = 2 [(gogoproto.moretags) = 'form:"keyword" validate:"required"'];
//配置值
string value = 3 [(gogoproto.moretags) = 'form:"value" validate:"required"'];
//配置解释
string name = 4 [(gogoproto.moretags) = 'form:"name"'];
//编辑时id
int64 id = 5 [(gogoproto.moretags) = 'form:"id"'];
//状态
int64 status = 6 [(gogoproto.moretags) = 'form:"status"'];
}
message SetConfigResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
}
// 管理后台通过参数获取列表
message ParamsConfigReq{
int64 team = 1 [(gogoproto.moretags) = 'form:"team"'];
string keyword = 2 [(gogoproto.moretags) = 'form:"keyword"'];
string name = 3 [(gogoproto.moretags) = 'form:"name"'];
int64 status = 4 [(gogoproto.moretags) = 'form:"status"'];
int64 page = 5 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
//页量
int64 page_size = 6 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
//id
int64 id = 7 [(gogoproto.moretags) = 'form:"id"'];
}
message ParamsConfigResp{
repeated List list =1 [(gogoproto.jsontag) = "list"];
//记录总数
int64 total_num = 2 [(gogoproto.jsontag) = "total_num"];
}
message TeamConfigReq{
//team
string team = 1 [(gogoproto.moretags) = 'form:"team" validate:"required"'];
//页码 从1开始
int64 page = 2 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
//页量
int64 page_size = 3 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
}
message TeamConfigResp{
//数据列表
repeated List list = 1 [(gogoproto.jsontag) = "list"];
//记录总数
int64 total_num = 2 [(gogoproto.jsontag) = "total_num"];
}
message GetConfigsReq{
//索引名称
string keyword = 1 [(gogoproto.moretags) = 'form:"keyword" validate:"required"'];
//页码
int64 page = 2 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
//页量
int64 page_size = 3 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
}
message GetConfigsResp{
//数据列表
repeated List list = 1 [(gogoproto.jsontag) = "list"];
//记录总数
int64 total_num = 2 [(gogoproto.jsontag) = "total_num"];
}
message List {
//Id
int64 id = 1 [(gogoproto.jsontag) = "id"];
//team
int64 team = 2 [(gogoproto.jsontag) = "team"];
//索引名称
string keyword = 3 [(gogoproto.jsontag) = "keyword"];
//配置值
string value = 4 [(gogoproto.jsontag) = "value"];
//配置解释
string name = 5 [(gogoproto.jsontag) = "name"];
//创建时间
string ctime = 6 [(gogoproto.jsontag) = "ctime"];
//最近更新时间
string mtime = 7 [(gogoproto.jsontag) = "mtime"];
//状态
int64 status = 8 [(gogoproto.jsontag) = "status"];
}
message TeamsConfigReq{
//team
repeated int64 team = 1 [(gogoproto.moretags) = 'form:"team" validate:"required"'];
}
message TeamsConfigResp{
string list = 1 [(gogoproto.jsontag) = "list"];
}

View File

@@ -0,0 +1,118 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: payGoods.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:
payGoods.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 PathPayGoodsAdd = "/live.liveadmin.v1.PayGoods/add"
var PathPayGoodsUpdate = "/live.liveadmin.v1.PayGoods/update"
var PathPayGoodsGetList = "/live.liveadmin.v1.PayGoods/getList"
var PathPayGoodsClose = "/live.liveadmin.v1.PayGoods/close"
var PathPayGoodsOpen = "/live.liveadmin.v1.PayGoods/open"
// ==================
// PayGoods Interface
// ==================
type PayGoodsBMServer interface {
// `method:"POST" internal:"true"` 生成一张付费直播票
Add(ctx context.Context, req *PayGoodsAddReq) (resp *PayGoodsAddResp, err error)
// `method:"POST" internal:"true"` 更新一张付费直播票
Update(ctx context.Context, req *PayGoodsUpdateReq) (resp *PayGoodsUpdateResp, err error)
// `internal:"true"` 获取付费直播票列表
GetList(ctx context.Context, req *PayGoodsGetListReq) (resp *PayGoodsGetListResp, err error)
// `method:"POST" internal:"true"` 关闭购票
Close(ctx context.Context, req *PayGoodsCloseReq) (resp *PayGoodsCloseResp, err error)
// `method:"POST" internal:"true"` 开启购票
Open(ctx context.Context, req *PayGoodsOpenReq) (resp *PayGoodsOpenResp, err error)
}
var v1PayGoodsSvc PayGoodsBMServer
func payGoodsAdd(c *bm.Context) {
p := new(PayGoodsAddReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayGoodsSvc.Add(c, p)
c.JSON(resp, err)
}
func payGoodsUpdate(c *bm.Context) {
p := new(PayGoodsUpdateReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayGoodsSvc.Update(c, p)
c.JSON(resp, err)
}
func payGoodsGetList(c *bm.Context) {
p := new(PayGoodsGetListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayGoodsSvc.GetList(c, p)
c.JSON(resp, err)
}
func payGoodsClose(c *bm.Context) {
p := new(PayGoodsCloseReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayGoodsSvc.Close(c, p)
c.JSON(resp, err)
}
func payGoodsOpen(c *bm.Context) {
p := new(PayGoodsOpenReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayGoodsSvc.Open(c, p)
c.JSON(resp, err)
}
// RegisterV1PayGoodsService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1PayGoodsService(e *bm.Engine, svc PayGoodsBMServer, midMap map[string]bm.HandlerFunc) {
v1PayGoodsSvc = svc
e.POST("/xlive/internal/live-admin/v1/payGoods/add", payGoodsAdd)
e.POST("/xlive/internal/live-admin/v1/payGoods/update", payGoodsUpdate)
e.GET("/xlive/internal/live-admin/v1/payGoods/getList", payGoodsGetList)
e.POST("/xlive/internal/live-admin/v1/payGoods/close", payGoodsClose)
e.POST("/xlive/internal/live-admin/v1/payGoods/open", payGoodsOpen)
}
// RegisterPayGoodsBMServer Register the blademaster route
func RegisterPayGoodsBMServer(e *bm.Engine, server PayGoodsBMServer) {
v1PayGoodsSvc = server
e.POST("/live.liveadmin.v1.PayGoods/add", payGoodsAdd)
e.POST("/live.liveadmin.v1.PayGoods/update", payGoodsUpdate)
e.GET("/live.liveadmin.v1.PayGoods/getList", payGoodsGetList)
e.POST("/live.liveadmin.v1.PayGoods/close", payGoodsClose)
e.POST("/live.liveadmin.v1.PayGoods/open", payGoodsOpen)
}

View File

@@ -0,0 +1,168 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/payGoods/add](#xliveinternallive-adminv1payGoodsadd)
- [/xlive/internal/live-admin/v1/payGoods/update](#xliveinternallive-adminv1payGoodsupdate)
- [/xlive/internal/live-admin/v1/payGoods/getList](#xliveinternallive-adminv1payGoodsgetList)
- [/xlive/internal/live-admin/v1/payGoods/close](#xliveinternallive-adminv1payGoodsclose)
- [/xlive/internal/live-admin/v1/payGoods/open](#xliveinternallive-adminv1payGoodsopen)
## /xlive/internal/live-admin/v1/payGoods/add
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string| 平台|
|title|是|string| 商品名称|
|type|是|integer| 商品类型 2 付费直播门票|
|price|是|integer| 商品价格(分)|
|start_time|是|string| 开始时间|
|end_time|是|string| 结束时间|
|ip_limit|否|integer| ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/payGoods/update
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer| 购票id|
|platform|否|string| 平台|
|title|否|string| 商品名称|
|type|否|integer| 商品类型 2 付费直播门票|
|price|否|integer| 商品价格(分)|
|start_time|否|string| 开始时间|
|end_time|否|string| 结束时间|
|ip_limit|否|integer| ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/payGoods/getList
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer| 购票id|
|platform|否|string| 平台|
|title|否|string| 商品名称|
|type|否|integer| 商品类型 2 付费直播门票|
|ip_limit|否|integer| ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台|
|page_num|否|integer| 页号0开始|
|page_size|否|integer| 每页个数|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"page_info": {
// 记录总数
"total_count": 0,
// 当前页号
"page_num": 0
},
"goods_info": [
{
// 购票id
"id": 0,
// 标题
"title": "",
// 平台
"platform": "",
// 类型2为付费直播
"type": 0,
// 价格,分
"price": 0,
// 开始购票时间
"start_time": "",
// 结束购票时间
"end_time": "",
// ip限制
"ip_limit": 0,
// 购票状态0关闭1购票中2未开始
"status": 0
}
]
}
}
```
## /xlive/internal/live-admin/v1/payGoods/close
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer| 购票id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/payGoods/open
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|是|integer| 购票id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,145 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
option (gogoproto.goproto_getters_all) = false;
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service PayGoods {
// `method:"POST" internal:"true"` 生成一张付费直播票
rpc add (PayGoodsAddReq) returns (PayGoodsAddResp);
// `method:"POST" internal:"true"` 更新一张付费直播票
rpc update (PayGoodsUpdateReq) returns (PayGoodsUpdateResp);
// `internal:"true"` 获取付费直播票列表
rpc getList (PayGoodsGetListReq) returns (PayGoodsGetListResp);
// `method:"POST" internal:"true"` 关闭购票
rpc close (PayGoodsCloseReq) returns (PayGoodsCloseResp);
// `method:"POST" internal:"true"` 开启购票
rpc open (PayGoodsOpenReq) returns (PayGoodsOpenResp);
}
message PayGoodsAddReq {
// 平台
string platform = 1 [(gogoproto.moretags) = 'form:"platform"'];
// 商品名称
string title = 2 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
// 商品类型 2 付费直播门票
int64 type = 3 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
// 商品价格(分)
int64 price = 4 [(gogoproto.moretags) = 'form:"price" validate:"required"'];
// 开始时间
string start_time = 5 [(gogoproto.moretags) = 'form:"start_time" validate:"required"'];
// 结束时间
string end_time = 6 [(gogoproto.moretags) = 'form:"end_time" validate:"required"'];
// ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台
int64 ip_limit = 7 [(gogoproto.moretags) = 'form:"ip_limit"'];
}
message PayGoodsAddResp {
}
message PayGoodsUpdateReq {
// 购票id
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
// 平台
string platform = 2 [(gogoproto.moretags) = 'form:"platform"'];
// 商品名称
string title = 3 [(gogoproto.moretags) = 'form:"title"'];
// 商品类型 2 付费直播门票
int64 type = 4 [(gogoproto.moretags) = 'form:"type"'];
// 商品价格(分)
int64 price = 5 [(gogoproto.moretags) = 'form:"price"'];
// 开始时间
string start_time = 6 [(gogoproto.moretags) = 'form:"start_time"'];
// 结束时间
string end_time = 7 [(gogoproto.moretags) = 'form:"end_time"'];
// ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台
int64 ip_limit = 8 [(gogoproto.moretags) = 'form:"ip_limit"'];
}
message PayGoodsUpdateResp {
}
message PayGoodsGetListReq {
// 购票id
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
// 平台
string platform = 2 [(gogoproto.moretags) = 'form:"platform"'];
// 商品名称
string title = 3 [(gogoproto.moretags) = 'form:"title"'];
// 商品类型 2 付费直播门票
int64 type = 4 [(gogoproto.moretags) = 'form:"type"'];
// ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台
int64 ip_limit = 5 [(gogoproto.moretags) = 'form:"ip_limit"'];
// 页号0开始
int64 page_num = 6 [(gogoproto.moretags) = 'form:"page_num"'];
// 每页个数
int64 page_size = 7 [(gogoproto.moretags) = 'form:"page_size"'];
}
message PayGoodsGetListResp {
message PageInfo {
// 记录总数
int64 total_count = 1 [(gogoproto.jsontag) = "total_count"];
// 当前页号
int64 page_num = 2 [(gogoproto.jsontag) = "page_num"];
}
message GoodsInfo {
// 购票id
int64 id = 1 [(gogoproto.jsontag) = "id"];
// 标题
string title = 2 [(gogoproto.jsontag) = "title"];
// 平台
string platform = 3 [(gogoproto.jsontag) = "platform"];
// 类型2为付费直播
int64 type = 4 [(gogoproto.jsontag) = "type"];
// 价格,分
int64 price = 5 [(gogoproto.jsontag) = "price"];
// 开始购票时间
string start_time = 6 [(gogoproto.jsontag) = "start_time"];
// 结束购票时间
string end_time = 7 [(gogoproto.jsontag) = "end_time"];
// ip限制
int64 ip_limit = 8 [(gogoproto.jsontag) = "ip_limit"];
// 购票状态0关闭1购票中2未开始
int64 status = 9 [(gogoproto.jsontag) = "status"];
}
//
PageInfo page_info = 1 [(gogoproto.jsontag) = "page_info"];
//
repeated GoodsInfo goods_info = 2 [(gogoproto.jsontag) = "goods_info"];
}
message PayGoodsCloseReq {
// 购票id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message PayGoodsCloseResp {
}
message PayGoodsOpenReq {
// 购票id
int64 id = 1 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message PayGoodsOpenResp {
}

View File

@@ -0,0 +1,118 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: payLive.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:
payLive.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 PathPayLiveAdd = "/live.liveadmin.v1.PayLive/add"
var PathPayLiveUpdate = "/live.liveadmin.v1.PayLive/update"
var PathPayLiveGetList = "/live.liveadmin.v1.PayLive/getList"
var PathPayLiveClose = "/live.liveadmin.v1.PayLive/close"
var PathPayLiveOpen = "/live.liveadmin.v1.PayLive/open"
// =================
// PayLive Interface
// =================
type PayLiveBMServer interface {
// `method:"POST" internal:"true"` 生成付费直播信息
Add(ctx context.Context, req *PayLiveAddReq) (resp *PayLiveAddResp, err error)
// `method:"POST" internal:"true"` 更新付费直播信息
Update(ctx context.Context, req *PayLiveUpdateReq) (resp *PayLiveUpdateResp, err error)
// `internal:"true"` 获取付费直播列表
GetList(ctx context.Context, req *PayLiveGetListReq) (resp *PayLiveGetListResp, err error)
// `method:"POST" internal:"true"` 关闭鉴权
Close(ctx context.Context, req *PayLiveCloseReq) (resp *PayLiveCloseResp, err error)
// `method:"POST" internal:"true"` 开启鉴权
Open(ctx context.Context, req *PayLiveOpenReq) (resp *PayLiveOpenResp, err error)
}
var v1PayLiveSvc PayLiveBMServer
func payLiveAdd(c *bm.Context) {
p := new(PayLiveAddReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayLiveSvc.Add(c, p)
c.JSON(resp, err)
}
func payLiveUpdate(c *bm.Context) {
p := new(PayLiveUpdateReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayLiveSvc.Update(c, p)
c.JSON(resp, err)
}
func payLiveGetList(c *bm.Context) {
p := new(PayLiveGetListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayLiveSvc.GetList(c, p)
c.JSON(resp, err)
}
func payLiveClose(c *bm.Context) {
p := new(PayLiveCloseReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayLiveSvc.Close(c, p)
c.JSON(resp, err)
}
func payLiveOpen(c *bm.Context) {
p := new(PayLiveOpenReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1PayLiveSvc.Open(c, p)
c.JSON(resp, err)
}
// RegisterV1PayLiveService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1PayLiveService(e *bm.Engine, svc PayLiveBMServer, midMap map[string]bm.HandlerFunc) {
v1PayLiveSvc = svc
e.POST("/xlive/internal/live-admin/v1/payLive/add", payLiveAdd)
e.POST("/xlive/internal/live-admin/v1/payLive/update", payLiveUpdate)
e.GET("/xlive/internal/live-admin/v1/payLive/getList", payLiveGetList)
e.POST("/xlive/internal/live-admin/v1/payLive/close", payLiveClose)
e.POST("/xlive/internal/live-admin/v1/payLive/open", payLiveOpen)
}
// RegisterPayLiveBMServer Register the blademaster route
func RegisterPayLiveBMServer(e *bm.Engine, server PayLiveBMServer) {
v1PayLiveSvc = server
e.POST("/live.liveadmin.v1.PayLive/add", payLiveAdd)
e.POST("/live.liveadmin.v1.PayLive/update", payLiveUpdate)
e.GET("/live.liveadmin.v1.PayLive/getList", payLiveGetList)
e.POST("/live.liveadmin.v1.PayLive/close", payLiveClose)
e.POST("/live.liveadmin.v1.PayLive/open", payLiveOpen)
}

View File

@@ -0,0 +1,190 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/payLive/add](#xliveinternallive-adminv1payLiveadd)
- [/xlive/internal/live-admin/v1/payLive/update](#xliveinternallive-adminv1payLiveupdate)
- [/xlive/internal/live-admin/v1/payLive/getList](#xliveinternallive-adminv1payLivegetList)
- [/xlive/internal/live-admin/v1/payLive/close](#xliveinternallive-adminv1payLiveclose)
- [/xlive/internal/live-admin/v1/payLive/open](#xliveinternallive-adminv1payLiveopen)
## /xlive/internal/live-admin/v1/payLive/add
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string| 平台|
|room_id|是|integer| 商品名称|
|title|是|string| 商品名称|
|status|否|integer| 鉴权状态1开0关|
|start_time|是|string| 开始时间|
|end_time|是|string| 结束时间|
|live_end_time|否|string| 正片结束时间|
|live_pic|是|string| 正片保底图|
|ad_pic|是|string| 广告图|
|goods_link|是|string| 购买链接|
|goods_id|是|string| 门票id逗号分隔|
|ip_limit|否|integer| ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台|
|buy_goods_id|是|integer| 购买门票id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/payLive/update
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|live_id|是|integer| id|
|platform|否|string| 平台|
|room_id|是|integer| 商品名称|
|title|是|string| 商品名称|
|status|否|integer| 鉴权状态1开0关|
|start_time|是|string| 开始时间|
|end_time|是|string| 结束时间|
|live_end_time|是|string| 正片结束时间|
|live_pic|是|string| 正片保底图|
|ad_pic|是|string| 广告图|
|goods_link|是|string| 购买链接|
|goods_id|是|string| 门票id逗号分隔|
|ip_limit|否|integer| ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台|
|buy_goods_id|是|integer| 购买门票id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/payLive/getList
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|room_id|否|integer| 房间id|
|title|否|string| 商品名称|
|ip_limit|否|integer| ip限制|
|page_num|否|integer| 页号0开始|
|page_size|是|integer| 每页个数|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"page_info": {
// 记录总数
"total_count": 0,
// 当前页号
"page_num": 0
},
"goods_info": [
{
// 房间id
"room_id": 0,
// 付费直播id
"live_id": 0,
// 标题
"title": "",
// 平台
"platform": "",
// 生效状态1生效0未生效
"pay_live_status": 0,
// 开始购票时间
"start_time": "",
// 结束购票时间
"end_time": "",
// 正片结束
"live_end_time": "",
// 正片保底图
"live_pic": "",
// 广告图
"ad_pic": "",
// 购票链接
"goods_link": "",
// 购票id
"goods_id": "",
// ip限制
"ip_limit": 0,
// 鉴权状态0关闭1开启
"status": 0,
// 引导购票id
"buy_goods_id": 0
}
]
}
}
```
## /xlive/internal/live-admin/v1/payLive/close
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|live_id|是|integer| 直播id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/payLive/open
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|live_id|是|integer| 直播id|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,177 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
option (gogoproto.goproto_getters_all) = false;
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service PayLive {
// `method:"POST" internal:"true"` 生成付费直播信息
rpc add (PayLiveAddReq) returns (PayLiveAddResp);
// `method:"POST" internal:"true"` 更新付费直播信息
rpc update (PayLiveUpdateReq) returns (PayLiveUpdateResp);
// `internal:"true"` 获取付费直播列表
rpc getList (PayLiveGetListReq) returns (PayLiveGetListResp);
// `method:"POST" internal:"true"` 关闭鉴权
rpc close (PayLiveCloseReq) returns (PayLiveCloseResp);
// `method:"POST" internal:"true"` 开启鉴权
rpc open (PayLiveOpenReq) returns (PayLiveOpenResp);
}
message PayLiveAddReq {
// 平台
string platform = 1 [(gogoproto.moretags) = 'form:"platform"'];
// 商品名称
int64 room_id = 2 [(gogoproto.moretags) = 'form:"room_id" validate:"required"'];
// 商品名称
string title = 3 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
// 鉴权状态1开0关
int64 status = 4 [(gogoproto.moretags) = 'form:"status"'];
// 开始时间
string start_time = 5 [(gogoproto.moretags) = 'form:"start_time" validate:"required"'];
// 结束时间
string end_time = 6 [(gogoproto.moretags) = 'form:"end_time" validate:"required"'];
// 正片结束时间
string live_end_time = 7 [(gogoproto.moretags) = 'form:"live_end_time"'];
// 正片保底图
string live_pic = 8 [(gogoproto.moretags) = 'form:"live_pic" validate:"required"'];
// 广告图
string ad_pic = 9 [(gogoproto.moretags) = 'form:"ad_pic" validate:"required"'];
// 购买链接
string goods_link = 10 [(gogoproto.moretags) = 'form:"goods_link" validate:"required"'];
// 门票id逗号分隔
string goods_id = 11 [(gogoproto.moretags) = 'form:"goods_id" validate:"required"'];
// ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台
int64 ip_limit = 12 [(gogoproto.moretags) = 'form:"ip_limit"'];
// 购买门票id
int64 buy_goods_id = 13 [(gogoproto.moretags) = 'form:"buy_goods_id" validate:"required"'];
}
message PayLiveAddResp {
}
message PayLiveUpdateReq {
// id
int64 live_id = 1 [(gogoproto.moretags) = 'form:"live_id" validate:"required"'];
// 平台
string platform = 2 [(gogoproto.moretags) = 'form:"platform"'];
// 商品名称
int64 room_id = 3 [(gogoproto.moretags) = 'form:"room_id" validate:"required"'];
// 商品名称
string title = 4 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
// 鉴权状态1开0关
int64 status = 5 [(gogoproto.moretags) = 'form:"status"'];
// 开始时间
string start_time = 6 [(gogoproto.moretags) = 'form:"start_time" validate:"required"'];
// 结束时间
string end_time = 7 [(gogoproto.moretags) = 'form:"end_time" validate:"required"'];
// 正片结束时间
string live_end_time = 8 [(gogoproto.moretags) = 'form:"live_end_time" validate:"required"'];
// 正片保底图
string live_pic = 9 [(gogoproto.moretags) = 'form:"live_pic" validate:"required"'];
// 广告图
string ad_pic = 10 [(gogoproto.moretags) = 'form:"ad_pic" validate:"required"'];
// 购买链接
string goods_link = 11 [(gogoproto.moretags) = 'form:"goods_link" validate:"required"'];
// 门票id逗号分隔
string goods_id = 12 [(gogoproto.moretags) = 'form:"goods_id" validate:"required"'];
// ip限制0不限制1仅限大陆2仅限港澳台3大陆+港澳台
int64 ip_limit = 13 [(gogoproto.moretags) = 'form:"ip_limit"'];
// 购买门票id
int64 buy_goods_id = 14 [(gogoproto.moretags) = 'form:"buy_goods_id" validate:"required"'];
}
message PayLiveUpdateResp {
}
message PayLiveGetListReq {
// 房间id
int64 room_id = 1 [(gogoproto.moretags) = 'form:"room_id"'];
// 商品名称
string title = 2 [(gogoproto.moretags) = 'form:"title"'];
// ip限制
int64 ip_limit = 3 [(gogoproto.moretags) = 'form:"ip_limit"'];
// 页号0开始
int64 page_num = 4 [(gogoproto.moretags) = 'form:"page_num"'];
// 每页个数
int64 page_size = 5 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
}
message PayLiveGetListResp {
message PageInfo {
// 记录总数
int64 total_count = 1 [(gogoproto.jsontag) = "total_count"];
// 当前页号
int64 page_num = 2 [(gogoproto.jsontag) = "page_num"];
}
message GoodsInfo {
// 房间id
int64 room_id = 1 [(gogoproto.jsontag) = "room_id"];
// 付费直播id
int64 live_id = 2 [(gogoproto.jsontag) = "live_id"];
// 标题
string title = 3 [(gogoproto.jsontag) = "title"];
// 平台
string platform = 4 [(gogoproto.jsontag) = "platform"];
// 生效状态1生效0未生效
int64 pay_live_status = 5 [(gogoproto.jsontag) = "pay_live_status"];
// 开始购票时间
string start_time = 6 [(gogoproto.jsontag) = "start_time"];
// 结束购票时间
string end_time = 7 [(gogoproto.jsontag) = "end_time"];
// 正片结束
string live_end_time = 8 [(gogoproto.jsontag) = "live_end_time"];
// 正片保底图
string live_pic = 9 [(gogoproto.jsontag) = "live_pic"];
// 广告图
string ad_pic = 10 [(gogoproto.jsontag) = "ad_pic"];
// 购票链接
string goods_link = 11 [(gogoproto.jsontag) = "goods_link"];
// 购票id
string goods_id = 12 [(gogoproto.jsontag) = "goods_id"];
// ip限制
int64 ip_limit = 13 [(gogoproto.jsontag) = "ip_limit"];
// 鉴权状态0关闭1开启
int64 status = 14 [(gogoproto.jsontag) = "status"];
// 引导购票id
int64 buy_goods_id = 15 [(gogoproto.jsontag) = "buy_goods_id"];
}
PageInfo page_info = 1 [(gogoproto.jsontag) = "page_info"];
repeated GoodsInfo goods_info = 2 [(gogoproto.jsontag) = "goods_info"];
}
message PayLiveCloseReq {
// 直播id
int64 live_id = 1 [(gogoproto.moretags) = 'form:"live_id" validate:"required"'];
}
message PayLiveCloseResp {
}
message PayLiveOpenReq {
// 直播id
int64 live_id = 1 [(gogoproto.moretags) = 'form:"live_id" validate:"required"'];
}
message PayLiveOpenResp {
}

View File

@@ -0,0 +1,68 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/banner/getBlinkBanner](#xliveinternallive-adminv1bannergetBlinkBanner) 获取有效banner配置
- [/xlive/internal/live-admin/v1/banner/getBanner](#xliveinternallive-adminv1bannergetBanner) 获取有效banner配置
## /xlive/internal/live-admin/v1/banner/getBlinkBanner
###获取有效banner配置
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|build|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"id": 0,
"title": "",
"jumpPath": "",
"jumpTime": 0,
"jumpPathType": 0,
"imageUrl": ""
}
}
```
## /xlive/internal/live-admin/v1/banner/getBanner
###获取有效banner配置
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|build|是|integer||
|type|是|string||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"id": 0,
"title": "",
"jumpPath": "",
"jumpTime": 0,
"jumpPathType": 0,
"imageUrl": ""
}
]
}
}
```

View File

@@ -0,0 +1,243 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: resource.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:
resource.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 PathResourceAdd = "/live.liveadmin.v1.Resource/add"
var PathResourceAddEx = "/live.liveadmin.v1.Resource/addEx"
var PathResourceEdit = "/live.liveadmin.v1.Resource/edit"
var PathResourceOffline = "/live.liveadmin.v1.Resource/offline"
var PathResourceGetList = "/live.liveadmin.v1.Resource/getList"
var PathResourceGetPlatformList = "/live.liveadmin.v1.Resource/getPlatformList"
var PathResourceGetListEx = "/live.liveadmin.v1.Resource/getListEx"
var PathSplashGetInfo = "/live.liveadmin.v1.Splash/getInfo"
var PathBannerGetBlinkBanner = "/live.liveadmin.v1.Banner/getBlinkBanner"
var PathBannerGetBanner = "/live.liveadmin.v1.Banner/getBanner"
// ==================
// Resource Interface
// ==================
type ResourceBMServer interface {
// Add 添加资源接口
// `method:"POST" internal:"true" `
Add(ctx context.Context, req *AddReq) (resp *AddResp, err error)
// AddEx 添加资源接口(不限制位置和平台)
// `method:"POST" internal:"true" `
AddEx(ctx context.Context, req *AddReq) (resp *AddResp, err error)
// Edit 编辑资源接口
// `method:"POST" internal:"true" `
Edit(ctx context.Context, req *EditReq) (resp *EditResp, err error)
// Offline 下线资源接口
// `method:"POST" internal:"true" `
Offline(ctx context.Context, req *OfflineReq) (resp *OfflineResp, err error)
// GetList 获取资源列表
// `method:"GET" internal:"true" `
GetList(ctx context.Context, req *GetListReq) (resp *GetListResp, err error)
// 获取平台列表
// `method:"GET" internal:"true" `
GetPlatformList(ctx context.Context, req *GetPlatformListReq) (resp *GetPlatformListResp, err error)
// GetListEx 获取资源列表
// `method:"GET" internal:"true" `
GetListEx(ctx context.Context, req *GetListExReq) (resp *GetListExResp, err error)
}
var v1ResourceSvc ResourceBMServer
func resourceAdd(c *bm.Context) {
p := new(AddReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.Add(c, p)
c.JSON(resp, err)
}
func resourceAddEx(c *bm.Context) {
p := new(AddReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.AddEx(c, p)
c.JSON(resp, err)
}
func resourceEdit(c *bm.Context) {
p := new(EditReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.Edit(c, p)
c.JSON(resp, err)
}
func resourceOffline(c *bm.Context) {
p := new(OfflineReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.Offline(c, p)
c.JSON(resp, err)
}
func resourceGetList(c *bm.Context) {
p := new(GetListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.GetList(c, p)
c.JSON(resp, err)
}
func resourceGetPlatformList(c *bm.Context) {
p := new(GetPlatformListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.GetPlatformList(c, p)
c.JSON(resp, err)
}
func resourceGetListEx(c *bm.Context) {
p := new(GetListExReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1ResourceSvc.GetListEx(c, p)
c.JSON(resp, err)
}
// RegisterV1ResourceService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1ResourceService(e *bm.Engine, svc ResourceBMServer, midMap map[string]bm.HandlerFunc) {
v1ResourceSvc = svc
e.POST("/xlive/internal/live-admin/v1/resource/add", resourceAdd)
e.POST("/xlive/internal/live-admin/v1/resource/addEx", resourceAddEx)
e.POST("/xlive/internal/live-admin/v1/resource/edit", resourceEdit)
e.POST("/xlive/internal/live-admin/v1/resource/offline", resourceOffline)
e.GET("/xlive/internal/live-admin/v1/resource/getList", resourceGetList)
e.GET("/xlive/internal/live-admin/v1/resource/getPlatformList", resourceGetPlatformList)
e.GET("/xlive/internal/live-admin/v1/resource/getListEx", resourceGetListEx)
}
// RegisterResourceBMServer Register the blademaster route
func RegisterResourceBMServer(e *bm.Engine, server ResourceBMServer) {
v1ResourceSvc = server
e.POST("/live.liveadmin.v1.Resource/add", resourceAdd)
e.POST("/live.liveadmin.v1.Resource/addEx", resourceAddEx)
e.POST("/live.liveadmin.v1.Resource/edit", resourceEdit)
e.POST("/live.liveadmin.v1.Resource/offline", resourceOffline)
e.GET("/live.liveadmin.v1.Resource/getList", resourceGetList)
e.GET("/live.liveadmin.v1.Resource/getPlatformList", resourceGetPlatformList)
e.GET("/live.liveadmin.v1.Resource/getListEx", resourceGetListEx)
}
// ================
// Splash Interface
// ================
type SplashBMServer interface {
// 获取有效闪屏配置
// `method:"GET" internal:"true" `
GetInfo(ctx context.Context, req *GetInfoReq) (resp *GetInfoResp, err error)
}
var v1SplashSvc SplashBMServer
func splashGetInfo(c *bm.Context) {
p := new(GetInfoReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1SplashSvc.GetInfo(c, p)
c.JSON(resp, err)
}
// RegisterV1SplashService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1SplashService(e *bm.Engine, svc SplashBMServer, midMap map[string]bm.HandlerFunc) {
v1SplashSvc = svc
e.GET("/xlive/internal/live-admin/v1/splash/getInfo", splashGetInfo)
}
// RegisterSplashBMServer Register the blademaster route
func RegisterSplashBMServer(e *bm.Engine, server SplashBMServer) {
v1SplashSvc = server
e.GET("/live.liveadmin.v1.Splash/getInfo", splashGetInfo)
}
// ================
// Banner Interface
// ================
type BannerBMServer interface {
// 获取有效banner配置
// `method:"GET" internal:"true" `
GetBlinkBanner(ctx context.Context, req *GetInfoReq) (resp *GetInfoResp, err error)
// 获取有效banner配置
// `method:"GET" internal:"true" `
GetBanner(ctx context.Context, req *GetBannerReq) (resp *GetBannerResp, err error)
}
var v1BannerSvc BannerBMServer
func bannerGetBlinkBanner(c *bm.Context) {
p := new(GetInfoReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1BannerSvc.GetBlinkBanner(c, p)
c.JSON(resp, err)
}
func bannerGetBanner(c *bm.Context) {
p := new(GetBannerReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1BannerSvc.GetBanner(c, p)
c.JSON(resp, err)
}
// RegisterV1BannerService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1BannerService(e *bm.Engine, svc BannerBMServer, midMap map[string]bm.HandlerFunc) {
v1BannerSvc = svc
e.GET("/xlive/internal/live-admin/v1/banner/getBlinkBanner", bannerGetBlinkBanner)
e.GET("/xlive/internal/live-admin/v1/banner/getBanner", bannerGetBanner)
}
// RegisterBannerBMServer Register the blademaster route
func RegisterBannerBMServer(e *bm.Engine, server BannerBMServer) {
v1BannerSvc = server
e.GET("/live.liveadmin.v1.Banner/getBlinkBanner", bannerGetBlinkBanner)
e.GET("/live.liveadmin.v1.Banner/getBanner", bannerGetBanner)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,202 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
// addReq
message AddReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
string title = 2 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
string jumpPath = 3 [(gogoproto.moretags) = 'form:"jumpPath"'];
int64 jumpTime = 4 [(gogoproto.moretags) = 'form:"jumpTime"'];
string type = 5 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
string device = 6 [(gogoproto.moretags) = 'form:"device" validate:"required"'];
string startTime = 7 [(gogoproto.moretags) = 'form:"startTime" validate:"required"'];
string endTime = 8 [(gogoproto.moretags) = 'form:"endTime" validate:"required"'];
string imageUrl = 9 [(gogoproto.moretags) = 'form:"imageUrl" validate:"required"'];
int64 jumpPathType = 10 [(gogoproto.moretags) = 'form:"jumpPathType"'];
}
// addResp
message AddResp {
repeated int64 id = 1 [(gogoproto.jsontag) = "id"];
}
// editReq
message EditReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 id = 2 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
string title = 3 [(gogoproto.moretags) = 'form:"title"'];
string jumpPath = 4 [(gogoproto.moretags) = 'form:"jumpPath"'];
int64 jumpTime = 5 [(gogoproto.moretags) = 'form:"jumpTime"'];
string startTime = 7 [(gogoproto.moretags) = 'form:"startTime"'];
string endTime = 8 [(gogoproto.moretags) = 'form:"endTime"'];
string imageUrl = 9 [(gogoproto.moretags) = 'form:"imageUrl"'];
int64 jumpPathType = 10 [(gogoproto.moretags) = 'form:"jumpPathType"'];
}
// editResp
message EditResp {
}
//下线闪屏
message OfflineReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 id = 2 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message OfflineResp {
}
//获取闪屏配置列表
message GetListReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 page = 2 [(gogoproto.moretags) = 'form:"page"'];
int64 pageSize = 3 [(gogoproto.moretags) = 'form:"pageSize"'];
string type = 4 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
}
message GetListResp {
int64 currentPage = 1 [(gogoproto.jsontag) = "currentPage"];
int64 totalCount = 2 [(gogoproto.jsontag) = "totalCount"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
string device_platform = 4 [(gogoproto.jsontag) = "device_platform"];
int64 device_build = 5 [(gogoproto.jsontag) = "device_build"];
string startTime = 6 [(gogoproto.jsontag) = "startTime"];
string endTime = 7 [(gogoproto.jsontag) = "endTime"];
int64 status = 8 [(gogoproto.jsontag) = "status"];
int64 device_limit =9 [(gogoproto.jsontag) = "device_limit"];
string imageUrl = 10 [(gogoproto.jsontag) = "imageUrl"];
int64 jumpPathType = 11 [(gogoproto.jsontag) = "jumpPathType"];
int64 jumpTime = 12 [(gogoproto.jsontag) = "jumpTime"];
}
}
// 获取当前有效闪屏配置(客户端)
message GetInfoReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];;
int64 build = 2 [(gogoproto.moretags) = 'form:"build" validate:"required"'];;
}
message GetInfoResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
int64 jumpTime = 4 [(gogoproto.jsontag) = "jumpTime"];
int64 jumpPathType = 5 [(gogoproto.jsontag) = "jumpPathType"];
string imageUrl = 6 [(gogoproto.jsontag) = "imageUrl"];
}
// 获取当前有效banner配置(客户端)
message GetBlinkBannerReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];;
int64 build = 2 [(gogoproto.moretags) = 'form:"build" validate:"required"'];;
}
message GetBlinkBannerResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
int64 jumpTime = 4 [(gogoproto.jsontag) = "jumpTime"];
int64 jumpPathType = 5 [(gogoproto.jsontag) = "jumpPathType"];
string imageUrl = 6 [(gogoproto.jsontag) = "imageUrl"];
}
// 获取banner配置(客户端)
message GetBannerReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];;
int64 build = 2 [(gogoproto.moretags) = 'form:"build" validate:"required"'];;
string type = 3 [(gogoproto.moretags) = 'form:"type" validate:"required"'];;
}
message GetBannerResp {
repeated List list = 1 [(gogoproto.jsontag) = "list"];
message List {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
int64 jumpTime = 4 [(gogoproto.jsontag) = "jumpTime"];
int64 jumpPathType = 5 [(gogoproto.jsontag) = "jumpPathType"];
string imageUrl = 6 [(gogoproto.jsontag) = "imageUrl"];
}
}
message GetPlatformListReq {
int64 type=1 [(gogoproto.jsontag) = "type"];
}
message GetPlatformListResp {
repeated string platform =1 [(gogoproto.jsontag) = "platform"];
}
message GetListExReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 page = 2 [(gogoproto.moretags) = 'form:"page"'];
int64 pageSize = 3 [(gogoproto.moretags) = 'form:"pageSize"'];
repeated string type = 4 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
string device_platform = 5 [(gogoproto.moretags) = 'form:"device_platform"'];
string status = 6 [(gogoproto.moretags) = 'form:"status"'];
string startTime = 7 [(gogoproto.moretags) = 'form:"startTime"'];
string endTime = 8 [(gogoproto.moretags) = 'form:"endTime"'];
}
message GetListExResp {
int64 currentPage = 1 [(gogoproto.jsontag) = "currentPage"];
int64 totalCount = 2 [(gogoproto.jsontag) = "totalCount"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
string device_platform = 4 [(gogoproto.jsontag) = "device_platform"];
int64 device_build = 5 [(gogoproto.jsontag) = "device_build"];
string startTime = 6 [(gogoproto.jsontag) = "startTime"];
string endTime = 7 [(gogoproto.jsontag) = "endTime"];
int64 status = 8 [(gogoproto.jsontag) = "status"];
int64 device_limit =9 [(gogoproto.jsontag) = "device_limit"];
string imageUrl = 10 [(gogoproto.jsontag) = "imageUrl"];
int64 jumpPathType = 11 [(gogoproto.jsontag) = "jumpPathType"];
int64 jumpTime = 12 [(gogoproto.jsontag) = "jumpTime"];
string type = 13 [(gogoproto.jsontag) = "type"];
}
}
service Resource {
//Add 添加资源接口
// `method:"POST" internal:"true" `
rpc add(AddReq) returns (AddResp);
//AddEx 添加资源接口(不限制位置和平台)
// `method:"POST" internal:"true" `
rpc addEx(AddReq) returns (AddResp);
//Edit 编辑资源接口
// `method:"POST" internal:"true" `
rpc edit(EditReq) returns (EditResp);
//Offline 下线资源接口
// `method:"POST" internal:"true" `
rpc offline(OfflineReq) returns (OfflineResp);
//GetList 获取资源列表
// `method:"GET" internal:"true" `
rpc getList(GetListReq) returns (GetListResp);
//获取平台列表
// `method:"GET" internal:"true" `
rpc getPlatformList(GetPlatformListReq) returns (GetPlatformListResp);
//GetListEx 获取资源列表
// `method:"GET" internal:"true" `
rpc getListEx(GetListExReq) returns (GetListExResp);
}
service Splash {
//获取有效闪屏配置
// `method:"GET" internal:"true" `
rpc getInfo(GetInfoReq) returns (GetInfoResp);
}
service Banner {
//获取有效banner配置
// `method:"GET" internal:"true" `
rpc getBlinkBanner(GetInfoReq) returns (GetInfoResp);
//获取有效banner配置
// `method:"GET" internal:"true" `
rpc getBanner(GetBannerReq) returns (GetBannerResp);
}

View File

@@ -0,0 +1,252 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/resource/add](#xliveinternallive-adminv1resourceadd) Add 添加资源接口
- [/xlive/internal/live-admin/v1/resource/addEx](#xliveinternallive-adminv1resourceaddEx) AddEx 添加资源接口(不限制位置和平台)
- [/xlive/internal/live-admin/v1/resource/edit](#xliveinternallive-adminv1resourceedit) Edit 编辑资源接口
- [/xlive/internal/live-admin/v1/resource/offline](#xliveinternallive-adminv1resourceoffline) Offline 下线资源接口
- [/xlive/internal/live-admin/v1/resource/getList](#xliveinternallive-adminv1resourcegetList) GetList 获取资源列表
- [/xlive/internal/live-admin/v1/resource/getPlatformList](#xliveinternallive-adminv1resourcegetPlatformList) 获取平台列表
- [/xlive/internal/live-admin/v1/resource/getListEx](#xliveinternallive-adminv1resourcegetListEx) GetListEx 获取资源列表
## /xlive/internal/live-admin/v1/resource/add
###Add 添加资源接口
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|title|是|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|type|是|string||
|device|是|string||
|startTime|是|string||
|endTime|是|string||
|imageUrl|是|string||
|jumpPathType|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"id": [
0
]
}
}
```
## /xlive/internal/live-admin/v1/resource/addEx
###AddEx 添加资源接口(不限制位置和平台)
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|title|是|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|type|是|string||
|device|是|string||
|startTime|是|string||
|endTime|是|string||
|imageUrl|是|string||
|jumpPathType|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"id": [
0
]
}
}
```
## /xlive/internal/live-admin/v1/resource/edit
###Edit 编辑资源接口
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|id|是|integer||
|title|否|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|startTime|否|string||
|endTime|否|string||
|imageUrl|否|string||
|jumpPathType|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/resource/offline
###Offline 下线资源接口
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|id|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
}
}
```
## /xlive/internal/live-admin/v1/resource/getList
###GetList 获取资源列表
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|page|否|integer||
|pageSize|否|integer||
|type|是|string||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"currentPage": 0,
"totalCount": 0,
"list": [
{
"id": 0,
"title": "",
"jumpPath": "",
"device_platform": "",
"device_build": 0,
"startTime": "",
"endTime": "",
"status": 0,
"device_limit": 0,
"imageUrl": "",
"jumpPathType": 0,
"jumpTime": 0
}
]
}
}
```
## /xlive/internal/live-admin/v1/resource/getPlatformList
###获取平台列表
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|type|否|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"platform": [
""
]
}
}
```
## /xlive/internal/live-admin/v1/resource/getListEx
###GetListEx 获取资源列表
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|page|否|integer||
|pageSize|否|integer||
|type|是|多个string||
|device_platform|否|string||
|status|否|string||
|startTime|否|string||
|endTime|否|string||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"currentPage": 0,
"totalCount": 0,
"list": [
{
"id": 0,
"title": "",
"jumpPath": "",
"device_platform": "",
"device_build": 0,
"startTime": "",
"endTime": "",
"status": 0,
"device_limit": 0,
"imageUrl": "",
"jumpPathType": 0,
"jumpTime": 0,
"type": ""
}
]
}
}
```

View File

@@ -0,0 +1,32 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/splash/getInfo](#xliveinternallive-adminv1splashgetInfo) 获取有效闪屏配置
## /xlive/internal/live-admin/v1/splash/getInfo
###获取有效闪屏配置
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|是|string||
|build|是|integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"id": 0,
"title": "",
"jumpPath": "",
"jumpTime": 0,
"jumpPathType": 0,
"imageUrl": ""
}
}
```

View File

@@ -0,0 +1,59 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: room.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:
room.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 PathRoomMngGetSecondVerifyListWithPics = "/live.liveadmin.v1.roomMng/getSecondVerifyListWithPics"
// =================
// RoomMng Interface
// =================
type RoomMngBMServer interface {
// 获取带有图片地址的二次审核列表
// `method:"GET" internal:"true" `
GetSecondVerifyListWithPics(ctx context.Context, req *RoomMngGetSecondVerifyListReq) (resp *RoomMngGetSecondVerifyListResp, err error)
}
var v1RoomMngSvc RoomMngBMServer
func roomMngGetSecondVerifyListWithPics(c *bm.Context) {
p := new(RoomMngGetSecondVerifyListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1RoomMngSvc.GetSecondVerifyListWithPics(c, p)
c.JSON(resp, err)
}
// RegisterV1RoomMngService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1RoomMngService(e *bm.Engine, svc RoomMngBMServer, midMap map[string]bm.HandlerFunc) {
v1RoomMngSvc = svc
e.GET("/xlive/internal/live-admin/v1/roomMng/getSecondVerifyListWithPics", roomMngGetSecondVerifyListWithPics)
}
// RegisterRoomMngBMServer Register the blademaster route
func RegisterRoomMngBMServer(e *bm.Engine, server RoomMngBMServer) {
v1RoomMngSvc = server
e.GET("/live.liveadmin.v1.roomMng/getSecondVerifyListWithPics", roomMngGetSecondVerifyListWithPics)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
message RoomMngGetSecondVerifyListReq {
// 房间id
int64 room_id = 1 [(gogoproto.moretags) = 'form:"room_id"'];
// 分区id多个
string area = 2 [(gogoproto.moretags) = 'form:"area"'];
// 页数
int64 page = 3 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
// 页码
int64 pagesize = 4 [(gogoproto.moretags) = 'form:"pagesize"'];
// 业务0直播监控1直播鉴黄2房间举报
string biz = 5 [(gogoproto.moretags) = 'form:"biz"'];
}
message RoomMngGetSecondVerifyListResp {
message Result {
// 日志id
int64 id = 1 [(gogoproto.jsontag) = "id"];
// 当天切断记录
int64 recent_cut_times = 2 [(gogoproto.jsontag) = "recent_cut_times"];
// 当天警告记录
int64 recent_warn_times = 3 [(gogoproto.jsontag) = "recent_warn_times"];
// 用户名
string uname = 4 [(gogoproto.jsontag) = "uname"];
// 房间号
int64 room_id = 5 [(gogoproto.jsontag) = "room_id"];
// 主播id
int64 uid = 6 [(gogoproto.jsontag) = "uid"];
// 房间标题
string title = 7 [(gogoproto.jsontag) = "title"];
// 分区名
string area_v2_name = 8 [(gogoproto.jsontag) = "area_v2_name"];
// 粉丝数
int64 fc = 9 [(gogoproto.jsontag) = "fc"];
// 警告理由
string warn_reason = 10 [(gogoproto.jsontag) = "warn_reason"];
// 图片列表
repeated string pics = 11 [(gogoproto.jsontag) = "pics"];
// 警告时间
string break_time = 12 [(gogoproto.jsontag) = "break_time"];
// 共计警告时间
int64 warn_times = 13 [(gogoproto.jsontag) = "warn_times"];
}
//
repeated Result result = 1 [(gogoproto.jsontag) = "result"];
// 总数
int64 count = 2 [(gogoproto.jsontag) = "count"];
// 页码
int64 page = 3 [(gogoproto.jsontag) = "page"];
// 分页大小
int64 pagesize = 4 [(gogoproto.jsontag) = "pagesize"];
}
service roomMng{
// 获取带有图片地址的二次审核列表
// `method:"GET" internal:"true" `
rpc getSecondVerifyListWithPics(RoomMngGetSecondVerifyListReq) returns(RoomMngGetSecondVerifyListResp);
}

View File

@@ -0,0 +1,67 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/roomMng/getSecondVerifyListWithPics](#xliveinternallive-adminv1roomMnggetSecondVerifyListWithPics) 获取带有图片地址的二次审核列表
## /xlive/internal/live-admin/v1/roomMng/getSecondVerifyListWithPics
### 获取带有图片地址的二次审核列表
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|room_id|否|integer| 房间id|
|area|否|string| 分区id多个|
|page|是|integer| 页数|
|pagesize|否|integer| 页码|
|biz|否|string| 业务0直播监控1直播鉴黄2房间举报|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"result": [
{
// 日志id
"id": 0,
// 当天切断记录
"recent_cut_times": 0,
// 当天警告记录
"recent_warn_times": 0,
// 用户名
"uname": "",
// 房间号
"room_id": 0,
// 主播id
"uid": 0,
// 房间标题
"title": "",
// 分区名
"area_v2_name": "",
// 粉丝数
"fc": 0,
// 警告理由
"warn_reason": "",
// 图片列表
"pics": [
""
],
// 警告时间
"break_time": "",
// 共计警告时间
"warn_times": 0
}
],
// 总数
"count": 0,
// 页码
"page": 0,
// 分页大小
"pagesize": 0
}
}
```

View File

@@ -0,0 +1,96 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: upload.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:
upload.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 PathTokenNew = "/live.liveadmin.v1.Token/new"
var PathUploadFile = "/live.liveadmin.v1.Upload/file"
// ===============
// Token Interface
// ===============
type TokenBMServer interface {
// Request for a token for upload.
// `method:"POST" internal:"true"`
New(ctx context.Context, req *NewTokenReq) (resp *NewTokenResp, err error)
}
var v1TokenSvc TokenBMServer
func tokenNew(c *bm.Context) {
p := new(NewTokenReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TokenSvc.New(c, p)
c.JSON(resp, err)
}
// RegisterV1TokenService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1TokenService(e *bm.Engine, svc TokenBMServer, midMap map[string]bm.HandlerFunc) {
v1TokenSvc = svc
e.POST("/xlive/internal/live-admin/v1/token/new", tokenNew)
}
// RegisterTokenBMServer Register the blademaster route
func RegisterTokenBMServer(e *bm.Engine, server TokenBMServer) {
v1TokenSvc = server
e.POST("/live.liveadmin.v1.Token/new", tokenNew)
}
// ================
// Upload Interface
// ================
type UploadBMServer interface {
// `method:"POST" content-type:"multipart/form-data" midware:"cors,guest"`
File(ctx context.Context, req *UploadFileReq) (resp *UploadFileResp, err error)
}
var v1UploadSvc UploadBMServer
func uploadFile(c *bm.Context) {
p := new(UploadFileReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1UploadSvc.File(c, p)
c.JSON(resp, err)
}
// RegisterV1UploadService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1UploadService(e *bm.Engine, svc UploadBMServer, midMap map[string]bm.HandlerFunc) {
cors := midMap["cors"]
guest := midMap["guest"]
v1UploadSvc = svc
e.POST("/xlive/live-admin/v1/upload/file", cors, guest, uploadFile)
}
// RegisterUploadBMServer Register the blademaster route
func RegisterUploadBMServer(e *bm.Engine, server UploadBMServer) {
v1UploadSvc = server
e.POST("/live.liveadmin.v1.Upload/file", uploadFile)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,70 @@
syntax = "proto3";
package live.liveadmin.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service Token {
// Request for a token for upload.
// `method:"POST" internal:"true"`
rpc new (NewTokenReq) returns (NewTokenResp);
}
service Upload {
// `method:"POST" content-type:"multipart/form-data" midware:"cors,guest"`
rpc file (UploadFileReq) returns (UploadFileResp);
}
message NewTokenReq {
// 上传到 BFS 的 bucket
string bucket = 1 [(gogoproto.moretags) = 'form:"bucket" validate:"required"'];
// 上传到指定的 BFS 目录(可以用来区分业务)
string dir = 2 [(gogoproto.moretags) = 'form:"dir"'];
// 操作人mlive通过dashboard授权获取到的操作人
string operator = 3 [(gogoproto.moretags) = 'form:"operator" validate:"required"'];
}
message NewTokenResp {
// 授予的 token
string token = 1 [(gogoproto.jsontag) = "token"];
}
// The file/data part must use Request.FormFile() to retrieve manually.
message UploadFileReq {
// 上传到 BFS 的 bucket
string bucket = 1 [(gogoproto.moretags) = 'form:"bucket" validate:"required"'];
// 上传到指定的 BFS 目录(可以用来区分业务)
string dir = 2 [(gogoproto.moretags) = 'form:"dir"'];
// 上传的到bfs的文件名存储在bfs的文件名不传bfs会根据文件的sha1值生成并返回
string filename = 3 [(gogoproto.moretags) = 'form:"file_name"'];
// 上传的文件的类型(不指定时会自动检测文件类型)
string contentType = 4 [(gogoproto.moretags) = 'form:"content_type"'];
// 图片水印key添加图片水印需要上传该参数, 新业务需要提前向bfs申请
string wmKey = 5 [(gogoproto.moretags) = 'form:"wm_key"'];
// 文字水印限制不超过20个字符
string wmText = 6 [(gogoproto.moretags) = 'form:"wm_text"'];
// 水印位置右下角 到原图右下角 水平距离默认10px
uint32 wmPaddingX = 7 [(gogoproto.moretags) = 'form:"wm_padding_x"'];
// 水印位置右下角 到原图右下角 垂直距离默认10px
uint32 wmPaddingY = 8 [(gogoproto.moretags) = 'form:"wm_padding_y"'];
// 水印宽度占原图高度的比例(0,1) (只支持按照宽度压缩),默认值: 0.035
double wmScale = 9 [(gogoproto.moretags) = 'form:"wm_scale"'];
// 上传 Token通过 obtainToken 接口获取
string token = 10 [(gogoproto.moretags) = 'form:"token" validate:"required"'];
}
message UploadFileResp {
string url = 1 [(gogoproto.jsontag) = "url"];
}

View File

@@ -0,0 +1,29 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/internal/live-admin/v1/token/new](#xliveinternallive-adminv1tokennew) Request for a token for upload.
## /xlive/internal/live-admin/v1/token/new
### Request for a token for upload.
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|bucket|是|string| 上传到 BFS 的 bucket|
|dir|否|string| 上传到指定的 BFS 目录(可以用来区分业务)|
|operator|是|string| 操作人mlive通过dashboard授权获取到的操作人|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 授予的 token
"token": ""
}
}
```

View File

@@ -0,0 +1,35 @@
<!-- package=live.liveadmin.v1 -->
- [/xlive/live-admin/v1/upload/file](#xlivelive-adminv1uploadfile)
## /xlive/live-admin/v1/upload/file
### 无标题
#### 方法POST
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|bucket|是|string| 上传到 BFS 的 bucket|
|dir|否|string| 上传到指定的 BFS 目录(可以用来区分业务)|
|filename|否|string| 上传的到bfs的文件名存储在bfs的文件名不传bfs会根据文件的sha1值生成并返回|
|contentType|否|string| 上传的文件的类型(不指定时会自动检测文件类型)|
|wmKey|否|string| 图片水印key添加图片水印需要上传该参数, 新业务需要提前向bfs申请|
|wmText|否|string| 文字水印限制不超过20个字符|
|wmPaddingX|否|integer| 水印位置右下角 到原图右下角 水平距离默认10px|
|wmPaddingY|否|integer| 水印位置右下角 到原图右下角 垂直距离默认10px|
|wmScale|否|float| 水印宽度占原图高度的比例(0,1) (只支持按照宽度压缩),默认值: 0.035|
|token|是|string| 上传 Token通过 obtainToken 接口获取|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
"url": ""
}
}
```