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
|
||||
|
||||
ENV TZ Asia/Shanghai
|
||||
COPY --from=builder /src /src
|
||||
# 将编译好的二进制文件从构建阶段复制到运行阶段
|
||||
COPY cmd/api/yl /app/cmd/api/yl
|
||||
COPY cmd/api/config /app/cmd/api/config
|
||||
|
||||
|
||||
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
|
||||
#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 "卡密同步发放接口"
|
||||
@handler yl
|
||||
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
|
||||
Key string
|
||||
}
|
||||
YouleHost string
|
||||
MarketConfig MarketConfig
|
||||
DB struct {
|
||||
Master struct {
|
||||
DataSource string
|
||||
}
|
||||
Slave struct {
|
||||
DataSource string
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type Rpc struct {
|
||||
|
|
@ -21,5 +31,12 @@ type Rpc struct {
|
|||
}
|
||||
|
||||
type Nacos struct {
|
||||
Timeout int64
|
||||
Endpoints []string
|
||||
}
|
||||
|
||||
type MarketConfig struct {
|
||||
AppId string
|
||||
PosId string
|
||||
SupplierSkuId map[string]string
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
// Code generated by goctl. DO NOT EDIT.
|
||||
// goctl 1.7.2
|
||||
|
||||
package handler
|
||||
|
||||
import (
|
||||
|
|
@ -15,12 +17,24 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
rest.WithMiddlewares(
|
||||
[]rest.Middleware{serverCtx.SignMiddleware},
|
||||
[]rest.Route{
|
||||
{
|
||||
// 卡密异步发放接口
|
||||
Method: http.MethodPost,
|
||||
Path: "/key/asyncSend",
|
||||
Handler: yl.YlAsyncHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
// 卡密同步发放接口
|
||||
Method: http.MethodPost,
|
||||
Path: "/key/send",
|
||||
Handler: yl.YlHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
// 订单查询接口
|
||||
Method: http.MethodPost,
|
||||
Path: "/order/get",
|
||||
Handler: yl.GetOrderHandler(serverCtx),
|
||||
},
|
||||
}...,
|
||||
),
|
||||
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"
|
||||
"net/http"
|
||||
"rs/cmd/api/internal/config"
|
||||
"rs/cmd/api/internal/types"
|
||||
"rs/untils/response"
|
||||
"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 {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
|
|
@ -33,6 +39,16 @@ func (m *SignMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
|
|||
if err != nil {
|
||||
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)
|
||||
if err != nil {
|
||||
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 {
|
||||
response.Err(w, response.HTTP_AUTH_FAIL, err.Error())
|
||||
}
|
||||
// 订单查询过滤,supplierOrderNo 不参与签名
|
||||
if r.RequestURI == "/market/order/get" {
|
||||
delete(reqDataMap, "supplierOrderNo")
|
||||
}
|
||||
|
||||
signString := reqDataMap["sign"].(string)
|
||||
sysSign, err := sign.GetSign(reqDataMap, m.c.Sys.Key)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
"github.com/zeromicro/go-zero/zrpc"
|
||||
_ "github.com/zeromicro/zero-contrib/zrpc/registry/nacos"
|
||||
"rs/cmd/api/internal/config"
|
||||
"rs/cmd/api/internal/middleware"
|
||||
"rs/cmd/api/internal/types"
|
||||
"rs/genModel"
|
||||
"rs/rpc/transferClient"
|
||||
)
|
||||
|
||||
|
|
@ -16,13 +18,21 @@ type ServiceContext struct {
|
|||
}
|
||||
|
||||
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{
|
||||
Endpoints: c.Nacos.Endpoints,
|
||||
Timeout: timeOut,
|
||||
}))
|
||||
|
||||
sqlConn := sqlx.NewMysql(c.DB.Master.DataSource)
|
||||
|
||||
base := types.BaseServiceContext{
|
||||
Config: c,
|
||||
TransferRpc: client,
|
||||
Config: c,
|
||||
TransferRpc: client,
|
||||
YlOrdersMarketRepo: genModel.NewYlOrdersMarketModel(sqlConn, c.Cache),
|
||||
}
|
||||
return &ServiceContext{
|
||||
BaseServiceContext: &base,
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ type BaseServiceContext struct {
|
|||
Merchant genModel.MerchantModel
|
||||
TransferOrder genModel.ServerOrderModel
|
||||
MerchantWechat genModel.MerchantWechatModel
|
||||
YlOrdersMarketRepo genModel.YlOrdersMarketModel
|
||||
}
|
||||
|
||||
type DecryptReqData struct {
|
||||
|
|
@ -36,3 +37,25 @@ type KeySendExtendParam struct {
|
|||
MobileNo string `json:"mobileNo"`
|
||||
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.
|
||||
// goctl 1.7.2
|
||||
|
||||
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 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 {
|
||||
DeliverOrderNo string `json:"deliverOrderNo"`
|
||||
RequestTime int64 `json:"requestTime"`
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
until "rs/untils"
|
||||
|
||||
"rs/cmd/api/internal/config"
|
||||
"rs/cmd/api/internal/handler"
|
||||
"rs/cmd/api/internal/svc"
|
||||
|
|
@ -13,7 +11,7 @@ import (
|
|||
"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() {
|
||||
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
|
||||
|
||||
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/zero-contrib/zrpc/registry/nacos v0.0.0-20231030135404-af9ae855016f
|
||||
google.golang.org/grpc v1.63.2
|
||||
|
|
@ -13,9 +15,9 @@ require (
|
|||
require (
|
||||
filippo.io/edwards25519 v1.1.0 // 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/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/cenkalti/backoff/v4 v4.2.1 // 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/josharian/intern v1.0.0 // 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/mailru/easyjson v0.7.7 // 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/redis/go-redis/v9 v9.4.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/valyala/bytebufferpool v1.0.0 // 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/v3 v3.5.13 // indirect
|
||||
|
|
@ -84,12 +87,12 @@ require (
|
|||
go.uber.org/multierr v1.9.0 // indirect
|
||||
go.uber.org/zap v1.24.0 // 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/sync v0.6.0 // indirect
|
||||
golang.org/x/sys v0.19.0 // indirect
|
||||
golang.org/x/term v0.19.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/sync v0.8.0 // indirect
|
||||
golang.org/x/sys v0.26.0 // indirect
|
||||
golang.org/x/term v0.25.0 // indirect
|
||||
golang.org/x/text v0.19.0 // indirect
|
||||
golang.org/x/time v0.5.0 // indirect
|
||||
google.golang.org/appengine v1.6.8 // 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/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
|
||||
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/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=
|
||||
|
|
@ -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.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/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.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
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.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
|
||||
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.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||
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.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
|
||||
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/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
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/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||
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/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
||||
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/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/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/yuin/goldmark v1.1.25/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.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.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
|
||||
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
|
||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||
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-20190226205417-e64efc72b421/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.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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||
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-20180905080454-ebe1bf3edb33/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.9.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.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
||||
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-20210927222741-03fcf44c2211/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.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo=
|
||||
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.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
|
||||
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
|
||||
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.3.0/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.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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
||||
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-20190308202827-9d24e82272b4/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.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.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
|
||||
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
|
||||
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-20191011141410-1b5146add898/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 {
|
||||
string app_id = 1;
|
||||
uint64 sign = 2;
|
||||
string sign = 2;
|
||||
string req_code = 3;
|
||||
string mem_id = 4;
|
||||
string req_serial_no = 5;
|
||||
|
|
@ -103,7 +103,7 @@ message MarketKeyDiscardRes {
|
|||
|
||||
message MarketKeyDiscardReq {
|
||||
string app_id = 1;
|
||||
uint64 sign = 2;
|
||||
string sign = 2;
|
||||
string req_code = 3;
|
||||
string mem_id = 4;
|
||||
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.
|
||||
// versions:
|
||||
// - protoc-gen-go-grpc v1.3.0
|
||||
// - protoc v3.6.1
|
||||
// - protoc-gen-go-grpc v1.4.0
|
||||
// - protoc (unknown)
|
||||
// source: transfer.proto
|
||||
|
||||
package transfer
|
||||
|
|
@ -15,8 +15,8 @@ import (
|
|||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
// Requires gRPC-Go v1.32.0 or later.
|
||||
const _ = grpc.SupportPackageIsVersion7
|
||||
// Requires gRPC-Go v1.62.0 or later.
|
||||
const _ = grpc.SupportPackageIsVersion8
|
||||
|
||||
const (
|
||||
Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge"
|
||||
|
|
@ -31,6 +31,9 @@ const (
|
|||
Transfer_MarketKeyDiscard_FullMethodName = "/transfer.Transfer/marketKeyDiscard"
|
||||
Transfer_MarketQuery_FullMethodName = "/transfer.Transfer/marketQuery"
|
||||
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.
|
||||
|
|
@ -49,6 +52,9 @@ type TransferClient interface {
|
|||
MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error)
|
||||
MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, 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 {
|
||||
|
|
@ -60,8 +66,9 @@ func NewTransferClient(cc grpc.ClientConnInterface) TransferClient {
|
|||
}
|
||||
|
||||
func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
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) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
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 {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -183,6 +231,9 @@ type TransferServer interface {
|
|||
MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error)
|
||||
MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, 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()
|
||||
}
|
||||
|
||||
|
|
@ -226,6 +277,15 @@ func (UnimplementedTransferServer) MarketQuery(context.Context, *MarketQueryReq)
|
|||
func (UnimplementedTransferServer) RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error) {
|
||||
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() {}
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
||||
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.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
|
|
@ -510,6 +624,18 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "rsCouponGrant",
|
||||
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{},
|
||||
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
|
||||
|
||||
const (
|
||||
HTTP_SUCCESS = "000000"
|
||||
HTTP_AUTH_FAIL = "000101"
|
||||
HTTP_REUEST_FAIL = "000102"
|
||||
HTTP_SUCCESS = "000000"
|
||||
HTTP_AUTH_FAIL = "000101"
|
||||
HTTP_REUEST_FAIL = "000102"
|
||||
HTTP_REUEST_NOT_FOUND = "100030"
|
||||
)
|
||||
|
||||
var CodeMsg = map[string]string{
|
||||
HTTP_SUCCESS: "操作成功",
|
||||
HTTP_AUTH_FAIL: "验签失败",
|
||||
HTTP_REUEST_FAIL: "操作失败",
|
||||
HTTP_SUCCESS: "操作成功",
|
||||
HTTP_AUTH_FAIL: "验签失败",
|
||||
HTTP_REUEST_FAIL: "操作失败",
|
||||
HTTP_REUEST_NOT_FOUND: "订单不存在",
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue