新增了rpc服务定义和工具命令

This commit is contained in:
Rzy 2024-06-07 11:51:19 +08:00
parent 32a7e74aed
commit 061bb694bb
12 changed files with 1682 additions and 341 deletions

22
.gitignore vendored
View File

@ -1,20 +1,4 @@
/.idea /.idea
/.vscode /config
/vendor /test
/runtime /genModel.sh
*.log
.env
app/.DS_Store
.DS_Store
composer_test.lock
.phpunit.result.cache
config/pem
config/bale
config/alipaycash
config/wechatcash
config/wechat_cert.pem
config/wechat_private_key.pem
/app/api/ForExample.php
/route/test.php
/public/data/
/app/api/Test.php

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"trasfer_middleware/cmd/rpc/internal/svc"
"trasfer_middleware/cmd/rpc/pb/transfer"
"github.com/zeromicro/go-zero/core/logx"
)
type MarketKeyDiscardLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMarketKeyDiscardLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketKeyDiscardLogic {
return &MarketKeyDiscardLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *MarketKeyDiscardLogic) MarketKeyDiscard(in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) {
// todo: add your logic here and delete this line
return &transfer.MarketKeyDiscardRes{}, nil
}

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"trasfer_middleware/cmd/rpc/internal/svc"
"trasfer_middleware/cmd/rpc/pb/transfer"
"github.com/zeromicro/go-zero/core/logx"
)
type MarketKeySendLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMarketKeySendLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketKeySendLogic {
return &MarketKeySendLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *MarketKeySendLogic) MarketKeySend(in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) {
// todo: add your logic here and delete this line
return &transfer.MarketKeySendRes{}, nil
}

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"trasfer_middleware/cmd/rpc/internal/svc"
"trasfer_middleware/cmd/rpc/pb/transfer"
"github.com/zeromicro/go-zero/core/logx"
)
type MarketQueryLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMarketQueryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketQueryLogic {
return &MarketQueryLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *MarketQueryLogic) MarketQuery(in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) {
// todo: add your logic here and delete this line
return &transfer.MarketQueryRes{}, nil
}

View File

@ -0,0 +1 @@
package market

View File

@ -22,11 +22,6 @@ func NewTransferServer(svcCtx *svc.ServiceContext) *TransferServer {
} }
} }
func (s *TransferServer) GetResellerByAppId(ctx context.Context, in *transfer.GetResellerByAppIdReq) (*transfer.GetResellerByAppIdRes, error) {
l := logic.NewGetResellerByAppIdLogic(ctx, s.svcCtx)
return l.GetResellerByAppId(in)
}
func (s *TransferServer) ZltxOrderRecharge(ctx context.Context, in *transfer.ZltxOrderRechargeReq) (*transfer.DefaultRes, error) { func (s *TransferServer) ZltxOrderRecharge(ctx context.Context, in *transfer.ZltxOrderRechargeReq) (*transfer.DefaultRes, error) {
l := logic.NewZltxOrderRechargeLogic(ctx, s.svcCtx) l := logic.NewZltxOrderRechargeLogic(ctx, s.svcCtx)
return l.ZltxOrderRecharge(in) return l.ZltxOrderRecharge(in)
@ -61,3 +56,18 @@ func (s *TransferServer) ZltxRechargeProduct(ctx context.Context, in *transfer.D
l := logic.NewZltxRechargeProductLogic(ctx, s.svcCtx) l := logic.NewZltxRechargeProductLogic(ctx, s.svcCtx)
return l.ZltxRechargeProduct(in) return l.ZltxRechargeProduct(in)
} }
func (s *TransferServer) MarketKeySend(ctx context.Context, in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) {
l := logic.NewMarketKeySendLogic(ctx, s.svcCtx)
return l.MarketKeySend(in)
}
func (s *TransferServer) MarketKeyDiscard(ctx context.Context, in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) {
l := logic.NewMarketKeyDiscardLogic(ctx, s.svcCtx)
return l.MarketKeyDiscard(in)
}
func (s *TransferServer) MarketQuery(ctx context.Context, in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) {
l := logic.NewMarketQueryLogic(ctx, s.svcCtx)
return l.MarketQuery(in)
}

View File

@ -17,17 +17,7 @@ message DefaultReq {
} }
service Zltx { service Transfer {
rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes);
rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes);
rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes);
rpc zltxOrderCardQuery(ZltxOrderCardQueryReq) returns(ZltxOrderCardQueryRes);
rpc zltxOrderSms(ZltxOrderSmsReq) returns(ZltxOrderSmsRes);
rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes);
rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes);
}
service Market {
rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes); rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes);
rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes); rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes);
rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes); rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes);
@ -36,8 +26,88 @@ service Market {
rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes); rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes);
rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes); rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes);
rpc marketKeySend(MarketKeySendReq) returns(MarketKeySendRes);
rpc marketKeyDiscard(MarketKeyDiscardReq) returns(MarketKeyDiscardRes);
rpc marketQuery(MarketQueryReq) returns(MarketQueryRes);
} }
message MarketQueryRes {
string errCode=1;
string msg=2;
Data data=3;
message Data{
string voucherId = 1;
string voucherCode = 2;
string voucherStatus = 5;
}
}
message MarketQueryReq {
string appId = 1;
uint64 sign = 2;
string reqCode = 3;
string memId = 4;
string reqSerialNo = 5;
string timestamp = 6;
string voucherId = 8;
string voucherCode = 9;
}
message MarketKeyDiscardRes {
string errCode=1;
string msg=2;
Data data=3;
message Data{
string voucherId = 1;
string voucherCode = 2;
string voucherDate = 4;
string voucherStatus = 5;
}
}
message MarketKeyDiscardReq {
string appId = 1;
uint64 sign = 2;
string reqCode = 3;
string memId = 4;
string reqSerialNo = 5;
string timestamp = 6;
string voucherId = 8;
string voucherCode = 9;
}
message MarketKeySendRes {
string errCode=1;
string msg=2;
Data data=3;
message Data{
string voucherId = 1;
string voucherCode = 2;
string shortUrl = 3;
string voucherSdate = 4;
string voucherEdate = 5;
string codeType = 6;
}
}
message MarketKeySendReq {
string appId = 1;
uint64 sign = 2;
string reqCode = 3;
string memId = 4;
string reqSerialNo = 5;
string timestamp = 6;
string posId = 7;
string voucherId = 8;
int64 voucherNum = 9;
string mobileNo = 10;
string sendMsg = 11;
}
message ZltxRechargeProductRes { message ZltxRechargeProductRes {
string code=1; string code=1;
repeated Product products=2; repeated Product products=2;

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,6 @@ import (
const _ = grpc.SupportPackageIsVersion7 const _ = grpc.SupportPackageIsVersion7
const ( const (
Transfer_GetResellerByAppId_FullMethodName = "/transfer.Transfer/getResellerByAppId"
Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge" Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge"
Transfer_ZltxOrderRechargeQuery_FullMethodName = "/transfer.Transfer/zltxOrderRechargeQuery" Transfer_ZltxOrderRechargeQuery_FullMethodName = "/transfer.Transfer/zltxOrderRechargeQuery"
Transfer_ZltxOrderCard_FullMethodName = "/transfer.Transfer/zltxOrderCard" Transfer_ZltxOrderCard_FullMethodName = "/transfer.Transfer/zltxOrderCard"
@ -27,13 +26,15 @@ const (
Transfer_ZltxOrderSms_FullMethodName = "/transfer.Transfer/zltxOrderSms" Transfer_ZltxOrderSms_FullMethodName = "/transfer.Transfer/zltxOrderSms"
Transfer_ZltxRechargeInfo_FullMethodName = "/transfer.Transfer/zltxRechargeInfo" Transfer_ZltxRechargeInfo_FullMethodName = "/transfer.Transfer/zltxRechargeInfo"
Transfer_ZltxRechargeProduct_FullMethodName = "/transfer.Transfer/zltxRechargeProduct" Transfer_ZltxRechargeProduct_FullMethodName = "/transfer.Transfer/zltxRechargeProduct"
Transfer_MarketKeySend_FullMethodName = "/transfer.Transfer/marketKeySend"
Transfer_MarketKeyDiscard_FullMethodName = "/transfer.Transfer/marketKeyDiscard"
Transfer_MarketQuery_FullMethodName = "/transfer.Transfer/marketQuery"
) )
// TransferClient is the client API for Transfer service. // TransferClient is the client API for Transfer service.
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type TransferClient interface { type TransferClient interface {
GetResellerByAppId(ctx context.Context, in *GetResellerByAppIdReq, opts ...grpc.CallOption) (*GetResellerByAppIdRes, error)
ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error)
ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error) ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error)
ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error) ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error)
@ -41,6 +42,9 @@ type TransferClient interface {
ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error) ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error)
ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error) ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error)
ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error) ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error)
MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error)
MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error)
MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error)
} }
type transferClient struct { type transferClient struct {
@ -51,15 +55,6 @@ func NewTransferClient(cc grpc.ClientConnInterface) TransferClient {
return &transferClient{cc} return &transferClient{cc}
} }
func (c *transferClient) GetResellerByAppId(ctx context.Context, in *GetResellerByAppIdReq, opts ...grpc.CallOption) (*GetResellerByAppIdRes, error) {
out := new(GetResellerByAppIdRes)
err := c.cc.Invoke(ctx, Transfer_GetResellerByAppId_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
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) {
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, opts...)
@ -123,11 +118,37 @@ func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq
return out, nil return out, nil
} }
func (c *transferClient) MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error) {
out := new(MarketKeySendRes)
err := c.cc.Invoke(ctx, Transfer_MarketKeySend_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *transferClient) MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error) {
out := new(MarketKeyDiscardRes)
err := c.cc.Invoke(ctx, Transfer_MarketKeyDiscard_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *transferClient) MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error) {
out := new(MarketQueryRes)
err := c.cc.Invoke(ctx, Transfer_MarketQuery_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TransferServer is the server API for Transfer service. // TransferServer is the server API for Transfer service.
// All implementations must embed UnimplementedTransferServer // All implementations must embed UnimplementedTransferServer
// for forward compatibility // for forward compatibility
type TransferServer interface { type TransferServer interface {
GetResellerByAppId(context.Context, *GetResellerByAppIdReq) (*GetResellerByAppIdRes, error)
ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error)
ZltxOrderRechargeQuery(context.Context, *ZltxOrderRechargeQueryReq) (*ZltxOrderRechargeQueryRes, error) ZltxOrderRechargeQuery(context.Context, *ZltxOrderRechargeQueryReq) (*ZltxOrderRechargeQueryRes, error)
ZltxOrderCard(context.Context, *ZltxOrderCardReq) (*DefaultRes, error) ZltxOrderCard(context.Context, *ZltxOrderCardReq) (*DefaultRes, error)
@ -135,6 +156,9 @@ type TransferServer interface {
ZltxOrderSms(context.Context, *ZltxOrderSmsReq) (*ZltxOrderSmsRes, error) ZltxOrderSms(context.Context, *ZltxOrderSmsReq) (*ZltxOrderSmsRes, error)
ZltxRechargeInfo(context.Context, *DefaultReq) (*ZltxRechargeInfoRes, error) ZltxRechargeInfo(context.Context, *DefaultReq) (*ZltxRechargeInfoRes, error)
ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error)
MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error)
MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error)
MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error)
mustEmbedUnimplementedTransferServer() mustEmbedUnimplementedTransferServer()
} }
@ -142,9 +166,6 @@ type TransferServer interface {
type UnimplementedTransferServer struct { type UnimplementedTransferServer struct {
} }
func (UnimplementedTransferServer) GetResellerByAppId(context.Context, *GetResellerByAppIdReq) (*GetResellerByAppIdRes, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetResellerByAppId not implemented")
}
func (UnimplementedTransferServer) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) { func (UnimplementedTransferServer) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) {
return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderRecharge not implemented") return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderRecharge not implemented")
} }
@ -166,6 +187,15 @@ func (UnimplementedTransferServer) ZltxRechargeInfo(context.Context, *DefaultReq
func (UnimplementedTransferServer) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) { func (UnimplementedTransferServer) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) {
return nil, status.Errorf(codes.Unimplemented, "method ZltxRechargeProduct not implemented") return nil, status.Errorf(codes.Unimplemented, "method ZltxRechargeProduct not implemented")
} }
func (UnimplementedTransferServer) MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error) {
return nil, status.Errorf(codes.Unimplemented, "method MarketKeySend not implemented")
}
func (UnimplementedTransferServer) MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error) {
return nil, status.Errorf(codes.Unimplemented, "method MarketKeyDiscard not implemented")
}
func (UnimplementedTransferServer) MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error) {
return nil, status.Errorf(codes.Unimplemented, "method MarketQuery 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.
@ -179,24 +209,6 @@ func RegisterTransferServer(s grpc.ServiceRegistrar, srv TransferServer) {
s.RegisterService(&Transfer_ServiceDesc, srv) s.RegisterService(&Transfer_ServiceDesc, srv)
} }
func _Transfer_GetResellerByAppId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetResellerByAppIdReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TransferServer).GetResellerByAppId(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Transfer_GetResellerByAppId_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TransferServer).GetResellerByAppId(ctx, req.(*GetResellerByAppIdReq))
}
return interceptor(ctx, in, info, handler)
}
func _Transfer_ZltxOrderRecharge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _Transfer_ZltxOrderRecharge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ZltxOrderRechargeReq) in := new(ZltxOrderRechargeReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -323,6 +335,60 @@ func _Transfer_ZltxRechargeProduct_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Transfer_MarketKeySend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MarketKeySendReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TransferServer).MarketKeySend(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Transfer_MarketKeySend_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TransferServer).MarketKeySend(ctx, req.(*MarketKeySendReq))
}
return interceptor(ctx, in, info, handler)
}
func _Transfer_MarketKeyDiscard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MarketKeyDiscardReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TransferServer).MarketKeyDiscard(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Transfer_MarketKeyDiscard_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TransferServer).MarketKeyDiscard(ctx, req.(*MarketKeyDiscardReq))
}
return interceptor(ctx, in, info, handler)
}
func _Transfer_MarketQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MarketQueryReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TransferServer).MarketQuery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Transfer_MarketQuery_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TransferServer).MarketQuery(ctx, req.(*MarketQueryReq))
}
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)
@ -330,10 +396,6 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{
ServiceName: "transfer.Transfer", ServiceName: "transfer.Transfer",
HandlerType: (*TransferServer)(nil), HandlerType: (*TransferServer)(nil),
Methods: []grpc.MethodDesc{ Methods: []grpc.MethodDesc{
{
MethodName: "getResellerByAppId",
Handler: _Transfer_GetResellerByAppId_Handler,
},
{ {
MethodName: "zltxOrderRecharge", MethodName: "zltxOrderRecharge",
Handler: _Transfer_ZltxOrderRecharge_Handler, Handler: _Transfer_ZltxOrderRecharge_Handler,
@ -362,6 +424,18 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{
MethodName: "zltxRechargeProduct", MethodName: "zltxRechargeProduct",
Handler: _Transfer_ZltxRechargeProduct_Handler, Handler: _Transfer_ZltxRechargeProduct_Handler,
}, },
{
MethodName: "marketKeySend",
Handler: _Transfer_MarketKeySend_Handler,
},
{
MethodName: "marketKeyDiscard",
Handler: _Transfer_MarketKeyDiscard_Handler,
},
{
MethodName: "marketQuery",
Handler: _Transfer_MarketQuery_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "transfer.proto", Metadata: "transfer.proto",

View File

@ -22,7 +22,7 @@ var (
serverClientRowsExpectAutoSet = strings.Join(stringx.Remove(serverClientFieldNames, "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") serverClientRowsExpectAutoSet = strings.Join(stringx.Remove(serverClientFieldNames, "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
serverClientRowsWithPlaceHolder = strings.Join(stringx.Remove(serverClientFieldNames, "`client_id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" serverClientRowsWithPlaceHolder = strings.Join(stringx.Remove(serverClientFieldNames, "`client_id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
cacheTransferServerClientClientIdPrefix = "cache:transfer:serverClient:clientId:" cacheTransferServerClientClientIdPrefix = "cache:transfer:serverClient:clientId:"
cacheTransferServerClientClientIndexPrefix = "cache:transfer:serverClient:clientIndex:" cacheTransferServerClientClientIndexPrefix = "cache:transfer:serverClient:clientIndex:"
) )

137
pkg/common/market.go Normal file
View File

@ -0,0 +1,137 @@
package common
import (
"crypto"
"crypto/rand"
"crypto/rsa"
"crypto/sha256"
"crypto/x509"
"encoding/base64"
"encoding/pem"
"errors"
"fmt"
"sort"
)
// getSignString 使用 xx=aa&yy=bb 的字符串拼接
func getSignString(data map[string]interface{}) string {
keys := make([]string, 0, len(data))
for key := range data {
keys = append(keys, key)
}
sort.Strings(keys)
signString := ""
separator := ""
for _, key := range keys {
value := data[key]
if key == "sign" || value == nil {
continue
}
signString += fmt.Sprintf("%s%s=%v", separator, key, value)
separator = "&"
}
return signString
}
// VerifyRsaSign 签名验证
func VerifyRsaSign(publicKey string, data map[string]interface{}) (map[string]interface{}, error) {
// 对 sign nonce timestamp appId 升序排序
// 使用 xx=aa&yy=bb 的字符串拼接
// 商户的公钥验签 RSA2验签
signString := getSignString(data)
rsaPubKey, err := parseRSAPublicKeyFromPEM([]byte(publicKey))
if err != nil {
return nil, err
}
signature, err := base64.StdEncoding.DecodeString(data["sign"].(string))
if err != nil {
return nil, err
}
hashed := sha256.Sum256([]byte(signString))
err = rsa.VerifyPKCS1v15(rsaPubKey, crypto.SHA256, hashed[:], signature)
if err != nil {
return nil, errors.New("签名验证失败")
}
return data, nil
}
// MakeRsaSign 生成签名
func MakeRsaSign(privateKey string, data map[string]interface{}) (string, error) {
// 对 sign nonce timestamp appId 升序排序
// 使用 xx=aa&yy=bb 的字符串拼接
// 营销系统生成的私钥生成签名 RSA2加签
signString := getSignString(data)
privKey, err := parseRSAPrivateKeyFromPEM([]byte(privateKey))
if err != nil {
return "", errors.New("私钥解析失败")
}
hashed := sha256.Sum256([]byte(signString))
signature, err := rsa.SignPKCS1v15(rand.Reader, privKey, crypto.SHA256, hashed[:])
if err != nil {
return "", errors.New("签名失败")
}
return base64.StdEncoding.EncodeToString(signature), nil
}
// ParseRSAPrivateKeyFromPEM 解析私钥
func parseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) {
var err error
// Parse PEM block
var block *pem.Block
if block, _ = pem.Decode(key); block == nil {
return nil, errors.New("私钥解析失败: 无效的PEM格式")
}
var parsedKey interface{}
if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil {
if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {
return nil, err
}
}
var pkey *rsa.PrivateKey
var ok bool
if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok {
return nil, errors.New("密钥不是有效的RSA私钥")
}
return pkey, nil
}
// parseRSAPublicKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 public key
func parseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) {
var err error
// Parse PEM block
var block *pem.Block
if block, _ = pem.Decode(key); block == nil {
return nil, errors.New("公钥解析失败: 无效的PEM格式")
}
// Parse the key
var parsedKey interface{}
if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil {
if cert, err := x509.ParseCertificate(block.Bytes); err == nil {
parsedKey = cert.PublicKey
} else {
return nil, err
}
}
var pkey *rsa.PublicKey
var ok bool
if pkey, ok = parsedKey.(*rsa.PublicKey); !ok {
return nil, errors.New("密钥不是有效的RSA公钥")
}
return pkey, nil
}

View File

@ -2,8 +2,8 @@ package test
import ( import (
"fmt" "fmt"
"msgc/pkg/request"
"testing" "testing"
"trasfer_middleware/pkg/request"
) )
// 发送GET 请求 // 发送GET 请求