Compare commits
20 Commits
master
...
prod/prodv
| Author | SHA1 | Date |
|---|---|---|
|
|
c8b7989838 | |
|
|
667651240a | |
|
|
97d727c3af | |
|
|
40a0220800 | |
|
|
9c125f5562 | |
|
|
76f7b9e15c | |
|
|
dbbe1acbc2 | |
|
|
d715eb4a30 | |
|
|
ad517b9d56 | |
|
|
5e8d35df25 | |
|
|
e5dac17d5f | |
|
|
86b9079ffc | |
|
|
7aace0acfa | |
|
|
bdf42ccf99 | |
|
|
c5d4c7b989 | |
|
|
87314541c5 | |
|
|
d97e940255 | |
|
|
c25c67c070 | |
|
|
13e9f9d023 | |
|
|
6482c984fc |
41
Dockerfile
41
Dockerfile
|
|
@ -1,32 +1,25 @@
|
||||||
FROM registry.cn-chengdu.aliyuncs.com/go_ls/go-zero:v1 AS builder
|
|
||||||
|
|
||||||
LABEL stage=gobuilder
|
|
||||||
ENV CGO_ENABLED 0
|
|
||||||
ENV GOPROXY https://goproxy.cn,direct
|
|
||||||
|
|
||||||
WORKDIR /src
|
|
||||||
|
|
||||||
COPY ../.. .
|
|
||||||
RUN go mod tidy
|
|
||||||
RUN go build -ldflags="-s -w" -o /src/cmd/api/yl cmd/api/yl.go
|
|
||||||
|
|
||||||
|
|
||||||
FROM registry.cn-chengdu.aliyuncs.com/go_ls/alpha:v1 AS runtime
|
# 创建最终镜像,用于运行编译后的Go程序
|
||||||
|
FROM alpine
|
||||||
|
|
||||||
|
RUN echo 'http://mirrors.ustc.edu.cn/alpine/v3.5/main' > /etc/apk/repositories \
|
||||||
|
&& echo 'http://mirrors.ustc.edu.cn/alpine/v3.5/community' >>/etc/apk/repositories \
|
||||||
|
&& apk update && apk add tzdata \
|
||||||
|
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||||||
|
&& echo "Asia/Shanghai" > /etc/timezone \
|
||||||
|
|
||||||
|
|
||||||
|
# 设置工作目录
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
# 将编译好的二进制文件从构建阶段复制到运行阶段
|
||||||
|
COPY cmd/api/yl /app/cmd/api/yl
|
||||||
ENV TZ Asia/Shanghai
|
COPY cmd/api/config /app/cmd/api/config
|
||||||
COPY --from=builder /src /src
|
|
||||||
|
|
||||||
|
|
||||||
RUN mkdir "/var/log/supervisor"
|
|
||||||
|
|
||||||
ADD ./sh/startup.sh /opt/startup.sh
|
|
||||||
RUN sed -i 's/\r//g' /opt/startup.sh
|
|
||||||
ADD ./sh/supervisord.conf /etc/supervisord.conf
|
|
||||||
|
|
||||||
WORKDIR /src
|
|
||||||
EXPOSE 10102
|
EXPOSE 10102
|
||||||
#CMD ["sh","/opt/startup.sh"]
|
|
||||||
|
ENV TZ=Asia/Shanghai
|
||||||
|
# 设置容器启动时运行的命令
|
||||||
|
ENTRYPOINT ["/app/cmd/api/yl"]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
name: yl
|
||||||
|
Host: 0.0.0.0
|
||||||
|
Port: 10102
|
||||||
|
Cache:
|
||||||
|
- Host: 47.97.27.195:6379
|
||||||
|
Pass: lansexiongdi@666
|
||||||
|
Nacos:
|
||||||
|
Timeout: 5000
|
||||||
|
Endpoints:
|
||||||
|
- 120.55.12.245:10001
|
||||||
|
Sys:
|
||||||
|
PrimaryKey: "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC5FGH7Tq5u7pA/eh6AjAS0InykvWDJt095go8yK3w7+TRIhSYDdbRHlTgOQm4nWuMPfz3U2Rs1vJQwyyEYdylcYJ2zFLr7Vb1BdvkJ3Kz/2yJ6sz3BNq6xAHaeCKzA/WZxnc/ypfkGlrmfr2tNqCM9CUHUWryihBjLxwRiWLmo0aKgYpKLKYNixLgyqUYAifD3APncAduv6sSjUPMTyXMOlP1DXgVwX6IaUG/yV8/56Ew72Vdi/y4qZmCKMmXq4PovWrs8ISOEuhxbfLrGWbGCAVYPq7d7XaH+AOY4dhJZm7OZ43UGWw80QKGEPkvU4Oquzu8BqBh12md7Zsd6r0XzAgMBAAECggEAcLgTPKUc437z51UOwqeELdlbJFIaYn/8LTrwz1NgpH4P86L0FeNX2sjsjPK0d8+IvmV2WO2o/r9NWbI9A9N/Iz3MjcawYmZDj11QK0t1KZZil2wWzlfpaO+pTnJmFFvASq4ceeHPms2tW63QokkmvQOoTha9EBV3rJQW/XagDEolty57kkfmB31cQHJuAt+BF5EzBqv3q3jnqhsj8J/ddT0hadyKq65u85VomLH92asu/KKMKYYXC8aHjgX48chAmQUAHGM/HCD2owLHwtei2kPWNDx85ecBsglIX3wy0yhH1dnL+o3eeskVLl89ye3QCJPHJBaNUUfbgucgWT0bsQKBgQD1pPMAe31ZXajl9WlHMtn8qhpAGzi/GiiH6YrrHMQECC2GGuAakBko1Vhc+2HU35gwlPOhwMIOCapB0cCqcZVo3+71AKo78YvZLQ7yMuSsp0/Wn2N79NZ6+++wtHGPP9eHrLuWm23l15W7W0RcQptTaQupbculMQZ8b6cAjh6d1QKBgQDA4c4Xl2ePbQdgMMOuKTPPKF3QI1VhCVtxSV+Gj9MZBZedstz9+ZO3oxHhy8D5S9it1hE6dn6/a+7OWibZ/gBr1S0+11LcwKDb7q30dimr9bQs/srIywpoIIN8wVEkX4P9JLOWgQeAtq53IMba+cElef916aqyJpXuIek9lvUQpwKBgQCD7alNMwWpf3H8v4dhY+BLoRgkIfqiOGxYQogHqhVkjPfWNIzz9zxr/9lLZv+uEsBsJzOKRjpyy6ITY5H0eLhj8REnqMnFE/+mDlsenVLPn7Rzcns90ct3leOvpdnvs7wP9CdzxdqKPPUAAQ5/9o3xiFNpFbzv5Zq0LkslMy8iWQKBgQCiRJWctUxzllcRLpVBTPqAOkaKV195zmR2rzLFQvRmZZUDH7nZlQEYCgF+Q2tqj8uPm7tMwumo4wW55pAu7witr19sMbxNaWUrAeao9kvilkfpXsV9HYv4w/m6l+xKvGyPKDRJ1u1X9Nhb8mA5UsqSW8t2CIoJbHrQJwlRPlGXmwKBgQDg4rcsM2PmShOg8lSrHXPATXiZyyqpPJLpXbV6DRKyt7U6KWjyrplQN7yOoIUgsuD2OC/q67y7w1P3OY7X0RDnMr6MtIV0JyBJHg24eyBTqeLai2DqoHlsBOSvpJDZf+g/DXCjvHMWp1h0wqdj3aLthmU0dHM/CEqr/o7d8GwrGQ=="
|
||||||
|
Url: "http://pre.22233.cn/"
|
||||||
|
KEY: "da4953198bce4bc8eca9ff7101ae7eb8"
|
||||||
|
YouleHost: https://vshopmain.sdycsdyc.cn
|
||||||
|
|
||||||
|
MarketConfig:
|
||||||
|
AppId: "2783278"
|
||||||
|
PosId: "2783278"
|
||||||
|
SupplierSkuId:
|
||||||
|
872: "yl20240730"
|
||||||
|
|
||||||
|
DB:
|
||||||
|
Master:
|
||||||
|
DataSource: root:lansexiongdi6,@tcp(47.97.27.195:3306)/transfer?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai
|
||||||
|
Slave:
|
||||||
|
DataSource: root:lansexiongdi6,@tcp(47.97.27.195:3306)/transfer?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai
|
||||||
|
|
@ -21,5 +21,13 @@ service yl {
|
||||||
@doc "卡密同步发放接口"
|
@doc "卡密同步发放接口"
|
||||||
@handler yl
|
@handler yl
|
||||||
post /key/send (Req) returns (Resp)
|
post /key/send (Req) returns (Resp)
|
||||||
|
|
||||||
|
@doc "卡密异步发放接口"
|
||||||
|
@handler ylAsync
|
||||||
|
post /key/asyncSend (AsyncReq) returns (AsyncResp)
|
||||||
|
|
||||||
|
@doc "订单查询接口"
|
||||||
|
@handler getOrder
|
||||||
|
post /order/get (GetOrderReq) returns (GetOrderRsp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,4 +28,47 @@ type Resp{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type AsyncReq {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
Price int64 `json:"price"` //结算价格(单位:厘)
|
||||||
|
RequestTime int64 `json:"requestTime"` // 请求时间
|
||||||
|
CreateTime int64 `json:"createTime"` // 订单创建时间,对账时间请用此时间
|
||||||
|
skuId int64 `json:"skuId"` // 平台sku
|
||||||
|
SupplierSkuId int64 `json:"supplierSkuId"` // 供货商sku
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
Account string `json:"account"` // 充值账号
|
||||||
|
ExtendParams string `json:"extendParams"` // 额外参数
|
||||||
|
Count int64 `json:"count"` //数量(此字段只目前支持是金豆,积分等虚拟资产,其他商品不支持)
|
||||||
|
Sign string `json:"sign"`
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type AsyncResp {
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
Msg string `json:"msg"` // 返回信息
|
||||||
|
Status int `json:"status"` // 错误码: 0-成功 1-失败
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetOrderReq {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
RequestTime int64 `json:"requestTime"` // 请求时间
|
||||||
|
Sign string `json:"sign"`
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetOrderRsp {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
SupplierSkuId int64 `json:"supplierSkuId"` // 供货商sku
|
||||||
|
Count int64 `json:"count"` //数量(此字段只目前支持是金豆,积分等虚拟资产,其他商品不支持)
|
||||||
|
SendStatus int `json:"sendStatus"` // 发货状态: 0-发货中 1-发货成功 2-发货失败
|
||||||
|
Price int64 `json:"price"` //结算价格(单位:厘)
|
||||||
|
StatusTime int64 `json:"statusTime"` // 成功/失败时间
|
||||||
|
Msg string `json:"msg"` // 失败原因
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
CardNo string `json:"cardNo"` // 卡号,可为空字符串
|
||||||
|
CardKey string `json:"cardKey"` // 卡密,可为空字符串
|
||||||
|
CardExpireTime string `json:"cardExpireTime"` // 卡密过期时间,可为空字符串
|
||||||
|
CardExchangeUrl string `json:"cardExchangeUrl"` // 卡密兑换地址,可为空字符串
|
||||||
|
}
|
||||||
|
|
@ -14,6 +14,16 @@ type Config struct {
|
||||||
Url string
|
Url string
|
||||||
Key string
|
Key string
|
||||||
}
|
}
|
||||||
|
YouleHost string
|
||||||
|
MarketConfig MarketConfig
|
||||||
|
DB struct {
|
||||||
|
Master struct {
|
||||||
|
DataSource string
|
||||||
|
}
|
||||||
|
Slave struct {
|
||||||
|
DataSource string
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type Rpc struct {
|
type Rpc struct {
|
||||||
|
|
@ -21,5 +31,12 @@ type Rpc struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Nacos struct {
|
type Nacos struct {
|
||||||
|
Timeout int64
|
||||||
Endpoints []string
|
Endpoints []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MarketConfig struct {
|
||||||
|
AppId string
|
||||||
|
PosId string
|
||||||
|
SupplierSkuId map[string]string
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
// Code generated by goctl. DO NOT EDIT.
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
// goctl 1.7.2
|
||||||
|
|
||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -15,12 +17,24 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
rest.WithMiddlewares(
|
rest.WithMiddlewares(
|
||||||
[]rest.Middleware{serverCtx.SignMiddleware},
|
[]rest.Middleware{serverCtx.SignMiddleware},
|
||||||
[]rest.Route{
|
[]rest.Route{
|
||||||
|
{
|
||||||
|
// 卡密异步发放接口
|
||||||
|
Method: http.MethodPost,
|
||||||
|
Path: "/key/asyncSend",
|
||||||
|
Handler: yl.YlAsyncHandler(serverCtx),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
// 卡密同步发放接口
|
// 卡密同步发放接口
|
||||||
Method: http.MethodPost,
|
Method: http.MethodPost,
|
||||||
Path: "/key/send",
|
Path: "/key/send",
|
||||||
Handler: yl.YlHandler(serverCtx),
|
Handler: yl.YlHandler(serverCtx),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// 订单查询接口
|
||||||
|
Method: http.MethodPost,
|
||||||
|
Path: "/order/get",
|
||||||
|
Handler: yl.GetOrderHandler(serverCtx),
|
||||||
|
},
|
||||||
}...,
|
}...,
|
||||||
),
|
),
|
||||||
rest.WithPrefix("/market"),
|
rest.WithPrefix("/market"),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
package yl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
"rs/genModel"
|
||||||
|
"rs/untils/response"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
"rs/cmd/api/internal/logic/yl"
|
||||||
|
"rs/cmd/api/internal/svc"
|
||||||
|
"rs/cmd/api/internal/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 订单查询接口
|
||||||
|
func GetOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.GetOrderReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l := yl.NewGetOrderLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.GetOrder(&req)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, genModel.ErrNotFound) {
|
||||||
|
response.Err(w, response.HTTP_REUEST_NOT_FOUND, "")
|
||||||
|
} else {
|
||||||
|
response.Err(w, response.HTTP_REUEST_FAIL, err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
response.Suc(w, response.HTTP_SUCCESS, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package yl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"rs/untils/response"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
"rs/cmd/api/internal/logic/yl"
|
||||||
|
"rs/cmd/api/internal/svc"
|
||||||
|
"rs/cmd/api/internal/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 卡密异步发放接口
|
||||||
|
func YlAsyncHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AsyncReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l := yl.NewYlAsyncLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.YlAsync(&req)
|
||||||
|
if err != nil {
|
||||||
|
response.Err(w, response.HTTP_REUEST_FAIL, err.Error())
|
||||||
|
} else {
|
||||||
|
response.Suc(w, response.HTTP_SUCCESS, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
package yl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
"rs/cmd/api/internal/logic/vo"
|
||||||
|
"rs/cmd/api/internal/svc"
|
||||||
|
"rs/cmd/api/internal/types"
|
||||||
|
"rs/rpc/transfer"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GetOrderLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
// 订单查询接口
|
||||||
|
func NewGetOrderLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetOrderLogic {
|
||||||
|
return &GetOrderLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *GetOrderLogic) GetOrder(req *types.GetOrderReq) (resp *types.GetOrderRsp, err error) {
|
||||||
|
var (
|
||||||
|
status int
|
||||||
|
)
|
||||||
|
|
||||||
|
order, err := l.svcCtx.BaseServiceContext.YlOrdersMarketRepo.FindOneByDeliverOrderNoSupplierOrderNo(l.ctx, req.DeliverOrderNo, req.SupplierOrderNo)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if order.Status != 1 {
|
||||||
|
return nil, fmt.Errorf("订单发货失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 响应参数
|
||||||
|
data := transfer.MarketKeySendRes{}
|
||||||
|
err = json.Unmarshal([]byte(order.Resp.String), &data)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if data.Data.ShortUrl != "" {
|
||||||
|
status = 1
|
||||||
|
}
|
||||||
|
startTime, err := time.Parse("20060102", data.Data.VoucherSdate)
|
||||||
|
if err != nil {
|
||||||
|
startTime = time.Now()
|
||||||
|
}
|
||||||
|
endTime, err := time.Parse("20060102", data.Data.VoucherEdate)
|
||||||
|
if err != nil {
|
||||||
|
endTime = startTime.AddDate(0, 0, 30).Add(23*time.Hour + 59*time.Minute + 59*time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 请求参数
|
||||||
|
asyncReq := types.AsyncReq{}
|
||||||
|
err = json.Unmarshal([]byte(order.Request), &asyncReq)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp = &types.GetOrderRsp{
|
||||||
|
DeliverOrderNo: req.DeliverOrderNo,
|
||||||
|
SupplierOrderNo: req.SupplierOrderNo,
|
||||||
|
SupplierSkuId: asyncReq.SupplierSkuId,
|
||||||
|
Account: asyncReq.Account,
|
||||||
|
SendStatus: status,
|
||||||
|
Price: asyncReq.Price,
|
||||||
|
StatusTime: order.UpdateTime.Unix(),
|
||||||
|
Msg: "",
|
||||||
|
SupplierId: asyncReq.SupplierId,
|
||||||
|
CardNo: "",
|
||||||
|
CardKey: l.getCode(data.Data.VoucherCode),
|
||||||
|
CardExpireTime: endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second).Format(time.DateTime),
|
||||||
|
CardExchangeUrl: data.Data.ShortUrl,
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 营销系统查询
|
||||||
|
func (l *GetOrderLogic) GetOrder2(req *types.GetOrderReq) (resp *types.GetOrderRsp, err error) {
|
||||||
|
request := transfer.MarketQueryReq{
|
||||||
|
AppId: l.svcCtx.Config.MarketConfig.AppId,
|
||||||
|
ReqCode: "voucher.query",
|
||||||
|
MemId: fmt.Sprintf("%d", req.SupplierId),
|
||||||
|
ReqSerialNo: req.DeliverOrderNo,
|
||||||
|
Timestamp: time.Unix(req.RequestTime, 0).Format("20060102150405"),
|
||||||
|
//VoucherId: "yl20240730",
|
||||||
|
//VoucherCode: "AAAESSGEVVpTHsbe",
|
||||||
|
}
|
||||||
|
|
||||||
|
request.Sign = l.svcCtx.Config.Sys.PrimaryKey
|
||||||
|
|
||||||
|
result, err := l.svcCtx.TransferRpc.MarketQuery(l.ctx, &request)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if result.ErrCode != vo.RES_SUCCESS {
|
||||||
|
return nil, fmt.Errorf("请求失败:%v", result.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
resp = &types.GetOrderRsp{
|
||||||
|
DeliverOrderNo: req.DeliverOrderNo,
|
||||||
|
SupplierOrderNo: req.SupplierOrderNo,
|
||||||
|
//SupplierSkuId: req,
|
||||||
|
//Count: req.,
|
||||||
|
SendStatus: 1,
|
||||||
|
Price: 0,
|
||||||
|
StatusTime: 0,
|
||||||
|
Msg: "",
|
||||||
|
SupplierId: 0,
|
||||||
|
CardNo: "",
|
||||||
|
CardKey: "",
|
||||||
|
CardExpireTime: "",
|
||||||
|
CardExchangeUrl: result.Data.VoucherCode,
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *GetOrderLogic) getCode(voucherCode string) string {
|
||||||
|
if strings.Contains(voucherCode, "http") {
|
||||||
|
temp := strings.Split(strings.TrimSpace(voucherCode), "/")
|
||||||
|
return temp[len(temp)-1]
|
||||||
|
}
|
||||||
|
return voucherCode
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,278 @@
|
||||||
|
package yl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"github.com/bytedance/sonic"
|
||||||
|
"rs/genModel"
|
||||||
|
"rs/untils/sign"
|
||||||
|
|
||||||
|
"rs/cmd/api/internal/logic/vo"
|
||||||
|
"rs/rpc/transfer"
|
||||||
|
"rs/untils/httpclient"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"rs/cmd/api/internal/svc"
|
||||||
|
"rs/cmd/api/internal/types"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type YlAsyncLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
// 卡密异步发放接口
|
||||||
|
func NewYlAsyncLogic(ctx context.Context, svcCtx *svc.ServiceContext) *YlAsyncLogic {
|
||||||
|
return &YlAsyncLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *YlAsyncLogic) YlAsync(req *types.AsyncReq) (resp *types.AsyncResp, err error) {
|
||||||
|
var (
|
||||||
|
reqData transfer.MarketKeySendReq
|
||||||
|
VoucherId string
|
||||||
|
supplierOrderNo = req.DeliverOrderNo
|
||||||
|
result *transfer.MarketKeySendRes
|
||||||
|
)
|
||||||
|
defer func() {
|
||||||
|
var status int64
|
||||||
|
var msg string
|
||||||
|
if err != nil {
|
||||||
|
status = 2
|
||||||
|
msg = err.Error()
|
||||||
|
} else {
|
||||||
|
status = 1
|
||||||
|
}
|
||||||
|
// 记录订单
|
||||||
|
l.saveOrder(req, result, supplierOrderNo, VoucherId, msg, status)
|
||||||
|
}()
|
||||||
|
|
||||||
|
if v, ok := l.svcCtx.Config.MarketConfig.SupplierSkuId[strconv.Itoa(int(req.SupplierSkuId))]; ok {
|
||||||
|
VoucherId = v
|
||||||
|
} else {
|
||||||
|
return nil, fmt.Errorf("供货商sku 未配置")
|
||||||
|
}
|
||||||
|
|
||||||
|
reqData = transfer.MarketKeySendReq{
|
||||||
|
AppId: l.svcCtx.Config.MarketConfig.AppId,
|
||||||
|
ReqCode: "voucher.create",
|
||||||
|
MemId: fmt.Sprintf("%d", req.SupplierId),
|
||||||
|
ReqSerialNo: req.DeliverOrderNo,
|
||||||
|
Timestamp: time.Unix(req.CreateTime, 0).Format("20060102150405"),
|
||||||
|
PosId: l.svcCtx.Config.MarketConfig.PosId,
|
||||||
|
VoucherId: VoucherId,
|
||||||
|
VoucherNum: 1,
|
||||||
|
//MobileNo: extendParam.MobileNo,
|
||||||
|
//SendMsg: extendParam.SendMsg,
|
||||||
|
}
|
||||||
|
if reqData.SendMsg == "" {
|
||||||
|
reqData.SendMsg = "2"
|
||||||
|
}
|
||||||
|
|
||||||
|
reqData.Sign = l.svcCtx.Config.Sys.PrimaryKey
|
||||||
|
result, err = l.svcCtx.TransferRpc.MarketKeySend(l.ctx, &reqData)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("rpc请求失败:%v", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.ErrCode != vo.RES_SUCCESS {
|
||||||
|
return nil, fmt.Errorf("请求失败:%v", result.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Data == nil {
|
||||||
|
return nil, fmt.Errorf("请求失败:%v", result.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Data.VoucherCode == "" {
|
||||||
|
return nil, fmt.Errorf("请求失败未取到数据:%v", result.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 异步通知
|
||||||
|
go func() {
|
||||||
|
time.Sleep(2 * time.Second)
|
||||||
|
l.asyncSendMarket(supplierOrderNo, req, result.Data)
|
||||||
|
}()
|
||||||
|
|
||||||
|
return &types.AsyncResp{
|
||||||
|
Msg: "",
|
||||||
|
Status: 0,
|
||||||
|
SupplierOrderNo: supplierOrderNo,
|
||||||
|
}, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *YlAsyncLogic) getExchangeCode(voucherCode string) string {
|
||||||
|
if !strings.Contains(voucherCode, "http") {
|
||||||
|
return voucherCode
|
||||||
|
}
|
||||||
|
temp := strings.Split(voucherCode, "/")
|
||||||
|
return temp[len(temp)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 返回数据,通知下游系统
|
||||||
|
func (l *YlAsyncLogic) asyncSendMarket(supplierOrderNo string, asyncReq *types.AsyncReq, data *transfer.MarketKeySendRes_Data) {
|
||||||
|
startTime, err := time.Parse("20060102", data.VoucherSdate)
|
||||||
|
if err != nil {
|
||||||
|
startTime = time.Now()
|
||||||
|
}
|
||||||
|
endTime, err := time.Parse("20060102", data.VoucherEdate)
|
||||||
|
if err != nil {
|
||||||
|
endTime = startTime.AddDate(0, 0, 30).Add(23*time.Hour + 59*time.Minute + 59*time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
reqDataMap map[string]interface{}
|
||||||
|
header = map[string]string{"Content-Type": "application/json;charset=UTF-8"}
|
||||||
|
targetUrl = l.svcCtx.Config.YouleHost + "/supplier/order/sendResultNotify"
|
||||||
|
req = &types.NotifyReq{
|
||||||
|
DeliverOrderNo: asyncReq.DeliverOrderNo,
|
||||||
|
SupplierOrderNo: supplierOrderNo,
|
||||||
|
SupplierSkuId: asyncReq.SupplierSkuId,
|
||||||
|
RequestTime: time.Now().Unix(),
|
||||||
|
Account: asyncReq.Account,
|
||||||
|
Status: 1,
|
||||||
|
Msg: "",
|
||||||
|
Price: asyncReq.Price,
|
||||||
|
SupplierId: asyncReq.SupplierId,
|
||||||
|
CardNo: "",
|
||||||
|
CardKey: l.getCode(data.VoucherCode),
|
||||||
|
CardExpireTime: endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second).Format(time.DateTime),
|
||||||
|
CardExchangeUrl: data.ShortUrl,
|
||||||
|
Sign: "",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
b, _ := json.Marshal(req)
|
||||||
|
err = json.Unmarshal(b, &reqDataMap)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
req.Sign, err = sign.GetSign(reqDataMap, l.svcCtx.Config.Sys.Key)
|
||||||
|
if err != nil {
|
||||||
|
l.Logger.Errorf("签名失败:%v", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := sonic.Marshal(req)
|
||||||
|
if err != nil {
|
||||||
|
l.Logger.Errorf("解析json失败:%v", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := httpclient.FastHttpPost(targetUrl, header, body, 0)
|
||||||
|
if err != nil {
|
||||||
|
l.Logger.Errorf("请求失败:%v", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l.Logger.Infof("发货通知完成:url=%s,请求数据:%v 请求返回数据:%v", targetUrl, string(body), string(resp))
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 写入数据
|
||||||
|
func (l *YlAsyncLogic) saveOrder(req *types.AsyncReq, rsp *transfer.MarketKeySendRes, supplierOrderNo, VoucherId, msg string, status int64) {
|
||||||
|
// 查询订单
|
||||||
|
order, err := l.svcCtx.BaseServiceContext.YlOrdersMarketRepo.FindOneByDeliverOrderNoSupplierOrderNo(l.ctx, req.DeliverOrderNo, supplierOrderNo)
|
||||||
|
if err != nil {
|
||||||
|
if !errors.Is(err, genModel.ErrNotFound) {
|
||||||
|
l.Logger.Errorf("supplierOrderNo = %s 查询订单失败:%v", supplierOrderNo, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b, _ := json.Marshal(req)
|
||||||
|
rp, _ := json.Marshal(rsp)
|
||||||
|
if order != nil {
|
||||||
|
// 订单存在,更新
|
||||||
|
if order.Status != status {
|
||||||
|
order.Status = status
|
||||||
|
}
|
||||||
|
if order.Resp.String != string(rp) {
|
||||||
|
order.Resp.String = string(rp)
|
||||||
|
order.Resp.Valid = true
|
||||||
|
}
|
||||||
|
if order.Request != string(b) {
|
||||||
|
order.Request = string(b)
|
||||||
|
}
|
||||||
|
if msg != "" {
|
||||||
|
order.ErrMsg.String += msg
|
||||||
|
order.ErrMsg.Valid = true
|
||||||
|
}
|
||||||
|
if VoucherId != order.VoucherId {
|
||||||
|
order.VoucherId = VoucherId
|
||||||
|
}
|
||||||
|
|
||||||
|
err = l.svcCtx.BaseServiceContext.YlOrdersMarketRepo.Update(l.ctx, order)
|
||||||
|
if err != nil {
|
||||||
|
l.Logger.Errorf("DeliverOrderNo = %s 更新订单失败:%v", order.DeliverOrderNo, err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 订单不存在,插入
|
||||||
|
|
||||||
|
data := &genModel.YlOrdersMarket{
|
||||||
|
DeliverOrderNo: req.DeliverOrderNo,
|
||||||
|
SupplierOrderNo: supplierOrderNo,
|
||||||
|
Request: string(b),
|
||||||
|
Resp: sql.NullString{
|
||||||
|
String: string(rp),
|
||||||
|
Valid: true,
|
||||||
|
},
|
||||||
|
ErrMsg: sql.NullString{
|
||||||
|
String: msg,
|
||||||
|
Valid: true,
|
||||||
|
},
|
||||||
|
Status: status,
|
||||||
|
VoucherId: VoucherId,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = l.svcCtx.BaseServiceContext.YlOrdersMarketRepo.Insert(l.ctx, data)
|
||||||
|
if err != nil {
|
||||||
|
l.Logger.Errorf("data = %s 插入订单失败:%v", data, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新状态和响应数据
|
||||||
|
func (l *YlAsyncLogic) updateOrder(req *types.AsyncReq, rsp *transfer.MarketKeySendRes, supplierOrderNo string, status int64) {
|
||||||
|
|
||||||
|
order, err := l.svcCtx.BaseServiceContext.YlOrdersMarketRepo.FindOneByDeliverOrderNoSupplierOrderNo(l.ctx, req.DeliverOrderNo, supplierOrderNo)
|
||||||
|
if err != nil {
|
||||||
|
if !errors.Is(err, genModel.ErrNotFound) {
|
||||||
|
l.Logger.Errorf("data = %s 查询订单失败:%v", order, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if order != nil {
|
||||||
|
l.Logger.Errorf("DeliverOrderNo = %s 订单已存在", order.DeliverOrderNo)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
r, _ := json.Marshal(rsp)
|
||||||
|
order.Status = status
|
||||||
|
order.Resp = sql.NullString{
|
||||||
|
String: string(r),
|
||||||
|
Valid: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
err = l.svcCtx.BaseServiceContext.YlOrdersMarketRepo.Update(l.ctx, order)
|
||||||
|
if err != nil {
|
||||||
|
l.Logger.Errorf("order = %s 插入订单失败:%v", order, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *YlAsyncLogic) getCode(voucherCode string) string {
|
||||||
|
if strings.Contains(voucherCode, "http") {
|
||||||
|
temp := strings.Split(strings.TrimSpace(voucherCode), "/")
|
||||||
|
return temp[len(temp)-1]
|
||||||
|
}
|
||||||
|
return voucherCode
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"rs/cmd/api/internal/config"
|
"rs/cmd/api/internal/config"
|
||||||
|
"rs/cmd/api/internal/types"
|
||||||
"rs/untils/response"
|
"rs/untils/response"
|
||||||
"rs/untils/sign"
|
"rs/untils/sign"
|
||||||
)
|
)
|
||||||
|
|
@ -20,6 +21,11 @@ func NewSignMiddleware(c *config.Config) *SignMiddleware {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var signMiddleware = map[string]interface{}{
|
||||||
|
"/market/order/get": new(types.GetOrderReq),
|
||||||
|
"/market/key/asyncSend": new(types.AsyncReq),
|
||||||
|
}
|
||||||
|
|
||||||
func (m *SignMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
|
func (m *SignMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
var (
|
var (
|
||||||
|
|
@ -33,6 +39,16 @@ func (m *SignMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.Err(w, response.HTTP_AUTH_FAIL, "获取请求参数失败")
|
response.Err(w, response.HTTP_AUTH_FAIL, "获取请求参数失败")
|
||||||
}
|
}
|
||||||
|
// 特殊处理, 订单查询接口,只获取需要字段校验
|
||||||
|
if v, ok := signMiddleware[r.RequestURI]; ok {
|
||||||
|
err = json.Unmarshal(reqData, v)
|
||||||
|
if err != nil {
|
||||||
|
response.Err(w, response.HTTP_AUTH_FAIL, "获取请求参数失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reqData, err = json.Marshal(v)
|
||||||
|
}
|
||||||
|
|
||||||
err = json.Unmarshal(reqData, &reqDataMap)
|
err = json.Unmarshal(reqData, &reqDataMap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.Err(w, response.HTTP_AUTH_FAIL, "获取请求参数失败")
|
response.Err(w, response.HTTP_AUTH_FAIL, "获取请求参数失败")
|
||||||
|
|
@ -43,6 +59,11 @@ func (m *SignMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
|
||||||
if _, ok := reqDataMap["sign"]; !ok {
|
if _, ok := reqDataMap["sign"]; !ok {
|
||||||
response.Err(w, response.HTTP_AUTH_FAIL, err.Error())
|
response.Err(w, response.HTTP_AUTH_FAIL, err.Error())
|
||||||
}
|
}
|
||||||
|
// 订单查询过滤,supplierOrderNo 不参与签名
|
||||||
|
if r.RequestURI == "/market/order/get" {
|
||||||
|
delete(reqDataMap, "supplierOrderNo")
|
||||||
|
}
|
||||||
|
|
||||||
signString := reqDataMap["sign"].(string)
|
signString := reqDataMap["sign"].(string)
|
||||||
sysSign, err := sign.GetSign(reqDataMap, m.c.Sys.Key)
|
sysSign, err := sign.GetSign(reqDataMap, m.c.Sys.Key)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
package svc
|
package svc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
"github.com/zeromicro/go-zero/rest"
|
"github.com/zeromicro/go-zero/rest"
|
||||||
"github.com/zeromicro/go-zero/zrpc"
|
"github.com/zeromicro/go-zero/zrpc"
|
||||||
_ "github.com/zeromicro/zero-contrib/zrpc/registry/nacos"
|
_ "github.com/zeromicro/zero-contrib/zrpc/registry/nacos"
|
||||||
"rs/cmd/api/internal/config"
|
"rs/cmd/api/internal/config"
|
||||||
"rs/cmd/api/internal/middleware"
|
"rs/cmd/api/internal/middleware"
|
||||||
"rs/cmd/api/internal/types"
|
"rs/cmd/api/internal/types"
|
||||||
|
"rs/genModel"
|
||||||
"rs/rpc/transferClient"
|
"rs/rpc/transferClient"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -16,13 +18,21 @@ type ServiceContext struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServiceContext(c config.Config) *ServiceContext {
|
func NewServiceContext(c config.Config) *ServiceContext {
|
||||||
|
var timeOut int64 = 2000
|
||||||
|
if c.Nacos.Timeout > 2000 {
|
||||||
|
timeOut = c.Nacos.Timeout
|
||||||
|
}
|
||||||
client := transferClient.NewTransfer(zrpc.MustNewClient(zrpc.RpcClientConf{
|
client := transferClient.NewTransfer(zrpc.MustNewClient(zrpc.RpcClientConf{
|
||||||
Endpoints: c.Nacos.Endpoints,
|
Endpoints: c.Nacos.Endpoints,
|
||||||
|
Timeout: timeOut,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
sqlConn := sqlx.NewMysql(c.DB.Master.DataSource)
|
||||||
|
|
||||||
base := types.BaseServiceContext{
|
base := types.BaseServiceContext{
|
||||||
Config: c,
|
Config: c,
|
||||||
TransferRpc: client,
|
TransferRpc: client,
|
||||||
|
YlOrdersMarketRepo: genModel.NewYlOrdersMarketModel(sqlConn, c.Cache),
|
||||||
}
|
}
|
||||||
return &ServiceContext{
|
return &ServiceContext{
|
||||||
BaseServiceContext: &base,
|
BaseServiceContext: &base,
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ type BaseServiceContext struct {
|
||||||
Merchant genModel.MerchantModel
|
Merchant genModel.MerchantModel
|
||||||
TransferOrder genModel.ServerOrderModel
|
TransferOrder genModel.ServerOrderModel
|
||||||
MerchantWechat genModel.MerchantWechatModel
|
MerchantWechat genModel.MerchantWechatModel
|
||||||
|
YlOrdersMarketRepo genModel.YlOrdersMarketModel
|
||||||
}
|
}
|
||||||
|
|
||||||
type DecryptReqData struct {
|
type DecryptReqData struct {
|
||||||
|
|
@ -36,3 +37,25 @@ type KeySendExtendParam struct {
|
||||||
MobileNo string `json:"mobileNo"`
|
MobileNo string `json:"mobileNo"`
|
||||||
SendMsg string `json:"sendMsg"`
|
SendMsg string `json:"sendMsg"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NotifyReq struct {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
SupplierSkuId int64 `json:"supplierSkuId"` // 供货商sku
|
||||||
|
RequestTime int64 `json:"requestTime"` // 请求时间
|
||||||
|
Account string `json:"account"` // 充值账号
|
||||||
|
Status int `json:"status"` //错误码: 1-发货成功 2-发货失败
|
||||||
|
Msg string `json:"msg"` // 错误信息
|
||||||
|
Price int64 `json:"price"` //结算价格(单位:厘)
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
CardNo string `json:"cardNo"` // 卡号,可为空字符串
|
||||||
|
CardKey string `json:"cardKey"` // 卡密,可为空字符串
|
||||||
|
CardExpireTime string `json:"cardExpireTime"` // 卡密过期时间,可为空字符串
|
||||||
|
CardExchangeUrl string `json:"cardExchangeUrl"` // 卡密兑换地址,可为空字符串
|
||||||
|
Sign string `json:"sign"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type NotifyResp struct {
|
||||||
|
Status int `json:"status"` // 错误码: 0-成功 1-失败
|
||||||
|
Msg string `json:"msg"` // 返回信息
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,55 @@
|
||||||
// Code generated by goctl. DO NOT EDIT.
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
// goctl 1.7.2
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
|
type AsyncReq struct {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
Price int64 `json:"price"` //结算价格(单位:厘)
|
||||||
|
RequestTime int64 `json:"requestTime"` // 请求时间
|
||||||
|
CreateTime int64 `json:"createTime"` // 订单创建时间,对账时间请用此时间
|
||||||
|
SkuId int64 `json:"skuId"` // 平台sku
|
||||||
|
SupplierSkuId int64 `json:"supplierSkuId"` // 供货商sku
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
Account string `json:"account"` // 充值账号
|
||||||
|
ExtendParams string `json:"extendParams"` // 额外参数
|
||||||
|
Count int64 `json:"count"` //数量(此字段只目前支持是金豆,积分等虚拟资产,其他商品不支持)
|
||||||
|
Sign string `json:"sign"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AsyncResp struct {
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
Msg string `json:"msg"` // 返回信息
|
||||||
|
Status int `json:"status"` // 错误码: 0-成功 1-失败
|
||||||
|
}
|
||||||
|
|
||||||
type Empty struct {
|
type Empty struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetOrderReq struct {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
RequestTime int64 `json:"requestTime"` // 请求时间
|
||||||
|
Sign string `json:"sign"`
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetOrderRsp struct {
|
||||||
|
DeliverOrderNo string `json:"deliverOrderNo"` // 平台订单号
|
||||||
|
SupplierOrderNo string `json:"supplierOrderNo"` // 供货商订单号
|
||||||
|
SupplierSkuId int64 `json:"supplierSkuId"` // 供货商sku
|
||||||
|
Account string `json:"account"` //充值账号
|
||||||
|
SendStatus int `json:"sendStatus"` // 发货状态: 0-发货中 1-发货成功 2-发货失败
|
||||||
|
Price int64 `json:"price"` //结算价格(单位:厘)
|
||||||
|
StatusTime int64 `json:"statusTime"` // 成功/失败时间
|
||||||
|
Msg string `json:"msg"` // 失败原因
|
||||||
|
SupplierId int64 `json:"supplierId"` // 供货商id
|
||||||
|
CardNo string `json:"cardNo"` // 卡号,可为空字符串
|
||||||
|
CardKey string `json:"cardKey"` // 卡密,可为空字符串
|
||||||
|
CardExpireTime string `json:"cardExpireTime"` // 卡密过期时间,可为空字符串
|
||||||
|
CardExchangeUrl string `json:"cardExchangeUrl"` // 卡密兑换地址,可为空字符串
|
||||||
|
}
|
||||||
|
|
||||||
type Req struct {
|
type Req struct {
|
||||||
DeliverOrderNo string `json:"deliverOrderNo"`
|
DeliverOrderNo string `json:"deliverOrderNo"`
|
||||||
RequestTime int64 `json:"requestTime"`
|
RequestTime int64 `json:"requestTime"`
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@ package main
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
until "rs/untils"
|
|
||||||
|
|
||||||
"rs/cmd/api/internal/config"
|
"rs/cmd/api/internal/config"
|
||||||
"rs/cmd/api/internal/handler"
|
"rs/cmd/api/internal/handler"
|
||||||
"rs/cmd/api/internal/svc"
|
"rs/cmd/api/internal/svc"
|
||||||
|
|
@ -13,7 +11,7 @@ import (
|
||||||
"github.com/zeromicro/go-zero/rest"
|
"github.com/zeromicro/go-zero/rest"
|
||||||
)
|
)
|
||||||
|
|
||||||
var configFile = flag.String("f", fmt.Sprintf("%s%s", "etc/", until.GetConfig()), "the config file")
|
var configFile = flag.String("f", "cmd/api/config/config.yaml", "the config file")
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package genModel
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ YlOrdersMarketModel = (*customYlOrdersMarketModel)(nil)
|
||||||
|
|
||||||
|
type (
|
||||||
|
// YlOrdersMarketModel is an interface to be customized, add more methods here,
|
||||||
|
// and implement the added methods in customYlOrdersMarketModel.
|
||||||
|
YlOrdersMarketModel interface {
|
||||||
|
ylOrdersMarketModel
|
||||||
|
}
|
||||||
|
|
||||||
|
customYlOrdersMarketModel struct {
|
||||||
|
*defaultYlOrdersMarketModel
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewYlOrdersMarketModel returns a model for the database table.
|
||||||
|
func NewYlOrdersMarketModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) YlOrdersMarketModel {
|
||||||
|
return &customYlOrdersMarketModel{
|
||||||
|
defaultYlOrdersMarketModel: newYlOrdersMarketModel(conn, c, opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,154 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// goctl version: 1.7.2
|
||||||
|
|
||||||
|
package genModel
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
"github.com/zeromicro/go-zero/core/stringx"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ylOrdersMarketFieldNames = builder.RawFieldNames(&YlOrdersMarket{})
|
||||||
|
ylOrdersMarketRows = strings.Join(ylOrdersMarketFieldNames, ",")
|
||||||
|
ylOrdersMarketRowsExpectAutoSet = strings.Join(stringx.Remove(ylOrdersMarketFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
|
||||||
|
ylOrdersMarketRowsWithPlaceHolder = strings.Join(stringx.Remove(ylOrdersMarketFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
|
||||||
|
|
||||||
|
cacheTransferYlOrdersMarketIdPrefix = "cache:transfer:ylOrdersMarket:id:"
|
||||||
|
cacheTransferYlOrdersMarketDeliverOrderNoSupplierOrderNoPrefix = "cache:transfer:ylOrdersMarket:deliverOrderNo:supplierOrderNo:"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
ylOrdersMarketModel interface {
|
||||||
|
Insert(ctx context.Context, data *YlOrdersMarket) (sql.Result, error)
|
||||||
|
FindOne(ctx context.Context, id uint64) (*YlOrdersMarket, error)
|
||||||
|
FindOneByDeliverOrderNoSupplierOrderNo(ctx context.Context, deliverOrderNo string, supplierOrderNo string) (*YlOrdersMarket, error)
|
||||||
|
Update(ctx context.Context, data *YlOrdersMarket) error
|
||||||
|
Delete(ctx context.Context, id uint64) error
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultYlOrdersMarketModel struct {
|
||||||
|
sqlc.CachedConn
|
||||||
|
table string
|
||||||
|
}
|
||||||
|
|
||||||
|
YlOrdersMarket struct {
|
||||||
|
Id uint64 `db:"id"`
|
||||||
|
DeliverOrderNo string `db:"deliver_order_no"` // 平台订单号
|
||||||
|
SupplierOrderNo string `db:"supplier_order_no"` // 供货商订单号
|
||||||
|
Request string `db:"request"` // 请求数据
|
||||||
|
Resp sql.NullString `db:"resp"` // rpc返回数据
|
||||||
|
ErrMsg sql.NullString `db:"err_msg"` // 错误信息
|
||||||
|
Status int64 `db:"status"` // 发货状态: 0-发货中 1-发货成功 2-发货失败
|
||||||
|
VoucherId string `db:"voucher_id"` // 批次号
|
||||||
|
CreateTime time.Time `db:"create_time"`
|
||||||
|
UpdateTime time.Time `db:"update_time"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func newYlOrdersMarketModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultYlOrdersMarketModel {
|
||||||
|
return &defaultYlOrdersMarketModel{
|
||||||
|
CachedConn: sqlc.NewConn(conn, c, opts...),
|
||||||
|
table: "`yl_orders_market`",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) Delete(ctx context.Context, id uint64) error {
|
||||||
|
data, err := m.FindOne(ctx, id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey := fmt.Sprintf("%s%v:%v", cacheTransferYlOrdersMarketDeliverOrderNoSupplierOrderNoPrefix, data.DeliverOrderNo, data.SupplierOrderNo)
|
||||||
|
transferYlOrdersMarketIdKey := fmt.Sprintf("%s%v", cacheTransferYlOrdersMarketIdPrefix, id)
|
||||||
|
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||||
|
return conn.ExecCtx(ctx, query, id)
|
||||||
|
}, transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey, transferYlOrdersMarketIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) FindOne(ctx context.Context, id uint64) (*YlOrdersMarket, error) {
|
||||||
|
transferYlOrdersMarketIdKey := fmt.Sprintf("%s%v", cacheTransferYlOrdersMarketIdPrefix, id)
|
||||||
|
var resp YlOrdersMarket
|
||||||
|
err := m.QueryRowCtx(ctx, &resp, transferYlOrdersMarketIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", ylOrdersMarketRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, id)
|
||||||
|
})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) FindOneByDeliverOrderNoSupplierOrderNo(ctx context.Context, deliverOrderNo string, supplierOrderNo string) (*YlOrdersMarket, error) {
|
||||||
|
transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey := fmt.Sprintf("%s%v:%v", cacheTransferYlOrdersMarketDeliverOrderNoSupplierOrderNoPrefix, deliverOrderNo, supplierOrderNo)
|
||||||
|
var resp YlOrdersMarket
|
||||||
|
err := m.QueryRowIndexCtx(ctx, &resp, transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `deliver_order_no` = ? and `supplier_order_no` = ? limit 1", ylOrdersMarketRows, m.table)
|
||||||
|
if err := conn.QueryRowCtx(ctx, &resp, query, deliverOrderNo, supplierOrderNo); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return resp.Id, nil
|
||||||
|
}, m.queryPrimary)
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) Insert(ctx context.Context, data *YlOrdersMarket) (sql.Result, error) {
|
||||||
|
transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey := fmt.Sprintf("%s%v:%v", cacheTransferYlOrdersMarketDeliverOrderNoSupplierOrderNoPrefix, data.DeliverOrderNo, data.SupplierOrderNo)
|
||||||
|
transferYlOrdersMarketIdKey := fmt.Sprintf("%s%v", cacheTransferYlOrdersMarketIdPrefix, data.Id)
|
||||||
|
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?)", m.table, ylOrdersMarketRowsExpectAutoSet)
|
||||||
|
return conn.ExecCtx(ctx, query, data.DeliverOrderNo, data.SupplierOrderNo, data.Request, data.Resp, data.ErrMsg, data.Status, data.VoucherId)
|
||||||
|
}, transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey, transferYlOrdersMarketIdKey)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) Update(ctx context.Context, newData *YlOrdersMarket) error {
|
||||||
|
data, err := m.FindOne(ctx, newData.Id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey := fmt.Sprintf("%s%v:%v", cacheTransferYlOrdersMarketDeliverOrderNoSupplierOrderNoPrefix, data.DeliverOrderNo, data.SupplierOrderNo)
|
||||||
|
transferYlOrdersMarketIdKey := fmt.Sprintf("%s%v", cacheTransferYlOrdersMarketIdPrefix, data.Id)
|
||||||
|
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, ylOrdersMarketRowsWithPlaceHolder)
|
||||||
|
return conn.ExecCtx(ctx, query, newData.DeliverOrderNo, newData.SupplierOrderNo, newData.Request, newData.Resp, newData.ErrMsg, newData.Status, newData.VoucherId, newData.Id)
|
||||||
|
}, transferYlOrdersMarketDeliverOrderNoSupplierOrderNoKey, transferYlOrdersMarketIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) formatPrimary(primary any) string {
|
||||||
|
return fmt.Sprintf("%s%v", cacheTransferYlOrdersMarketIdPrefix, primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", ylOrdersMarketRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultYlOrdersMarketModel) tableName() string {
|
||||||
|
return m.table
|
||||||
|
}
|
||||||
19
go.mod
19
go.mod
|
|
@ -3,7 +3,9 @@ module rs
|
||||||
go 1.21
|
go 1.21
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/jinzhu/copier v0.4.0
|
github.com/bytedance/sonic v1.11.9
|
||||||
|
github.com/spf13/cast v1.6.0
|
||||||
|
github.com/valyala/fasthttp v1.57.0
|
||||||
github.com/zeromicro/go-zero v1.6.4
|
github.com/zeromicro/go-zero v1.6.4
|
||||||
github.com/zeromicro/zero-contrib/zrpc/registry/nacos v0.0.0-20231030135404-af9ae855016f
|
github.com/zeromicro/zero-contrib/zrpc/registry/nacos v0.0.0-20231030135404-af9ae855016f
|
||||||
google.golang.org/grpc v1.63.2
|
google.golang.org/grpc v1.63.2
|
||||||
|
|
@ -13,9 +15,9 @@ require (
|
||||||
require (
|
require (
|
||||||
filippo.io/edwards25519 v1.1.0 // indirect
|
filippo.io/edwards25519 v1.1.0 // indirect
|
||||||
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
|
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
|
||||||
|
github.com/andybalholm/brotli v1.1.1 // indirect
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/buger/jsonparser v1.1.1 // indirect
|
github.com/buger/jsonparser v1.1.1 // indirect
|
||||||
github.com/bytedance/sonic v1.11.9 // indirect
|
|
||||||
github.com/bytedance/sonic/loader v0.1.1 // indirect
|
github.com/bytedance/sonic/loader v0.1.1 // indirect
|
||||||
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
|
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
|
||||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||||
|
|
@ -45,6 +47,7 @@ require (
|
||||||
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
github.com/josharian/intern v1.0.0 // indirect
|
github.com/josharian/intern v1.0.0 // indirect
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/klauspost/compress v1.17.11 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
|
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
|
||||||
github.com/mailru/easyjson v0.7.7 // indirect
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
|
@ -63,8 +66,8 @@ require (
|
||||||
github.com/prometheus/procfs v0.12.0 // indirect
|
github.com/prometheus/procfs v0.12.0 // indirect
|
||||||
github.com/redis/go-redis/v9 v9.4.0 // indirect
|
github.com/redis/go-redis/v9 v9.4.0 // indirect
|
||||||
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
||||||
github.com/spf13/cast v1.6.0 // indirect
|
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
go.etcd.io/etcd/api/v3 v3.5.13 // indirect
|
go.etcd.io/etcd/api/v3 v3.5.13 // indirect
|
||||||
go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
|
go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
|
||||||
go.etcd.io/etcd/client/v3 v3.5.13 // indirect
|
go.etcd.io/etcd/client/v3 v3.5.13 // indirect
|
||||||
|
|
@ -84,12 +87,12 @@ require (
|
||||||
go.uber.org/multierr v1.9.0 // indirect
|
go.uber.org/multierr v1.9.0 // indirect
|
||||||
go.uber.org/zap v1.24.0 // indirect
|
go.uber.org/zap v1.24.0 // indirect
|
||||||
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
|
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
|
||||||
golang.org/x/net v0.24.0 // indirect
|
golang.org/x/net v0.30.0 // indirect
|
||||||
golang.org/x/oauth2 v0.17.0 // indirect
|
golang.org/x/oauth2 v0.17.0 // indirect
|
||||||
golang.org/x/sync v0.6.0 // indirect
|
golang.org/x/sync v0.8.0 // indirect
|
||||||
golang.org/x/sys v0.19.0 // indirect
|
golang.org/x/sys v0.26.0 // indirect
|
||||||
golang.org/x/term v0.19.0 // indirect
|
golang.org/x/term v0.25.0 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
golang.org/x/text v0.19.0 // indirect
|
||||||
golang.org/x/time v0.5.0 // indirect
|
golang.org/x/time v0.5.0 // indirect
|
||||||
google.golang.org/appengine v1.6.8 // indirect
|
google.golang.org/appengine v1.6.8 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
|
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
|
||||||
|
|
|
||||||
38
go.sum
38
go.sum
|
|
@ -755,6 +755,8 @@ github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0Yk
|
||||||
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 h1:PpfENOj/vPfhhy9N2OFRjpue0hjM5XqAp2thFmkXXIk=
|
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 h1:PpfENOj/vPfhhy9N2OFRjpue0hjM5XqAp2thFmkXXIk=
|
||||||
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
|
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
|
||||||
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||||
|
github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
|
||||||
|
github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
|
||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||||
github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=
|
github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=
|
||||||
github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI=
|
github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI=
|
||||||
|
|
@ -867,6 +869,8 @@ github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4Nij
|
||||||
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
||||||
|
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||||
|
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
github.com/fullstorydev/grpcurl v1.8.7/go.mod h1:pVtM4qe3CMoLaIzYS8uvTuDj2jVYmXqMUkZeijnXp/E=
|
github.com/fullstorydev/grpcurl v1.8.7/go.mod h1:pVtM4qe3CMoLaIzYS8uvTuDj2jVYmXqMUkZeijnXp/E=
|
||||||
|
|
@ -1095,8 +1099,6 @@ github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7
|
||||||
github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=
|
github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=
|
||||||
github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
|
github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
|
||||||
github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo=
|
github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo=
|
||||||
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
|
|
||||||
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
|
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||||
|
|
@ -1125,6 +1127,8 @@ github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e
|
||||||
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
|
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
|
||||||
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
|
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
|
||||||
github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4=
|
github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4=
|
||||||
|
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
|
||||||
|
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
|
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
||||||
|
|
@ -1339,6 +1343,10 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
github.com/urfave/cli/v2 v2.11.0/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo=
|
github.com/urfave/cli/v2 v2.11.0/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo=
|
||||||
|
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||||
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
|
github.com/valyala/fasthttp v1.57.0 h1:Xw8SjWGEP/+wAAgyy5XTvgrWlOD1+TxbbvNADYCm1Tg=
|
||||||
|
github.com/valyala/fasthttp v1.57.0/go.mod h1:h6ZBaPRlzpZ6O3H5t2gEk1Qi33+TmLvfwgLLp0t9CpE=
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||||
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
||||||
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
||||||
|
|
@ -1346,6 +1354,8 @@ github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgk
|
||||||
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
||||||
github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4=
|
github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4=
|
||||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
||||||
|
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||||
|
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
|
@ -1589,8 +1599,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
|
golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
|
||||||
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
|
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
|
||||||
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
|
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||||
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
|
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
|
@ -1644,8 +1654,8 @@ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJ
|
||||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
|
@ -1748,8 +1758,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
||||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
|
@ -1763,8 +1773,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||||
golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo=
|
golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo=
|
||||||
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
|
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
|
||||||
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
|
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
|
||||||
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
|
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
|
@ -1783,8 +1793,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
|
@ -1865,8 +1875,8 @@ golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
|
||||||
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
|
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
|
||||||
golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
|
golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
|
||||||
golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM=
|
golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM=
|
||||||
golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
|
||||||
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ message MarketQueryRes {
|
||||||
|
|
||||||
message MarketQueryReq {
|
message MarketQueryReq {
|
||||||
string app_id = 1;
|
string app_id = 1;
|
||||||
uint64 sign = 2;
|
string sign = 2;
|
||||||
string req_code = 3;
|
string req_code = 3;
|
||||||
string mem_id = 4;
|
string mem_id = 4;
|
||||||
string req_serial_no = 5;
|
string req_serial_no = 5;
|
||||||
|
|
@ -103,7 +103,7 @@ message MarketKeyDiscardRes {
|
||||||
|
|
||||||
message MarketKeyDiscardReq {
|
message MarketKeyDiscardReq {
|
||||||
string app_id = 1;
|
string app_id = 1;
|
||||||
uint64 sign = 2;
|
string sign = 2;
|
||||||
string req_code = 3;
|
string req_code = 3;
|
||||||
string mem_id = 4;
|
string mem_id = 4;
|
||||||
string req_serial_no = 5;
|
string req_serial_no = 5;
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// - protoc-gen-go-grpc v1.3.0
|
// - protoc-gen-go-grpc v1.4.0
|
||||||
// - protoc v3.6.1
|
// - protoc (unknown)
|
||||||
// source: transfer.proto
|
// source: transfer.proto
|
||||||
|
|
||||||
package transfer
|
package transfer
|
||||||
|
|
@ -15,8 +15,8 @@ import (
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
// is compatible with the grpc package it is being compiled against.
|
// is compatible with the grpc package it is being compiled against.
|
||||||
// Requires gRPC-Go v1.32.0 or later.
|
// Requires gRPC-Go v1.62.0 or later.
|
||||||
const _ = grpc.SupportPackageIsVersion7
|
const _ = grpc.SupportPackageIsVersion8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge"
|
Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge"
|
||||||
|
|
@ -31,6 +31,9 @@ const (
|
||||||
Transfer_MarketKeyDiscard_FullMethodName = "/transfer.Transfer/marketKeyDiscard"
|
Transfer_MarketKeyDiscard_FullMethodName = "/transfer.Transfer/marketKeyDiscard"
|
||||||
Transfer_MarketQuery_FullMethodName = "/transfer.Transfer/marketQuery"
|
Transfer_MarketQuery_FullMethodName = "/transfer.Transfer/marketQuery"
|
||||||
Transfer_RsCouponGrant_FullMethodName = "/transfer.Transfer/rsCouponGrant"
|
Transfer_RsCouponGrant_FullMethodName = "/transfer.Transfer/rsCouponGrant"
|
||||||
|
Transfer_NewMarketOrder_FullMethodName = "/transfer.Transfer/newMarketOrder"
|
||||||
|
Transfer_NewMarketQuery_FullMethodName = "/transfer.Transfer/newMarketQuery"
|
||||||
|
Transfer_NewMarketDiscard_FullMethodName = "/transfer.Transfer/newMarketDiscard"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TransferClient is the client API for Transfer service.
|
// TransferClient is the client API for Transfer service.
|
||||||
|
|
@ -49,6 +52,9 @@ type TransferClient interface {
|
||||||
MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error)
|
MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error)
|
||||||
MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error)
|
MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error)
|
||||||
RsCouponGrant(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error)
|
RsCouponGrant(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error)
|
||||||
|
NewMarketOrder(ctx context.Context, in *NewMarketOrderReq, opts ...grpc.CallOption) (*NewMarketOrderRes, error)
|
||||||
|
NewMarketQuery(ctx context.Context, in *NewMarketQueryReq, opts ...grpc.CallOption) (*NewMarketOrderRes, error)
|
||||||
|
NewMarketDiscard(ctx context.Context, in *NewMarketDiscardReq, opts ...grpc.CallOption) (*NewMarketDiscardRes, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type transferClient struct {
|
type transferClient struct {
|
||||||
|
|
@ -60,8 +66,9 @@ func NewTransferClient(cc grpc.ClientConnInterface) TransferClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) {
|
func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(DefaultRes)
|
out := new(DefaultRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxOrderRecharge_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxOrderRecharge_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -69,8 +76,9 @@ func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRec
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error) {
|
func (c *transferClient) ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(ZltxOrderRechargeQueryRes)
|
out := new(ZltxOrderRechargeQueryRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxOrderRechargeQuery_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxOrderRechargeQuery_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -78,8 +86,9 @@ func (c *transferClient) ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error) {
|
func (c *transferClient) ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(DefaultRes)
|
out := new(DefaultRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxOrderCard_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxOrderCard_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -87,8 +96,9 @@ func (c *transferClient) ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxOrderCardQuery(ctx context.Context, in *ZltxOrderCardQueryReq, opts ...grpc.CallOption) (*ZltxOrderCardQueryRes, error) {
|
func (c *transferClient) ZltxOrderCardQuery(ctx context.Context, in *ZltxOrderCardQueryReq, opts ...grpc.CallOption) (*ZltxOrderCardQueryRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(ZltxOrderCardQueryRes)
|
out := new(ZltxOrderCardQueryRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxOrderCardQuery_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxOrderCardQuery_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -96,8 +106,9 @@ func (c *transferClient) ZltxOrderCardQuery(ctx context.Context, in *ZltxOrderCa
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error) {
|
func (c *transferClient) ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(ZltxOrderSmsRes)
|
out := new(ZltxOrderSmsRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxOrderSms_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxOrderSms_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -105,8 +116,9 @@ func (c *transferClient) ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error) {
|
func (c *transferClient) ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(ZltxRechargeInfoRes)
|
out := new(ZltxRechargeInfoRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxRechargeInfo_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxRechargeInfo_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -114,8 +126,9 @@ func (c *transferClient) ZltxRechargeInfo(ctx context.Context, in *DefaultReq, o
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error) {
|
func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(ZltxRechargeProductRes)
|
out := new(ZltxRechargeProductRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxRechargeProduct_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxRechargeProduct_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -123,8 +136,9 @@ func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) ZltxRsMiXue(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error) {
|
func (c *transferClient) ZltxRsMiXue(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(RsCouponGrantRes)
|
out := new(RsCouponGrantRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_ZltxRsMiXue_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_ZltxRsMiXue_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -132,8 +146,9 @@ func (c *transferClient) ZltxRsMiXue(ctx context.Context, in *RsCouponGrantReq,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error) {
|
func (c *transferClient) MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(MarketKeySendRes)
|
out := new(MarketKeySendRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_MarketKeySend_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_MarketKeySend_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -141,8 +156,9 @@ func (c *transferClient) MarketKeySend(ctx context.Context, in *MarketKeySendReq
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error) {
|
func (c *transferClient) MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(MarketKeyDiscardRes)
|
out := new(MarketKeyDiscardRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_MarketKeyDiscard_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_MarketKeyDiscard_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -150,8 +166,9 @@ func (c *transferClient) MarketKeyDiscard(ctx context.Context, in *MarketKeyDisc
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error) {
|
func (c *transferClient) MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(MarketQueryRes)
|
out := new(MarketQueryRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_MarketQuery_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_MarketQuery_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -159,8 +176,39 @@ func (c *transferClient) MarketQuery(ctx context.Context, in *MarketQueryReq, op
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *transferClient) RsCouponGrant(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error) {
|
func (c *transferClient) RsCouponGrant(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(RsCouponGrantRes)
|
out := new(RsCouponGrantRes)
|
||||||
err := c.cc.Invoke(ctx, Transfer_RsCouponGrant_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Transfer_RsCouponGrant_FullMethodName, in, out, cOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *transferClient) NewMarketOrder(ctx context.Context, in *NewMarketOrderReq, opts ...grpc.CallOption) (*NewMarketOrderRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
out := new(NewMarketOrderRes)
|
||||||
|
err := c.cc.Invoke(ctx, Transfer_NewMarketOrder_FullMethodName, in, out, cOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *transferClient) NewMarketQuery(ctx context.Context, in *NewMarketQueryReq, opts ...grpc.CallOption) (*NewMarketOrderRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
out := new(NewMarketOrderRes)
|
||||||
|
err := c.cc.Invoke(ctx, Transfer_NewMarketQuery_FullMethodName, in, out, cOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *transferClient) NewMarketDiscard(ctx context.Context, in *NewMarketDiscardReq, opts ...grpc.CallOption) (*NewMarketDiscardRes, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
out := new(NewMarketDiscardRes)
|
||||||
|
err := c.cc.Invoke(ctx, Transfer_NewMarketDiscard_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -183,6 +231,9 @@ type TransferServer interface {
|
||||||
MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error)
|
MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error)
|
||||||
MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error)
|
MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error)
|
||||||
RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error)
|
RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error)
|
||||||
|
NewMarketOrder(context.Context, *NewMarketOrderReq) (*NewMarketOrderRes, error)
|
||||||
|
NewMarketQuery(context.Context, *NewMarketQueryReq) (*NewMarketOrderRes, error)
|
||||||
|
NewMarketDiscard(context.Context, *NewMarketDiscardReq) (*NewMarketDiscardRes, error)
|
||||||
mustEmbedUnimplementedTransferServer()
|
mustEmbedUnimplementedTransferServer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -226,6 +277,15 @@ func (UnimplementedTransferServer) MarketQuery(context.Context, *MarketQueryReq)
|
||||||
func (UnimplementedTransferServer) RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error) {
|
func (UnimplementedTransferServer) RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method RsCouponGrant not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method RsCouponGrant not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedTransferServer) NewMarketOrder(context.Context, *NewMarketOrderReq) (*NewMarketOrderRes, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method NewMarketOrder not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedTransferServer) NewMarketQuery(context.Context, *NewMarketQueryReq) (*NewMarketOrderRes, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method NewMarketQuery not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedTransferServer) NewMarketDiscard(context.Context, *NewMarketDiscardReq) (*NewMarketDiscardRes, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method NewMarketDiscard not implemented")
|
||||||
|
}
|
||||||
func (UnimplementedTransferServer) mustEmbedUnimplementedTransferServer() {}
|
func (UnimplementedTransferServer) mustEmbedUnimplementedTransferServer() {}
|
||||||
|
|
||||||
// UnsafeTransferServer may be embedded to opt out of forward compatibility for this service.
|
// UnsafeTransferServer may be embedded to opt out of forward compatibility for this service.
|
||||||
|
|
@ -455,6 +515,60 @@ func _Transfer_RsCouponGrant_Handler(srv interface{}, ctx context.Context, dec f
|
||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _Transfer_NewMarketOrder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(NewMarketOrderReq)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(TransferServer).NewMarketOrder(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: Transfer_NewMarketOrder_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(TransferServer).NewMarketOrder(ctx, req.(*NewMarketOrderReq))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Transfer_NewMarketQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(NewMarketQueryReq)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(TransferServer).NewMarketQuery(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: Transfer_NewMarketQuery_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(TransferServer).NewMarketQuery(ctx, req.(*NewMarketQueryReq))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Transfer_NewMarketDiscard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(NewMarketDiscardReq)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(TransferServer).NewMarketDiscard(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: Transfer_NewMarketDiscard_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(TransferServer).NewMarketDiscard(ctx, req.(*NewMarketDiscardReq))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
// Transfer_ServiceDesc is the grpc.ServiceDesc for Transfer service.
|
// Transfer_ServiceDesc is the grpc.ServiceDesc for Transfer service.
|
||||||
// It's only intended for direct use with grpc.RegisterService,
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
// and not to be introspected or modified (even as a copy)
|
// and not to be introspected or modified (even as a copy)
|
||||||
|
|
@ -510,6 +624,18 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{
|
||||||
MethodName: "rsCouponGrant",
|
MethodName: "rsCouponGrant",
|
||||||
Handler: _Transfer_RsCouponGrant_Handler,
|
Handler: _Transfer_RsCouponGrant_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "newMarketOrder",
|
||||||
|
Handler: _Transfer_NewMarketOrder_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "newMarketQuery",
|
||||||
|
Handler: _Transfer_NewMarketQuery_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "newMarketDiscard",
|
||||||
|
Handler: _Transfer_NewMarketDiscard_Handler,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Streams: []grpc.StreamDesc{},
|
Streams: []grpc.StreamDesc{},
|
||||||
Metadata: "transfer.proto",
|
Metadata: "transfer.proto",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
package httpclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/valyala/fasthttp"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FastHttpPost(url string, header map[string]string, body []byte, timeout int) ([]byte, error) {
|
||||||
|
req := fasthttp.AcquireRequest()
|
||||||
|
defer fasthttp.ReleaseRequest(req) // 用完需要释放资源
|
||||||
|
// 默认是application/x-www-form-urlencoded
|
||||||
|
req.Header.SetMethod("POST")
|
||||||
|
for k, v := range header {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
req.SetRequestURI(url)
|
||||||
|
req.SetBody(body)
|
||||||
|
resp := fasthttp.AcquireResponse()
|
||||||
|
defer fasthttp.ReleaseResponse(resp) // 用完需要释放资源
|
||||||
|
var err error
|
||||||
|
if timeout <= 0 {
|
||||||
|
if err = fasthttp.Do(req, resp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err = fasthttp.DoTimeout(req, resp, time.Duration(timeout)*time.Second); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b := resp.Body()
|
||||||
|
//fmt.Println(string(b),"http请求")
|
||||||
|
return b, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func FastHttpPostForm(url string, header map[string]string, body map[string]string, timeout int) ([]byte, error) {
|
||||||
|
req := fasthttp.AcquireRequest()
|
||||||
|
defer fasthttp.ReleaseRequest(req) // 用完需要释放资源
|
||||||
|
// 默认是application/x-www-form-urlencoded
|
||||||
|
req.Header.SetMethod("POST")
|
||||||
|
for k, v := range header {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
req.SetRequestURI(url)
|
||||||
|
args := &fasthttp.Args{}
|
||||||
|
for k, v := range body {
|
||||||
|
args.Add(k, v)
|
||||||
|
}
|
||||||
|
req.SetBody(args.QueryString())
|
||||||
|
resp := fasthttp.AcquireResponse()
|
||||||
|
defer fasthttp.ReleaseResponse(resp) // 用完需要释放资源
|
||||||
|
var err error
|
||||||
|
if timeout == 0 {
|
||||||
|
if err = fasthttp.Do(req, resp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := fasthttp.DoTimeout(req, resp, time.Duration(timeout)*time.Second); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b := resp.Body()
|
||||||
|
return b, nil
|
||||||
|
}
|
||||||
|
func FastHttpGet(url string, header map[string]string, body map[string]string, timeout int) ([]byte, error) {
|
||||||
|
req := fasthttp.AcquireRequest()
|
||||||
|
defer fasthttp.ReleaseRequest(req) // 用完需要释放资源
|
||||||
|
// 默认是application/x-www-form-urlencoded
|
||||||
|
req.Header.SetMethod("GET")
|
||||||
|
for k, v := range header {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
if len(body) > 0 {
|
||||||
|
url += "?"
|
||||||
|
for k, v := range body {
|
||||||
|
url += k + "=" + v + "&"
|
||||||
|
}
|
||||||
|
url = url[0 : len(url)-1]
|
||||||
|
}
|
||||||
|
fmt.Println(url)
|
||||||
|
req.SetRequestURI(url)
|
||||||
|
resp := fasthttp.AcquireResponse()
|
||||||
|
defer fasthttp.ReleaseResponse(resp) // 用完需要释放资源
|
||||||
|
var err error
|
||||||
|
if timeout == 0 {
|
||||||
|
if err = fasthttp.Do(req, resp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := fasthttp.DoTimeout(req, resp, time.Duration(timeout)*time.Second); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b := resp.Body()
|
||||||
|
return b, nil
|
||||||
|
}
|
||||||
|
|
@ -1,13 +1,15 @@
|
||||||
package response
|
package response
|
||||||
|
|
||||||
const (
|
const (
|
||||||
HTTP_SUCCESS = "000000"
|
HTTP_SUCCESS = "000000"
|
||||||
HTTP_AUTH_FAIL = "000101"
|
HTTP_AUTH_FAIL = "000101"
|
||||||
HTTP_REUEST_FAIL = "000102"
|
HTTP_REUEST_FAIL = "000102"
|
||||||
|
HTTP_REUEST_NOT_FOUND = "100030"
|
||||||
)
|
)
|
||||||
|
|
||||||
var CodeMsg = map[string]string{
|
var CodeMsg = map[string]string{
|
||||||
HTTP_SUCCESS: "操作成功",
|
HTTP_SUCCESS: "操作成功",
|
||||||
HTTP_AUTH_FAIL: "验签失败",
|
HTTP_AUTH_FAIL: "验签失败",
|
||||||
HTTP_REUEST_FAIL: "操作失败",
|
HTTP_REUEST_FAIL: "操作失败",
|
||||||
|
HTTP_REUEST_NOT_FOUND: "订单不存在",
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue