守兔演出订单api接口支持
This commit is contained in:
parent
832a812e58
commit
dcc3d9a8ba
70
platform/shoutu-show/api.go
Normal file
70
platform/shoutu-show/api.go
Normal file
@ -0,0 +1,70 @@
|
||||
package shoutu_show
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"github.com/zywaited/xcopy"
|
||||
"repository.lenntc.com/lenntc/third-platform-sdk/client"
|
||||
"repository.lenntc.com/lenntc/third-platform-sdk/util"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ShouTuShowApi 守兔演唱会
|
||||
type ShouTuShowApi interface {
|
||||
// GenerateLink 生成推广链接
|
||||
GenerateLink(ctx context.Context, req GenerateLinkRequest) (*GenerateLinkResponse, error)
|
||||
}
|
||||
|
||||
type ShouTuShowApiImpl struct {
|
||||
log logx.Logger
|
||||
client *Client
|
||||
}
|
||||
|
||||
func newShouTuShowApiImpl(log logx.Logger, client *Client) ShouTuShowApi {
|
||||
return &ShouTuShowApiImpl{
|
||||
log: log,
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
func (a *ShouTuShowApiImpl) GenerateLink(ctx context.Context, req GenerateLinkRequest) (*GenerateLinkResponse, error) {
|
||||
if req.ActivityUrl == "" || req.Sid == "" {
|
||||
return nil, errors.New("请求参数activityUrl或sid不能为空")
|
||||
}
|
||||
//测试联调地址 https://pre-show.shouto.cn/?distributorId=8&subChannelId=
|
||||
//直接替换
|
||||
newUrl := strings.ReplaceAll(req.ActivityUrl, "subChannelId=", fmt.Sprintf("subChannelId=%s", req.Sid))
|
||||
return &GenerateLinkResponse{
|
||||
H5: newUrl,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// QueryOrderList 查询订单列表
|
||||
func (a *ShouTuShowApiImpl) QueryOrderList(ctx context.Context, req QueryOrderListRequest) ([]*OrderItem, error) {
|
||||
if req.StartTime <= 0 || req.EndTime <= 0 {
|
||||
return nil, errors.New("请求参数start_time或end_time为必传")
|
||||
}
|
||||
//sTime := time.Unix(req.StartTime, 0)
|
||||
//eTime := time.Unix(req.EndTime, 0)
|
||||
pageSize := 50
|
||||
|
||||
//todo时间筛选
|
||||
args := util.StructToMap(map[string]any{
|
||||
"pageNum": req.Page,
|
||||
"pageSize": pageSize,
|
||||
})
|
||||
request := &client.HttpRequest{Headers: a.client.headers, BodyArgs: args}
|
||||
response := new(QueryOrderListResponse)
|
||||
if err := a.client.HttpPost(GetOrderListUrl, request, &client.HttpResponse{Result: response}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
responseData := make([]*OrderItem, 0)
|
||||
if response.Data != nil && len(response.Data.Records) > 0 {
|
||||
if err := xcopy.Copy(&responseData, response.Data.Records); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return responseData, nil
|
||||
}
|
||||
36
platform/shoutu-show/client.go
Normal file
36
platform/shoutu-show/client.go
Normal file
@ -0,0 +1,36 @@
|
||||
package shoutu_show
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"repository.lenntc.com/lenntc/third-platform-sdk/client"
|
||||
)
|
||||
|
||||
// AuthConfig api鉴权参数
|
||||
type AuthConfig struct {
|
||||
AppKey string // api key
|
||||
AppSecret string // api key
|
||||
}
|
||||
|
||||
// Client 连接第三方平台的client
|
||||
type Client struct {
|
||||
log logx.Logger
|
||||
authConfig AuthConfig
|
||||
client.HttpClient
|
||||
headers map[string]string
|
||||
}
|
||||
|
||||
func NewApiClient(log logx.Logger, conf AuthConfig) ShouTuShowApi {
|
||||
clt := newClient(log, conf)
|
||||
return newShouTuShowApiImpl(log, clt)
|
||||
}
|
||||
|
||||
func newClient(log logx.Logger, conf AuthConfig) *Client {
|
||||
return &Client{
|
||||
log: log,
|
||||
authConfig: conf,
|
||||
HttpClient: client.NewHttpClient(log),
|
||||
headers: map[string]string{
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
}
|
||||
15
platform/shoutu-show/consts.go
Normal file
15
platform/shoutu-show/consts.go
Normal file
@ -0,0 +1,15 @@
|
||||
package shoutu_show
|
||||
|
||||
// 相关地址
|
||||
const (
|
||||
SiteDomain = "https://show.shoutoinfo.cn/prod-api" // Domain 后台域名
|
||||
SiteUrl = "https://show.shoutoinfo.cn/prod-api" // SiteUrl 后台地址
|
||||
DocUrl = "https://apifox.com/apidoc/shared-2c9bfdd9-5307-4d29-b71f-63b93393d607" // DocUrl 文档地址
|
||||
ApiDocUrl = "https://apifox.com/apidoc/shared-2c9bfdd9-5307-4d29-b71f-63b93393d607" // ApiDocUrl api文档地址
|
||||
)
|
||||
|
||||
// 接口地址
|
||||
const (
|
||||
ApiDomain = "https://pre-show.shoutoinfo.cn/prod-api" // Domain api域名
|
||||
GetOrderListUrl = ApiDomain + "/api/open/channel-order/page"
|
||||
)
|
||||
54
platform/shoutu-show/types.go
Normal file
54
platform/shoutu-show/types.go
Normal file
@ -0,0 +1,54 @@
|
||||
package shoutu_show
|
||||
|
||||
type GenerateLinkRequest struct {
|
||||
ActivityUrl string `json:"activityUrl"` // 渠道方合作页地址
|
||||
Sid string `json:"sid"` // 必传 自定义参数
|
||||
}
|
||||
|
||||
// GenerateLinkResponse 生成推广链接响应
|
||||
type GenerateLinkResponse struct {
|
||||
H5 string `json:"h5"` // H5链接
|
||||
}
|
||||
|
||||
type QueryOrderListRequest struct {
|
||||
StartTime int64 `json:"start_time"`
|
||||
EndTime int64 `json:"end_time"`
|
||||
Page int64 `json:"page"`
|
||||
}
|
||||
type QueryOrderListResponse struct {
|
||||
Code string `json:"code"`
|
||||
Mse string `json:"mse"`
|
||||
Success bool `json:"success"`
|
||||
CurrTime int64 `json:"currTime"`
|
||||
Data *OrderData `json:"data"`
|
||||
}
|
||||
type OrderData struct {
|
||||
PageNum int64 `json:"pageNum"` //当前页码
|
||||
PageSize int64 `json:"pageSize"` //每页数量
|
||||
Total int64 `json:"total"` //总数
|
||||
Records []*OrderItem `json:"records"`
|
||||
}
|
||||
type OrderItem struct {
|
||||
OrderNo string `json:"orderNo"` //订单号
|
||||
UserId int64 `json:"userId"` //用户Id
|
||||
UserNickname string `json:"userNickname"` //用户昵称
|
||||
UserHeadPic string `json:"userHeadPic"` //用户头像
|
||||
ChannelId int64 `json:"channelId"` //一级分销id
|
||||
SubChannelId int64 `json:"subChannelId"` //二级分销标识
|
||||
OrderSourceType string `json:"orderSourceType"` //订单来源类型【1-h5订单,2-api订单,3-微信小程序订单】
|
||||
PerformanceName string `json:"performanceName"` //演出信息
|
||||
SessionName string `json:"sessionName"` //场次信息
|
||||
TicketFaceName string `json:"ticketFaceName"` //票面信息
|
||||
BuyQty int `json:"buyQty"` //张数
|
||||
OrderType string `json:"orderType"` //订单类型
|
||||
OrderStatusDesc string `json:"orderStatusDesc"` //订单状态描述
|
||||
OrderStatus int `json:"orderStatus"` //订单状态值
|
||||
PayTime string `json:"payTime"` //订单支付时间 示例:2024-06-28 15:20:33
|
||||
PayAmt int `json:"payAmt"` //订单金额 单位:元
|
||||
CommissionAmt int `json:"commissionAmt"` //订单预估利润 单位:元
|
||||
CommissionRate int `json:"commissionRate"` //渠道分润比例 单位:%
|
||||
SettleTime string `json:"settleTime"` //渠道分润结算时间 示例:2024-06-28 15:20:33
|
||||
SettledCommissionAmt int `json:"settledCommissionAmt"` //已结算分润金额 单位:元
|
||||
OrderTime string `json:"orderTime"` //订单创建时间 示例:2024-06-28 15:20:33
|
||||
UpdateTime string `json:"updateTime"` //订单更新时间 示例:2024-06-28 15:20:33
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user