构建镜像
This commit is contained in:
		
							parent
							
								
									a7664d5ed2
								
							
						
					
					
						commit
						6922b04f70
					
				
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							| 
						 | 
					@ -24,7 +24,7 @@ apigen:
 | 
				
			||||||
.PHONY: rpcgen
 | 
					.PHONY: rpcgen
 | 
				
			||||||
# 根据protoc创建rpc文件
 | 
					# 根据protoc创建rpc文件
 | 
				
			||||||
rpcgen:
 | 
					rpcgen:
 | 
				
			||||||
	cd cmd/rpc/pb && goctl rpc protoc *.proto --go_out=../pb --go-grpc_out=../pb  --zrpc_out=../ --client=false --style=goZero
 | 
						cd cmd/rpc/pb && goctl rpc protoc transfer.proto --go_out=../pb --go-grpc_out=../pb  --zrpc_out=../ --client=false --style=goZero
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: apiinitrpc
 | 
					.PHONY: apiinitrpc
 | 
				
			||||||
# api端生成rpc
 | 
					# api端生成rpc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,9 +26,10 @@ type RockerMqConfig struct {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type TopicList struct {
 | 
					type TopicList struct {
 | 
				
			||||||
	Market TopicConfig
 | 
						Market    TopicConfig
 | 
				
			||||||
	ZLTX   TopicConfig
 | 
						ZLTX      TopicConfig
 | 
				
			||||||
	RS     TopicConfig
 | 
						RS        TopicConfig
 | 
				
			||||||
 | 
						NewMarket TopicConfig
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type TopicConfig struct {
 | 
					type TopicConfig struct {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ import (
 | 
				
			||||||
	"github.com/zeromicro/go-zero/zrpc"
 | 
						"github.com/zeromicro/go-zero/zrpc"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/etc"
 | 
						"trasfer_middleware/cmd/rpc/etc"
 | 
				
			||||||
	marketTypes "trasfer_middleware/cmd/rpc/internal/logic/po/market/types"
 | 
						marketTypes "trasfer_middleware/cmd/rpc/internal/logic/po/market/types"
 | 
				
			||||||
 | 
						newMarketTypes "trasfer_middleware/cmd/rpc/internal/logic/po/new_market/types"
 | 
				
			||||||
	rsTypes "trasfer_middleware/cmd/rpc/internal/logic/po/rs/types"
 | 
						rsTypes "trasfer_middleware/cmd/rpc/internal/logic/po/rs/types"
 | 
				
			||||||
	zltxTypes "trasfer_middleware/cmd/rpc/internal/logic/po/zltx/types"
 | 
						zltxTypes "trasfer_middleware/cmd/rpc/internal/logic/po/zltx/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -12,11 +13,12 @@ import (
 | 
				
			||||||
type Config struct {
 | 
					type Config struct {
 | 
				
			||||||
	zrpc.RpcServerConf
 | 
						zrpc.RpcServerConf
 | 
				
			||||||
	etc.ExtraConfig
 | 
						etc.ExtraConfig
 | 
				
			||||||
	Cache  cache.CacheConf
 | 
						Cache     cache.CacheConf
 | 
				
			||||||
	ZLTX   zltxTypes.ZLTXConf
 | 
						ZLTX      zltxTypes.ZLTXConf
 | 
				
			||||||
	Market marketTypes.MarketConf
 | 
						Market    marketTypes.MarketConf
 | 
				
			||||||
	RS     rsTypes.RSConf
 | 
						RS        rsTypes.RSConf
 | 
				
			||||||
	DB     struct {
 | 
						NewMarket newMarketTypes.NewMarketConf
 | 
				
			||||||
 | 
						DB        struct {
 | 
				
			||||||
		Master struct {
 | 
							Master struct {
 | 
				
			||||||
			DataSource string
 | 
								DataSource string
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,9 @@ func MarketKeyDataSet(order *genModel.ServerOrderMarket, resq string, resp strin
 | 
				
			||||||
		orderInfoRes map[string]interface{}
 | 
							orderInfoRes map[string]interface{}
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	err = json.Unmarshal([]byte(resp), &orderInfoRes)
 | 
						err = json.Unmarshal([]byte(resp), &orderInfoRes)
 | 
				
			||||||
 | 
						if _, ok := orderInfoRes["errCode"]; !ok {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if orderInfoRes["errCode"].(string) != vo.MARKET_SUCCESS {
 | 
						if orderInfoRes["errCode"].(string) != vo.MARKET_SUCCESS {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					package logic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/svc"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/pb/transfer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/zeromicro/go-zero/core/logx"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NewMarketDiscardLogic struct {
 | 
				
			||||||
 | 
						ctx    context.Context
 | 
				
			||||||
 | 
						svcCtx *svc.ServiceContext
 | 
				
			||||||
 | 
						logx.Logger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNewMarketDiscardLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NewMarketDiscardLogic {
 | 
				
			||||||
 | 
						return &NewMarketDiscardLogic{
 | 
				
			||||||
 | 
							ctx:    ctx,
 | 
				
			||||||
 | 
							svcCtx: svcCtx,
 | 
				
			||||||
 | 
							Logger: logx.WithContext(ctx),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (l *NewMarketDiscardLogic) NewMarketDiscard(in *transfer.NewMarketDiscardReq) (*transfer.NewMarketDiscardRes, error) {
 | 
				
			||||||
 | 
						res, err := l.svcCtx.NewMarket.Discard(l.ctx, in)
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					package logic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/svc"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/pb/transfer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/zeromicro/go-zero/core/logx"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NewMarketOrderLogic struct {
 | 
				
			||||||
 | 
						ctx    context.Context
 | 
				
			||||||
 | 
						svcCtx *svc.ServiceContext
 | 
				
			||||||
 | 
						logx.Logger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNewMarketOrderLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NewMarketOrderLogic {
 | 
				
			||||||
 | 
						return &NewMarketOrderLogic{
 | 
				
			||||||
 | 
							ctx:    ctx,
 | 
				
			||||||
 | 
							svcCtx: svcCtx,
 | 
				
			||||||
 | 
							Logger: logx.WithContext(ctx),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (l *NewMarketOrderLogic) NewMarketOrder(in *transfer.NewMarketOrderReq) (*transfer.NewMarketOrderRes, error) {
 | 
				
			||||||
 | 
						res, err := l.svcCtx.NewMarket.Order(l.ctx, in)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					package logic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/svc"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/pb/transfer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/zeromicro/go-zero/core/logx"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NewMarketQueryLogics struct {
 | 
				
			||||||
 | 
						ctx    context.Context
 | 
				
			||||||
 | 
						svcCtx *svc.ServiceContext
 | 
				
			||||||
 | 
						logx.Logger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNewMarketQueryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NewMarketQueryLogics {
 | 
				
			||||||
 | 
						return &NewMarketQueryLogics{
 | 
				
			||||||
 | 
							ctx:    ctx,
 | 
				
			||||||
 | 
							svcCtx: svcCtx,
 | 
				
			||||||
 | 
							Logger: logx.WithContext(ctx),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (l *NewMarketQueryLogics) NewMarketQuery(in *transfer.NewMarketQueryReq) (*transfer.NewMarketOrderRes, error) {
 | 
				
			||||||
 | 
						res, err := l.svcCtx.NewMarket.Query(l.ctx, in)
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -33,12 +33,12 @@ func NewMarket(conf types.MarketConf) *Market {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (r *Market) SetData(c context.Context, data map[string]interface{}, config *etc.RockerMqConfig) *MarketRequest {
 | 
					func (r *Market) SetData(c context.Context, data map[string]interface{}, config *etc.RockerMqConfig) *MarketRequest {
 | 
				
			||||||
	p := "-----BEGIN RSA PRIVATE KEY-----\n" + data["sign"].(string) + "\n-----END RSA PRIVATE KEY-----"
 | 
						p := "-----BEGIN RSA PRIVATE KEY-----\n" + data["sign"].(string) + "\n-----END RSA PRIVATE KEY-----"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sign, err := common.MarketMakeRsaSign(p, data)
 | 
						sign, err := common.MarketMakeRsaSign(p, data)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	data["sign"] = sign
 | 
						data["sign"] = sign
 | 
				
			||||||
 | 
					 | 
				
			||||||
	requestBody := make(map[string]string, len(data))
 | 
						requestBody := make(map[string]string, len(data))
 | 
				
			||||||
	for key, value := range data {
 | 
						for key, value := range data {
 | 
				
			||||||
		requestBody[key] = fmt.Sprintf("%v", value)
 | 
							requestBody[key] = fmt.Sprintf("%v", value)
 | 
				
			||||||
| 
						 | 
					@ -69,7 +69,7 @@ func (r *MarketRequest) request(url string) (*request.Response, error) {
 | 
				
			||||||
		SecurityToken: r.Config.SecurityToken,
 | 
							SecurityToken: r.Config.SecurityToken,
 | 
				
			||||||
		ServerAddress: r.Config.Host,
 | 
							ServerAddress: r.Config.Host,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err := sendMq.Produce(r.ctx, r.Config.TopicPrefix+r.Config.Topic.Market.Name, po.SetMqSendDataMarket(r.RequestStruct, &resp, url))
 | 
						err := sendMq.Produce(r.ctx, r.Config.TopicPrefix+r.Config.Topic.Market.Name, po.SetMqSendDataMarket(r.RequestStruct, &resp, reqUrl))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		sysLog.LogSendMq(r.ctx, err)
 | 
							sysLog.LogSendMq(r.ctx, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,137 @@
 | 
				
			||||||
 | 
					package new_market
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"github.com/mitchellh/mapstructure"
 | 
				
			||||||
 | 
						"github.com/sleepinggodoflove/lansexiongdi-marketing-sdk/api/v1/key"
 | 
				
			||||||
 | 
						"github.com/sleepinggodoflove/lansexiongdi-marketing-sdk/core"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/etc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/po"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/po/new_market/types"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/vo"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/pb/transfer"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/pkg/mq"
 | 
				
			||||||
 | 
						"trasfer_middleware/until/common"
 | 
				
			||||||
 | 
						"trasfer_middleware/until/sysLog"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NewMarketStruct struct {
 | 
				
			||||||
 | 
						Conf       *types.NewMarketConf
 | 
				
			||||||
 | 
						AppId      string
 | 
				
			||||||
 | 
						CoreConfig *core.Config
 | 
				
			||||||
 | 
						*po.RequestStruct
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNewMarket(conf types.NewMarketConf, mq etc.RockerMqConfig) *NewMarketStruct {
 | 
				
			||||||
 | 
						return &NewMarketStruct{
 | 
				
			||||||
 | 
							Conf: &conf,
 | 
				
			||||||
 | 
							CoreConfig: &core.Config{
 | 
				
			||||||
 | 
								PrivateKey: conf.PRK,
 | 
				
			||||||
 | 
								PublicKey:  conf.PUK,
 | 
				
			||||||
 | 
								Key:        conf.KEY,
 | 
				
			||||||
 | 
								BaseURL:    conf.Host,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							RequestStruct: &po.RequestStruct{
 | 
				
			||||||
 | 
								Config: mq,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) handleLog(ctx context.Context, url string, resp *key.Response, in interface{}) error {
 | 
				
			||||||
 | 
						r.SetRequestStruct(in)
 | 
				
			||||||
 | 
						err := r.sendMq(ctx, url, resp)
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) Order(ctx context.Context, request *transfer.NewMarketOrderReq) (res *transfer.NewMarketOrderRes, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						coreKey, err := r.coreKey(request.AppId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						response, err := coreKey.Order(ctx, &key.OrderRequest{
 | 
				
			||||||
 | 
							OutBizNo:   request.OutBizNo,
 | 
				
			||||||
 | 
							ActivityNo: request.ActivityNo,
 | 
				
			||||||
 | 
							Number:     request.Number,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_ = mapstructure.Decode(response, &res)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r.handleLog(ctx, vo.NEW_MARKET_ORDER, response, request)
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) Query(ctx context.Context, request *transfer.NewMarketQueryReq) (res *transfer.NewMarketOrderRes, err error) {
 | 
				
			||||||
 | 
						coreKey, err := r.coreKey(request.AppId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						response, err := coreKey.Query(ctx, &key.QueryRequest{
 | 
				
			||||||
 | 
							OutBizNo: request.OutBizNo,
 | 
				
			||||||
 | 
							TradeNo:  request.TradeNo,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						_ = mapstructure.Decode(response, &res)
 | 
				
			||||||
 | 
						r.handleLog(ctx, vo.NEW_MARKET_ORDER, response, request)
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) Discard(ctx context.Context, request *transfer.NewMarketDiscardReq) (res *transfer.NewMarketDiscardRes, err error) {
 | 
				
			||||||
 | 
						coreKey, err := r.coreKey(request.AppId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						response, err := coreKey.Discard(ctx, &key.DiscardRequest{
 | 
				
			||||||
 | 
							OutBizNo: request.OutBizNo,
 | 
				
			||||||
 | 
							TradeNo:  request.TradeNo,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						_ = mapstructure.Decode(response, &res)
 | 
				
			||||||
 | 
						r.handleLog(ctx, vo.NEW_MARKET_DISCARD, response, request)
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) coreKey(appId string) (*key.Key, error) {
 | 
				
			||||||
 | 
						r.CoreConfig.AppID = appId
 | 
				
			||||||
 | 
						coreData, err := core.NewCore(r.CoreConfig)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &key.Key{Core: coreData}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) sendMq(ctx context.Context, url string, resp *key.Response) error {
 | 
				
			||||||
 | 
						//异步存入请求记录
 | 
				
			||||||
 | 
						sendMq := mq.AliyunRocketMq{
 | 
				
			||||||
 | 
							AccessKey:     r.Config.AccessKey,
 | 
				
			||||||
 | 
							SecretKey:     r.Config.SecretKey,
 | 
				
			||||||
 | 
							SecurityToken: r.Config.SecurityToken,
 | 
				
			||||||
 | 
							ServerAddress: r.Config.Host,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err := sendMq.Produce(ctx, r.Config.TopicPrefix+r.Config.Topic.NewMarket.Name, po.SetMqSendDataNewMarket(r.RequestStruct, resp, url))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							sysLog.LogSendMq(ctx, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r *NewMarketStruct) SetRequestStruct(in interface{}) {
 | 
				
			||||||
 | 
						data := common.StructToMap(in)
 | 
				
			||||||
 | 
						requestBody := make(map[string]string, len(data))
 | 
				
			||||||
 | 
						for key, value := range data {
 | 
				
			||||||
 | 
							requestBody[key] = fmt.Sprintf("%v", value)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						r.RequestStruct.RequestBody = requestBody
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type PublicRecharge struct {
 | 
				
			||||||
 | 
						MerchantId int
 | 
				
			||||||
 | 
						TimeStamp  int
 | 
				
			||||||
 | 
						Sign       string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ExtendParameter struct {
 | 
				
			||||||
 | 
						ExtendParameter string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NewMarketConf struct {
 | 
				
			||||||
 | 
						Host     string
 | 
				
			||||||
 | 
						SignType string
 | 
				
			||||||
 | 
						PUK      string
 | 
				
			||||||
 | 
						PRK      string
 | 
				
			||||||
 | 
						KEY      string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BaseRes struct {
 | 
				
			||||||
 | 
						Code    string `json:"code"`
 | 
				
			||||||
 | 
						Message string `json:"message"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CardParam struct {
 | 
				
			||||||
 | 
						OutTradeNo  string
 | 
				
			||||||
 | 
						ProductId   int
 | 
				
			||||||
 | 
						Mobile      string
 | 
				
			||||||
 | 
						AccountType int
 | 
				
			||||||
 | 
						Number      int
 | 
				
			||||||
 | 
						NotifyUrl   string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CardRes struct {
 | 
				
			||||||
 | 
						Code    string `json:"code"`
 | 
				
			||||||
 | 
						Message string `json:"message"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CardQueryRes struct {
 | 
				
			||||||
 | 
						Code       string `json:"code"`
 | 
				
			||||||
 | 
						Message    string `json:"message"`
 | 
				
			||||||
 | 
						Status     string `json:"status"`
 | 
				
			||||||
 | 
						OutTradeNo string `json:"outTradeNo"`
 | 
				
			||||||
 | 
						CardCode   string `json:"cardCode"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type OrderSmsParam struct {
 | 
				
			||||||
 | 
						OutTradeNo string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type OrderSmsRes struct {
 | 
				
			||||||
 | 
						Code       string `json:"code"`
 | 
				
			||||||
 | 
						Message    string `json:"message"`
 | 
				
			||||||
 | 
						Status     string `json:"status"`
 | 
				
			||||||
 | 
						OutTradeNo string `json:"outTradeNo"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeParam struct {
 | 
				
			||||||
 | 
						OutTradeNo      string
 | 
				
			||||||
 | 
						ProductId       int
 | 
				
			||||||
 | 
						RechargeAccount string
 | 
				
			||||||
 | 
						AccountType     int
 | 
				
			||||||
 | 
						Number          int
 | 
				
			||||||
 | 
						NotifyUrl       string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeQueryRes struct {
 | 
				
			||||||
 | 
						Code       string `json:"code"`
 | 
				
			||||||
 | 
						Message    string `json:"message"`
 | 
				
			||||||
 | 
						Status     string `json:"status"`
 | 
				
			||||||
 | 
						OutTradeNo string `json:"outTradeNo"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeInfoParam struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeInfoRes struct {
 | 
				
			||||||
 | 
						Code    string `json:"code"`
 | 
				
			||||||
 | 
						Balance string `json:"balance"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeProductParam struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeProductRes struct {
 | 
				
			||||||
 | 
						Code     string            `json:"code"`
 | 
				
			||||||
 | 
						Products []RechargeProduct `json:"products"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RechargeProduct struct {
 | 
				
			||||||
 | 
						ProductId     int    `json:"product_id"`
 | 
				
			||||||
 | 
						ChannelPrice  string `json:"channel_price"`
 | 
				
			||||||
 | 
						ItemName      string `json:"item_name"`
 | 
				
			||||||
 | 
						OriginalPrice string `json:"original_price"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RsReq struct {
 | 
				
			||||||
 | 
						VendorNo string `json:"vendorNo"`
 | 
				
			||||||
 | 
						Data     string `json:"data"`
 | 
				
			||||||
 | 
						Sign     string `son:"sign"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					type RSConf struct {
 | 
				
			||||||
 | 
						Host string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ package po
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"github.com/sleepinggodoflove/lansexiongdi-marketing-sdk/api/v1/key"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/etc"
 | 
						"trasfer_middleware/cmd/rpc/etc"
 | 
				
			||||||
	"trasfer_middleware/genModel"
 | 
						"trasfer_middleware/genModel"
 | 
				
			||||||
| 
						 | 
					@ -26,6 +27,17 @@ func SetMqSendDataZLTX(reqInfo *RequestStruct, respInfo *request.Response, url s
 | 
				
			||||||
	return logByte
 | 
						return logByte
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func SetMqSendDataNewMarket(reqInfo *RequestStruct, respInfo *key.Response, url string) []byte {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resp, _ := json.Marshal(respInfo)
 | 
				
			||||||
 | 
						log := commonMqSendData(reqInfo, &request.Response{
 | 
				
			||||||
 | 
							Text:       string(resp),
 | 
				
			||||||
 | 
							StatusCode: int(respInfo.Code),
 | 
				
			||||||
 | 
						}, url)
 | 
				
			||||||
 | 
						logByte, _ := json.Marshal(log)
 | 
				
			||||||
 | 
						return logByte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func SetMqSendDataRs(rsReq *RequestStruct, order *genModel.ServerOrderRs, respInfo *request.Response, url string) []byte {
 | 
					func SetMqSendDataRs(rsReq *RequestStruct, order *genModel.ServerOrderRs, respInfo *request.Response, url string) []byte {
 | 
				
			||||||
	log := commonMqSendData(rsReq, respInfo, url)
 | 
						log := commonMqSendData(rsReq, respInfo, url)
 | 
				
			||||||
	OrderMap := common.StructToMap(order)
 | 
						OrderMap := common.StructToMap(order)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					package vo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// 下单
 | 
				
			||||||
 | 
						NEW_MARKET_ORDER = "openapi/v1/key/order"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 查询
 | 
				
			||||||
 | 
						NEW_MARKET_QUERY = "openapi/v1/key/query"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 作废
 | 
				
			||||||
 | 
						NEW_MARKET_DISCARD = "openapi/v1/key/discard"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,11 @@ type RS struct {
 | 
				
			||||||
	ctx context.Context
 | 
						ctx context.Context
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NewMarkets struct {
 | 
				
			||||||
 | 
						svc *mqSvc.ServiceContext
 | 
				
			||||||
 | 
						ctx context.Context
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewMarket(svc *mqSvc.ServiceContext, ctx context.Context) *Market {
 | 
					func NewMarket(svc *mqSvc.ServiceContext, ctx context.Context) *Market {
 | 
				
			||||||
	return &Market{
 | 
						return &Market{
 | 
				
			||||||
		svc: svc,
 | 
							svc: svc,
 | 
				
			||||||
| 
						 | 
					@ -52,9 +57,16 @@ func NewRS(svc *mqSvc.ServiceContext, ctx context.Context) *RS {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNewMarkets(svc *mqSvc.ServiceContext, ctx context.Context) *NewMarkets {
 | 
				
			||||||
 | 
						return &NewMarkets{
 | 
				
			||||||
 | 
							svc: svc,
 | 
				
			||||||
 | 
							ctx: ctx,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *Market) MessageHandler(tag uint64, ch *amqp.Channel, msg []byte) error {
 | 
					func (m *Market) MessageHandler(tag uint64, ch *amqp.Channel, msg []byte) error {
 | 
				
			||||||
	var market = &genModel.ServerMiddleMarketLogs{}
 | 
						var market = &genModel.ServerMiddleMarketLogs{}
 | 
				
			||||||
	json.Unmarshal(msg, market)
 | 
						err := json.Unmarshal(msg, market)
 | 
				
			||||||
	market.CreateTime = time.Now()
 | 
						market.CreateTime = time.Now()
 | 
				
			||||||
	market.Status = vo.MARKET_LOG_STATU_DEFAULT
 | 
						market.Status = vo.MARKET_LOG_STATU_DEFAULT
 | 
				
			||||||
	logInfo, err := m.svc.DbWrite.MarketLogs.Insert(m.ctx, market)
 | 
						logInfo, err := m.svc.DbWrite.MarketLogs.Insert(m.ctx, market)
 | 
				
			||||||
| 
						 | 
					@ -175,6 +187,49 @@ func (m *RS) saveRsOrder(logId int64, resq string, resp string) error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (m *NewMarkets) MessageHandler(tag uint64, ch *amqp.Channel, msg []byte) error {
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							rs = &genModel.ServerMiddleRsLogs{}
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						json.Unmarshal(msg, rs)
 | 
				
			||||||
 | 
						rs.CreateTime = time.Now()
 | 
				
			||||||
 | 
						rs.Status = vo.RS_LOG_STATU_DEFAULT
 | 
				
			||||||
 | 
						logInfo, err := m.svc.DbWrite.RSLogs.Insert(m.ctx, rs)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("rs数据保存失败:%s,原因:%s", msg, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						logId, err := logInfo.LastInsertId()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("rs日志数据保存失败:%s,原因:%s", msg, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err = m.saveRsOrder(logId, rs.Data, rs.Resp)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("rs订单数据保存失败:%s,原因:%s", msg, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (m *NewMarkets) saveRsOrder(logId int64, resq string, resp string) error {
 | 
				
			||||||
 | 
						var order = &genModel.ServerOrderRs{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						order.LogId = logId
 | 
				
			||||||
 | 
						order.ReqTime = time.Now()
 | 
				
			||||||
 | 
						order.CreateTime = time.Now()
 | 
				
			||||||
 | 
						data := do.RsData{Order: order}
 | 
				
			||||||
 | 
						err := data.SetData(resq, resp)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						_, err = m.svc.DbWrite.OrderRs.FindByOutBizId(m.ctx, order.OutBizNo)
 | 
				
			||||||
 | 
						if err == sqlx.ErrNotFound {
 | 
				
			||||||
 | 
							_, err = m.svc.DbWrite.OrderRs.Insert(m.ctx, order)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *Market) saveMarketOrder(logId int64, resq string, resp string) error {
 | 
					func (m *Market) saveMarketOrder(logId int64, resq string, resp string) error {
 | 
				
			||||||
	var order = &genModel.ServerOrderMarket{}
 | 
						var order = &genModel.ServerOrderMarket{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,5 +260,6 @@ func AllHandle(c *etc.RockerMqConfig, svc *mqSvc.ServiceContext, ctx context.Con
 | 
				
			||||||
	result[c.TopicPrefix+c.Topic.Market.Name] = NewMarket(svc, ctx)
 | 
						result[c.TopicPrefix+c.Topic.Market.Name] = NewMarket(svc, ctx)
 | 
				
			||||||
	result[c.TopicPrefix+c.Topic.ZLTX.Name] = NewZLTX(svc, ctx)
 | 
						result[c.TopicPrefix+c.Topic.ZLTX.Name] = NewZLTX(svc, ctx)
 | 
				
			||||||
	result[c.TopicPrefix+c.Topic.RS.Name] = NewRS(svc, ctx)
 | 
						result[c.TopicPrefix+c.Topic.RS.Name] = NewRS(svc, ctx)
 | 
				
			||||||
 | 
						result[c.TopicPrefix+c.Topic.NewMarket.Name] = NewNewMarkets(svc, ctx)
 | 
				
			||||||
	return result
 | 
						return result
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,3 +81,18 @@ func (s *TransferServer) RsCouponGrant(ctx context.Context, in *transfer.RsCoupo
 | 
				
			||||||
	l := logic.NewRsCouponGrantLogic(ctx, s.svcCtx)
 | 
						l := logic.NewRsCouponGrantLogic(ctx, s.svcCtx)
 | 
				
			||||||
	return l.RsCouponGrant(in)
 | 
						return l.RsCouponGrant(in)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s *TransferServer) NewMarketOrder(ctx context.Context, in *transfer.NewMarketOrderReq) (*transfer.NewMarketOrderRes, error) {
 | 
				
			||||||
 | 
						l := logic.NewNewMarketOrderLogic(ctx, s.svcCtx)
 | 
				
			||||||
 | 
						return l.NewMarketOrder(in)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s *TransferServer) NewMarketQuery(ctx context.Context, in *transfer.NewMarketQueryReq) (*transfer.NewMarketOrderRes, error) {
 | 
				
			||||||
 | 
						l := logic.NewNewMarketQueryLogic(ctx, s.svcCtx)
 | 
				
			||||||
 | 
						return l.NewMarketQuery(in)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s *TransferServer) NewMarketDiscard(ctx context.Context, in *transfer.NewMarketDiscardReq) (*transfer.NewMarketDiscardRes, error) {
 | 
				
			||||||
 | 
						l := logic.NewNewMarketDiscardLogic(ctx, s.svcCtx)
 | 
				
			||||||
 | 
						return l.NewMarketDiscard(in)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@ import (
 | 
				
			||||||
	"github.com/zeromicro/go-zero/core/stores/redis"
 | 
						"github.com/zeromicro/go-zero/core/stores/redis"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/config"
 | 
						"trasfer_middleware/cmd/rpc/internal/config"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/logic/po/market"
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/po/market"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/po/new_market"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/logic/po/rs"
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/po/rs"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/logic/po/zltx"
 | 
						"trasfer_middleware/cmd/rpc/internal/logic/po/zltx"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -14,6 +15,7 @@ type ServiceContext struct {
 | 
				
			||||||
	ZltxOrder   *zltx.ZltxOrder
 | 
						ZltxOrder   *zltx.ZltxOrder
 | 
				
			||||||
	Market      *market.Market
 | 
						Market      *market.Market
 | 
				
			||||||
	RS          *rs.RS
 | 
						RS          *rs.RS
 | 
				
			||||||
 | 
						NewMarket   *new_market.NewMarketStruct
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewServiceContext(c config.Config) *ServiceContext {
 | 
					func NewServiceContext(c config.Config) *ServiceContext {
 | 
				
			||||||
| 
						 | 
					@ -28,18 +30,6 @@ func NewServiceContext(c config.Config) *ServiceContext {
 | 
				
			||||||
		ZltxOrder: zltx.NewZltxOrder(c.ZLTX),
 | 
							ZltxOrder: zltx.NewZltxOrder(c.ZLTX),
 | 
				
			||||||
		Market:    market.NewMarket(c.Market),
 | 
							Market:    market.NewMarket(c.Market),
 | 
				
			||||||
		RS:        rs.NewRs(c.RS),
 | 
							RS:        rs.NewRs(c.RS),
 | 
				
			||||||
 | 
							NewMarket: new_market.NewNewMarket(c.NewMarket, c.Mq),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
/*func DbModel(datasource string, c config.Config) *Model {
 | 
					 | 
				
			||||||
	sqlConn := sqlx.NewMysql(datasource)
 | 
					 | 
				
			||||||
	return &Model{
 | 
					 | 
				
			||||||
		MarketLogs: genModel.NewServerMiddleMarketLogsModel(sqlConn, c.Cache),
 | 
					 | 
				
			||||||
		ZLTXLogs:   genModel.NewServerMiddleZltxLogsModel(sqlConn, c.Cache),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type Model struct {
 | 
					 | 
				
			||||||
	MarketLogs genModel.ServerMiddleMarketLogsModel
 | 
					 | 
				
			||||||
	ZLTXLogs   genModel.ServerMiddleZltxLogsModel
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,8 +33,57 @@ service Transfer {
 | 
				
			||||||
  rpc marketQuery(MarketQueryReq) returns(MarketQueryRes);
 | 
					  rpc marketQuery(MarketQueryReq) returns(MarketQueryRes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rpc rsCouponGrant(RsCouponGrantReq) returns(RsCouponGrantRes);
 | 
					  rpc rsCouponGrant(RsCouponGrantReq) returns(RsCouponGrantRes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rpc newMarketOrder(NewMarketOrderReq) returns(NewMarketOrderRes);
 | 
				
			||||||
 | 
					  rpc newMarketQuery(NewMarketQueryReq) returns(NewMarketOrderRes);
 | 
				
			||||||
 | 
					  rpc newMarketDiscard(NewMarketDiscardReq) returns(NewMarketDiscardRes);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message NewMarketDiscardReq {
 | 
				
			||||||
 | 
					  string app_id = 1;
 | 
				
			||||||
 | 
					  string out_biz_no = 2;
 | 
				
			||||||
 | 
					  string trade_no = 3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message NewMarketDiscardRes {
 | 
				
			||||||
 | 
					  int32 code = 1;
 | 
				
			||||||
 | 
					  string message = 2;
 | 
				
			||||||
 | 
					  string reason=4;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message NewMarketQueryReq {
 | 
				
			||||||
 | 
					  string app_id = 1;
 | 
				
			||||||
 | 
					  string out_biz_no = 2;
 | 
				
			||||||
 | 
					  string trade_no = 3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message NewMarketOrderReq {
 | 
				
			||||||
 | 
					  string app_id = 4;
 | 
				
			||||||
 | 
					  string out_biz_no = 1;
 | 
				
			||||||
 | 
					  string activity_no = 2;
 | 
				
			||||||
 | 
					  int32 number = 3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message NewMarketOrderRes {
 | 
				
			||||||
 | 
					  string message = 2;
 | 
				
			||||||
 | 
					  int32 code = 1;
 | 
				
			||||||
 | 
					  string reason=4;
 | 
				
			||||||
 | 
					  Data data = 5;
 | 
				
			||||||
 | 
					  message Data {
 | 
				
			||||||
 | 
					    string out_biz_no = 1;
 | 
				
			||||||
 | 
					    string trade_no = 2;
 | 
				
			||||||
 | 
					    string key = 3;
 | 
				
			||||||
 | 
					    int32 status = 4;
 | 
				
			||||||
 | 
					    string url = 5;
 | 
				
			||||||
 | 
					    string valid_begin_time = 6;
 | 
				
			||||||
 | 
					    string valid_end_time = 7;
 | 
				
			||||||
 | 
					    string usage_time = 8;
 | 
				
			||||||
 | 
					    string discard_time = 9;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message RsCouponGrantReq {
 | 
					message RsCouponGrantReq {
 | 
				
			||||||
  string vendorNo = 1;
 | 
					  string vendorNo = 1;
 | 
				
			||||||
  string data = 2;
 | 
					  string data = 2;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -1,516 +0,0 @@
 | 
				
			||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 | 
					 | 
				
			||||||
// versions:
 | 
					 | 
				
			||||||
// - protoc-gen-go-grpc v1.3.0
 | 
					 | 
				
			||||||
// - protoc             v3.6.1
 | 
					 | 
				
			||||||
// source: transfer.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package transfer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	context "context"
 | 
					 | 
				
			||||||
	grpc "google.golang.org/grpc"
 | 
					 | 
				
			||||||
	codes "google.golang.org/grpc/codes"
 | 
					 | 
				
			||||||
	status "google.golang.org/grpc/status"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	Transfer_ZltxOrderRecharge_FullMethodName      = "/transfer.Transfer/zltxOrderRecharge"
 | 
					 | 
				
			||||||
	Transfer_ZltxOrderRechargeQuery_FullMethodName = "/transfer.Transfer/zltxOrderRechargeQuery"
 | 
					 | 
				
			||||||
	Transfer_ZltxOrderCard_FullMethodName          = "/transfer.Transfer/zltxOrderCard"
 | 
					 | 
				
			||||||
	Transfer_ZltxOrderCardQuery_FullMethodName     = "/transfer.Transfer/zltxOrderCardQuery"
 | 
					 | 
				
			||||||
	Transfer_ZltxOrderSms_FullMethodName           = "/transfer.Transfer/zltxOrderSms"
 | 
					 | 
				
			||||||
	Transfer_ZltxRechargeInfo_FullMethodName       = "/transfer.Transfer/zltxRechargeInfo"
 | 
					 | 
				
			||||||
	Transfer_ZltxRechargeProduct_FullMethodName    = "/transfer.Transfer/zltxRechargeProduct"
 | 
					 | 
				
			||||||
	Transfer_ZltxRsMiXue_FullMethodName            = "/transfer.Transfer/zltxRsMiXue"
 | 
					 | 
				
			||||||
	Transfer_MarketKeySend_FullMethodName          = "/transfer.Transfer/marketKeySend"
 | 
					 | 
				
			||||||
	Transfer_MarketKeyDiscard_FullMethodName       = "/transfer.Transfer/marketKeyDiscard"
 | 
					 | 
				
			||||||
	Transfer_MarketQuery_FullMethodName            = "/transfer.Transfer/marketQuery"
 | 
					 | 
				
			||||||
	Transfer_RsCouponGrant_FullMethodName          = "/transfer.Transfer/rsCouponGrant"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
type TransferClient interface {
 | 
					 | 
				
			||||||
	ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderCardQuery(ctx context.Context, in *ZltxOrderCardQueryReq, opts ...grpc.CallOption) (*ZltxOrderCardQueryRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error)
 | 
					 | 
				
			||||||
	ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error)
 | 
					 | 
				
			||||||
	ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error)
 | 
					 | 
				
			||||||
	ZltxRsMiXue(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, 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)
 | 
					 | 
				
			||||||
	RsCouponGrant(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type transferClient struct {
 | 
					 | 
				
			||||||
	cc grpc.ClientConnInterface
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewTransferClient(cc grpc.ClientConnInterface) TransferClient {
 | 
					 | 
				
			||||||
	return &transferClient{cc}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) {
 | 
					 | 
				
			||||||
	out := new(DefaultRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxOrderRecharge_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error) {
 | 
					 | 
				
			||||||
	out := new(ZltxOrderRechargeQueryRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxOrderRechargeQuery_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error) {
 | 
					 | 
				
			||||||
	out := new(DefaultRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxOrderCard_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxOrderCardQuery(ctx context.Context, in *ZltxOrderCardQueryReq, opts ...grpc.CallOption) (*ZltxOrderCardQueryRes, error) {
 | 
					 | 
				
			||||||
	out := new(ZltxOrderCardQueryRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxOrderCardQuery_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error) {
 | 
					 | 
				
			||||||
	out := new(ZltxOrderSmsRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxOrderSms_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error) {
 | 
					 | 
				
			||||||
	out := new(ZltxRechargeInfoRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxRechargeInfo_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error) {
 | 
					 | 
				
			||||||
	out := new(ZltxRechargeProductRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxRechargeProduct_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) ZltxRsMiXue(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error) {
 | 
					 | 
				
			||||||
	out := new(RsCouponGrantRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_ZltxRsMiXue_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	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
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *transferClient) RsCouponGrant(ctx context.Context, in *RsCouponGrantReq, opts ...grpc.CallOption) (*RsCouponGrantRes, error) {
 | 
					 | 
				
			||||||
	out := new(RsCouponGrantRes)
 | 
					 | 
				
			||||||
	err := c.cc.Invoke(ctx, Transfer_RsCouponGrant_FullMethodName, in, out, opts...)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return out, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TransferServer is the server API for Transfer service.
 | 
					 | 
				
			||||||
// All implementations must embed UnimplementedTransferServer
 | 
					 | 
				
			||||||
// for forward compatibility
 | 
					 | 
				
			||||||
type TransferServer interface {
 | 
					 | 
				
			||||||
	ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderRechargeQuery(context.Context, *ZltxOrderRechargeQueryReq) (*ZltxOrderRechargeQueryRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderCard(context.Context, *ZltxOrderCardReq) (*DefaultRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderCardQuery(context.Context, *ZltxOrderCardQueryReq) (*ZltxOrderCardQueryRes, error)
 | 
					 | 
				
			||||||
	ZltxOrderSms(context.Context, *ZltxOrderSmsReq) (*ZltxOrderSmsRes, error)
 | 
					 | 
				
			||||||
	ZltxRechargeInfo(context.Context, *DefaultReq) (*ZltxRechargeInfoRes, error)
 | 
					 | 
				
			||||||
	ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error)
 | 
					 | 
				
			||||||
	ZltxRsMiXue(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error)
 | 
					 | 
				
			||||||
	MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error)
 | 
					 | 
				
			||||||
	MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error)
 | 
					 | 
				
			||||||
	MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error)
 | 
					 | 
				
			||||||
	RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error)
 | 
					 | 
				
			||||||
	mustEmbedUnimplementedTransferServer()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnimplementedTransferServer must be embedded to have forward compatible implementations.
 | 
					 | 
				
			||||||
type UnimplementedTransferServer struct {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderRecharge not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxOrderRechargeQuery(context.Context, *ZltxOrderRechargeQueryReq) (*ZltxOrderRechargeQueryRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderRechargeQuery not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxOrderCard(context.Context, *ZltxOrderCardReq) (*DefaultRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderCard not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxOrderCardQuery(context.Context, *ZltxOrderCardQueryReq) (*ZltxOrderCardQueryRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderCardQuery not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxOrderSms(context.Context, *ZltxOrderSmsReq) (*ZltxOrderSmsRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderSms not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxRechargeInfo(context.Context, *DefaultReq) (*ZltxRechargeInfoRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxRechargeInfo not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxRechargeProduct not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) ZltxRsMiXue(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method ZltxRsMiXue 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) RsCouponGrant(context.Context, *RsCouponGrantReq) (*RsCouponGrantRes, error) {
 | 
					 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method RsCouponGrant not implemented")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (UnimplementedTransferServer) mustEmbedUnimplementedTransferServer() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnsafeTransferServer may be embedded to opt out of forward compatibility for this service.
 | 
					 | 
				
			||||||
// Use of this interface is not recommended, as added methods to TransferServer will
 | 
					 | 
				
			||||||
// result in compilation errors.
 | 
					 | 
				
			||||||
type UnsafeTransferServer interface {
 | 
					 | 
				
			||||||
	mustEmbedUnimplementedTransferServer()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func RegisterTransferServer(s grpc.ServiceRegistrar, srv TransferServer) {
 | 
					 | 
				
			||||||
	s.RegisterService(&Transfer_ServiceDesc, srv)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxOrderRecharge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(ZltxOrderRechargeReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderRecharge(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxOrderRecharge_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderRecharge(ctx, req.(*ZltxOrderRechargeReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxOrderRechargeQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(ZltxOrderRechargeQueryReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderRechargeQuery(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxOrderRechargeQuery_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderRechargeQuery(ctx, req.(*ZltxOrderRechargeQueryReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxOrderCard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(ZltxOrderCardReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderCard(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxOrderCard_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderCard(ctx, req.(*ZltxOrderCardReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxOrderCardQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(ZltxOrderCardQueryReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderCardQuery(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxOrderCardQuery_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderCardQuery(ctx, req.(*ZltxOrderCardQueryReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxOrderSms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(ZltxOrderSmsReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderSms(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxOrderSms_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxOrderSms(ctx, req.(*ZltxOrderSmsReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxRechargeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(DefaultReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxRechargeInfo(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxRechargeInfo_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxRechargeInfo(ctx, req.(*DefaultReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxRechargeProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(DefaultReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxRechargeProduct(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxRechargeProduct_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxRechargeProduct(ctx, req.(*DefaultReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return interceptor(ctx, in, info, handler)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_ZltxRsMiXue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(RsCouponGrantReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxRsMiXue(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_ZltxRsMiXue_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).ZltxRsMiXue(ctx, req.(*RsCouponGrantReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	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)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func _Transfer_RsCouponGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					 | 
				
			||||||
	in := new(RsCouponGrantReq)
 | 
					 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if interceptor == nil {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).RsCouponGrant(ctx, in)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	info := &grpc.UnaryServerInfo{
 | 
					 | 
				
			||||||
		Server:     srv,
 | 
					 | 
				
			||||||
		FullMethod: Transfer_RsCouponGrant_FullMethodName,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
					 | 
				
			||||||
		return srv.(TransferServer).RsCouponGrant(ctx, req.(*RsCouponGrantReq))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	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)
 | 
					 | 
				
			||||||
var Transfer_ServiceDesc = grpc.ServiceDesc{
 | 
					 | 
				
			||||||
	ServiceName: "transfer.Transfer",
 | 
					 | 
				
			||||||
	HandlerType: (*TransferServer)(nil),
 | 
					 | 
				
			||||||
	Methods: []grpc.MethodDesc{
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxOrderRecharge",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxOrderRecharge_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxOrderRechargeQuery",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxOrderRechargeQuery_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxOrderCard",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxOrderCard_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxOrderCardQuery",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxOrderCardQuery_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxOrderSms",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxOrderSms_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxRechargeInfo",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxRechargeInfo_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxRechargeProduct",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxRechargeProduct_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "zltxRsMiXue",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_ZltxRsMiXue_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "marketKeySend",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_MarketKeySend_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "marketKeyDiscard",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_MarketKeyDiscard_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "marketQuery",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_MarketQuery_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			MethodName: "rsCouponGrant",
 | 
					 | 
				
			||||||
			Handler:    _Transfer_RsCouponGrant_Handler,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	Streams:  []grpc.StreamDesc{},
 | 
					 | 
				
			||||||
	Metadata: "transfer.proto",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -3,16 +3,18 @@ package main
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"flag"
 | 
						"flag"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"github.com/zeromicro/go-zero/core/conf"
 | 
						"github.com/zeromicro/go-zero/core/conf"
 | 
				
			||||||
	"github.com/zeromicro/go-zero/core/service"
 | 
						"github.com/zeromicro/go-zero/core/service"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/config"
 | 
						"trasfer_middleware/cmd/rpc/internal/config"
 | 
				
			||||||
	mq2 "trasfer_middleware/cmd/rpc/internal/queue/mq"
 | 
						mq2 "trasfer_middleware/cmd/rpc/internal/queue/mq"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/queue/mq/mqServer"
 | 
						"trasfer_middleware/cmd/rpc/internal/queue/mq/mqServer"
 | 
				
			||||||
	"trasfer_middleware/cmd/rpc/internal/queue/mq/mqSvc"
 | 
						"trasfer_middleware/cmd/rpc/internal/queue/mq/mqSvc"
 | 
				
			||||||
 | 
						"trasfer_middleware/until"
 | 
				
			||||||
	"trasfer_middleware/until/sysLog"
 | 
						"trasfer_middleware/until/sysLog"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var configFile = flag.String("f", "../../../config/transfer_produce.yaml", "the config file")
 | 
					var configFile = flag.String("f", fmt.Sprintf("%s%s", "../../../config/", until.GetConfigQueue()), "the config file")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	flag.Parse()
 | 
						flag.Parse()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@ func main() {
 | 
				
			||||||
			reflection.Register(grpcServer)
 | 
								reflection.Register(grpcServer)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	registerNacos(&c)
 | 
						registerNacos(&c)
 | 
				
			||||||
	defer s.Stop()
 | 
						defer s.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										54
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										54
									
								
								go.mod
								
								
								
								
							| 
						 | 
					@ -1,13 +1,15 @@
 | 
				
			||||||
module trasfer_middleware
 | 
					module trasfer_middleware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
go 1.21
 | 
					go 1.22.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/apache/rocketmq-client-go/v2 v2.1.2
 | 
						github.com/apache/rocketmq-client-go/v2 v2.1.2
 | 
				
			||||||
	github.com/jinzhu/copier v0.4.0
 | 
						github.com/jinzhu/copier v0.4.0
 | 
				
			||||||
 | 
						github.com/mitchellh/mapstructure v1.5.0
 | 
				
			||||||
	github.com/nacos-group/nacos-sdk-go/v2 v2.2.3
 | 
						github.com/nacos-group/nacos-sdk-go/v2 v2.2.3
 | 
				
			||||||
	github.com/pkg/errors v0.9.1
 | 
						github.com/pkg/errors v0.9.1
 | 
				
			||||||
	github.com/qit-team/snow-core v0.1.29
 | 
						github.com/sleepinggodoflove/lansexiongdi-marketing-sdk v0.0.14
 | 
				
			||||||
 | 
						github.com/spf13/cast v1.7.0
 | 
				
			||||||
	github.com/streadway/amqp v1.1.0
 | 
						github.com/streadway/amqp v1.1.0
 | 
				
			||||||
	github.com/zeromicro/go-zero v1.6.5
 | 
						github.com/zeromicro/go-zero v1.6.5
 | 
				
			||||||
	github.com/zeromicro/zero-contrib/zrpc/registry/nacos v0.0.0-20231030135404-af9ae855016f
 | 
						github.com/zeromicro/zero-contrib/zrpc/registry/nacos v0.0.0-20231030135404-af9ae855016f
 | 
				
			||||||
| 
						 | 
					@ -15,8 +17,8 @@ require (
 | 
				
			||||||
	go.opentelemetry.io/otel/exporters/jaeger v1.17.0
 | 
						go.opentelemetry.io/otel/exporters/jaeger v1.17.0
 | 
				
			||||||
	go.opentelemetry.io/otel/sdk v1.19.0
 | 
						go.opentelemetry.io/otel/sdk v1.19.0
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0
 | 
						go.opentelemetry.io/otel/trace v1.19.0
 | 
				
			||||||
	google.golang.org/grpc v1.63.2
 | 
						google.golang.org/grpc v1.67.1
 | 
				
			||||||
	google.golang.org/protobuf v1.34.1
 | 
						google.golang.org/protobuf v1.34.2
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
| 
						 | 
					@ -24,11 +26,8 @@ require (
 | 
				
			||||||
	github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
 | 
						github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
 | 
				
			||||||
	github.com/beorn7/perks v1.0.1 // indirect
 | 
						github.com/beorn7/perks v1.0.1 // indirect
 | 
				
			||||||
	github.com/buger/jsonparser v1.1.1 // indirect
 | 
						github.com/buger/jsonparser v1.1.1 // indirect
 | 
				
			||||||
	github.com/bytedance/sonic v1.10.2 // indirect
 | 
					 | 
				
			||||||
	github.com/cenkalti/backoff/v4 v4.2.1 // indirect
 | 
						github.com/cenkalti/backoff/v4 v4.2.1 // indirect
 | 
				
			||||||
	github.com/cespare/xxhash/v2 v2.2.0 // indirect
 | 
						github.com/cespare/xxhash/v2 v2.3.0 // indirect
 | 
				
			||||||
	github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
 | 
					 | 
				
			||||||
	github.com/chenzhuoyu/iasm v0.9.1 // indirect
 | 
					 | 
				
			||||||
	github.com/coreos/go-semver v0.3.1 // indirect
 | 
						github.com/coreos/go-semver v0.3.1 // indirect
 | 
				
			||||||
	github.com/coreos/go-systemd/v22 v22.5.0 // indirect
 | 
						github.com/coreos/go-systemd/v22 v22.5.0 // indirect
 | 
				
			||||||
	github.com/davecgh/go-spew v1.1.1 // indirect
 | 
						github.com/davecgh/go-spew v1.1.1 // indirect
 | 
				
			||||||
| 
						 | 
					@ -36,10 +35,7 @@ require (
 | 
				
			||||||
	github.com/emicklei/go-restful/v3 v3.11.0 // indirect
 | 
						github.com/emicklei/go-restful/v3 v3.11.0 // indirect
 | 
				
			||||||
	github.com/emirpasic/gods v1.18.1 // indirect
 | 
						github.com/emirpasic/gods v1.18.1 // indirect
 | 
				
			||||||
	github.com/fatih/color v1.16.0 // indirect
 | 
						github.com/fatih/color v1.16.0 // indirect
 | 
				
			||||||
	github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 // indirect
 | 
						github.com/gabriel-vasile/mimetype v1.4.3 // indirect
 | 
				
			||||||
	github.com/gabriel-vasile/mimetype v1.4.2 // indirect
 | 
					 | 
				
			||||||
	github.com/gin-contrib/sse v0.1.0 // indirect
 | 
					 | 
				
			||||||
	github.com/gin-gonic/gin v1.9.1 // indirect
 | 
					 | 
				
			||||||
	github.com/go-logr/logr v1.3.0 // indirect
 | 
						github.com/go-logr/logr v1.3.0 // indirect
 | 
				
			||||||
	github.com/go-logr/stdr v1.2.2 // indirect
 | 
						github.com/go-logr/stdr v1.2.2 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
						github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
				
			||||||
| 
						 | 
					@ -47,9 +43,8 @@ require (
 | 
				
			||||||
	github.com/go-openapi/swag v0.22.4 // indirect
 | 
						github.com/go-openapi/swag v0.22.4 // indirect
 | 
				
			||||||
	github.com/go-playground/locales v0.14.1 // indirect
 | 
						github.com/go-playground/locales v0.14.1 // indirect
 | 
				
			||||||
	github.com/go-playground/universal-translator v0.18.1 // indirect
 | 
						github.com/go-playground/universal-translator v0.18.1 // indirect
 | 
				
			||||||
	github.com/go-playground/validator/v10 v10.14.1 // indirect
 | 
						github.com/go-playground/validator/v10 v10.22.1 // indirect
 | 
				
			||||||
	github.com/go-sql-driver/mysql v1.8.1 // indirect
 | 
						github.com/go-sql-driver/mysql v1.8.1 // indirect
 | 
				
			||||||
	github.com/goccy/go-json v0.10.2 // indirect
 | 
					 | 
				
			||||||
	github.com/gogo/protobuf v1.3.2 // indirect
 | 
						github.com/gogo/protobuf v1.3.2 // indirect
 | 
				
			||||||
	github.com/golang/mock v1.6.0 // indirect
 | 
						github.com/golang/mock v1.6.0 // indirect
 | 
				
			||||||
	github.com/golang/protobuf v1.5.4 // indirect
 | 
						github.com/golang/protobuf v1.5.4 // indirect
 | 
				
			||||||
| 
						 | 
					@ -57,12 +52,12 @@ require (
 | 
				
			||||||
	github.com/google/go-cmp v0.6.0 // indirect
 | 
						github.com/google/go-cmp v0.6.0 // indirect
 | 
				
			||||||
	github.com/google/gofuzz v1.2.0 // indirect
 | 
						github.com/google/gofuzz v1.2.0 // indirect
 | 
				
			||||||
	github.com/google/uuid v1.6.0 // indirect
 | 
						github.com/google/uuid v1.6.0 // indirect
 | 
				
			||||||
 | 
						github.com/gopherjs/gopherjs v0.0.0-20211111143520-d0d5ecc1a356 // indirect
 | 
				
			||||||
	github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
 | 
						github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
 | 
				
			||||||
	github.com/jmespath/go-jmespath v0.4.0 // indirect
 | 
						github.com/jmespath/go-jmespath v0.4.0 // indirect
 | 
				
			||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/klauspost/cpuid/v2 v2.2.6 // indirect
 | 
						github.com/leodido/go-urn v1.4.0 // indirect
 | 
				
			||||||
	github.com/leodido/go-urn v1.2.4 // indirect
 | 
					 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/mattn/go-colorable v0.1.13 // indirect
 | 
						github.com/mattn/go-colorable v0.1.13 // indirect
 | 
				
			||||||
	github.com/mattn/go-isatty v0.0.20 // indirect
 | 
						github.com/mattn/go-isatty v0.0.20 // indirect
 | 
				
			||||||
| 
						 | 
					@ -77,16 +72,14 @@ require (
 | 
				
			||||||
	github.com/prometheus/client_model v0.5.0 // indirect
 | 
						github.com/prometheus/client_model v0.5.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.45.0 // indirect
 | 
						github.com/prometheus/common v0.45.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.12.0 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/qit-team/work v0.3.11 // indirect
 | 
					 | 
				
			||||||
	github.com/redis/go-redis/v9 v9.4.0 // indirect
 | 
						github.com/redis/go-redis/v9 v9.4.0 // indirect
 | 
				
			||||||
	github.com/robfig/cron v1.2.0 // indirect
 | 
					 | 
				
			||||||
	github.com/sirupsen/logrus v1.9.3 // indirect
 | 
						github.com/sirupsen/logrus v1.9.3 // indirect
 | 
				
			||||||
 | 
						github.com/smartystreets/goconvey v1.7.2 // indirect
 | 
				
			||||||
	github.com/spaolacci/murmur3 v1.1.0 // indirect
 | 
						github.com/spaolacci/murmur3 v1.1.0 // indirect
 | 
				
			||||||
	github.com/tidwall/gjson v1.15.0 // indirect
 | 
						github.com/tidwall/gjson v1.15.0 // indirect
 | 
				
			||||||
	github.com/tidwall/match v1.1.1 // indirect
 | 
						github.com/tidwall/match v1.1.1 // indirect
 | 
				
			||||||
	github.com/tidwall/pretty v1.2.1 // indirect
 | 
						github.com/tidwall/pretty v1.2.1 // indirect
 | 
				
			||||||
	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 | 
						github.com/tjfoc/gmsm v1.4.1 // indirect
 | 
				
			||||||
	github.com/ugorji/go/codec v1.2.11 // indirect
 | 
					 | 
				
			||||||
	go.etcd.io/etcd/api/v3 v3.5.13 // indirect
 | 
						go.etcd.io/etcd/api/v3 v3.5.13 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
 | 
						go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/client/v3 v3.5.13 // indirect
 | 
						go.etcd.io/etcd/client/v3 v3.5.13 // indirect
 | 
				
			||||||
| 
						 | 
					@ -101,19 +94,16 @@ require (
 | 
				
			||||||
	go.uber.org/automaxprocs v1.5.3 // indirect
 | 
						go.uber.org/automaxprocs v1.5.3 // indirect
 | 
				
			||||||
	go.uber.org/multierr v1.9.0 // indirect
 | 
						go.uber.org/multierr v1.9.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.24.0 // indirect
 | 
						go.uber.org/zap v1.24.0 // indirect
 | 
				
			||||||
	golang.org/x/arch v0.6.0 // indirect
 | 
						golang.org/x/crypto v0.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.23.0 // indirect
 | 
						golang.org/x/net v0.28.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.25.0 // indirect
 | 
						golang.org/x/oauth2 v0.22.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.17.0 // indirect
 | 
						golang.org/x/sync v0.8.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sys v0.24.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.20.0 // indirect
 | 
						golang.org/x/term v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.20.0 // indirect
 | 
						golang.org/x/text v0.17.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.15.0 // indirect
 | 
					 | 
				
			||||||
	golang.org/x/time v0.5.0 // indirect
 | 
						golang.org/x/time v0.5.0 // indirect
 | 
				
			||||||
	google.golang.org/appengine v1.6.8 // indirect
 | 
						google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
 | 
				
			||||||
	google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
 | 
						google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
 | 
				
			||||||
	google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect
 | 
					 | 
				
			||||||
	google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
 | 
					 | 
				
			||||||
	gopkg.in/inf.v0 v0.9.1 // indirect
 | 
						gopkg.in/inf.v0 v0.9.1 // indirect
 | 
				
			||||||
	gopkg.in/ini.v1 v1.66.2 // indirect
 | 
						gopkg.in/ini.v1 v1.66.2 // indirect
 | 
				
			||||||
	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
 | 
						gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,4 +4,4 @@
 | 
				
			||||||
Environment="test"
 | 
					Environment="test"
 | 
				
			||||||
ADDRESS="${TEST_ADDRESS}"
 | 
					ADDRESS="${TEST_ADDRESS}"
 | 
				
			||||||
echo "test"> $(pwd)/env
 | 
					echo "test"> $(pwd)/env
 | 
				
			||||||
sh $(pwd)/sh/build.sh
 | 
					. $(pwd)/sh/build.sh
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								until/env.go
								
								
								
								
							
							
						
						
									
										24
									
								
								until/env.go
								
								
								
								
							| 
						 | 
					@ -10,10 +10,28 @@ func GetConfig() string {
 | 
				
			||||||
	pwd, _ := os.Getwd()
 | 
						pwd, _ := os.Getwd()
 | 
				
			||||||
	path := fmt.Sprintf("%s%s", pwd, "/../../env")
 | 
						path := fmt.Sprintf("%s%s", pwd, "/../../env")
 | 
				
			||||||
	bytes, _ := os.ReadFile(path)
 | 
						bytes, _ := os.ReadFile(path)
 | 
				
			||||||
	switch string(bytes) {
 | 
						env := string(bytes)
 | 
				
			||||||
	case "produce":
 | 
						switch env {
 | 
				
			||||||
 | 
						case "produce\n":
 | 
				
			||||||
		dir = "produce.yaml"
 | 
							dir = "produce.yaml"
 | 
				
			||||||
	case "test":
 | 
						case "test\n":
 | 
				
			||||||
 | 
							dir = "test.yaml"
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							dir = "local.yaml"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return dir
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func GetConfigQueue() string {
 | 
				
			||||||
 | 
						var dir string
 | 
				
			||||||
 | 
						pwd, _ := os.Getwd()
 | 
				
			||||||
 | 
						path := fmt.Sprintf("%s%s", pwd, "/../../../env")
 | 
				
			||||||
 | 
						bytes, _ := os.ReadFile(path)
 | 
				
			||||||
 | 
						env := string(bytes)
 | 
				
			||||||
 | 
						switch env {
 | 
				
			||||||
 | 
						case "produce\n":
 | 
				
			||||||
 | 
							dir = "produce.yaml"
 | 
				
			||||||
 | 
						case "test\n":
 | 
				
			||||||
		dir = "test.yaml"
 | 
							dir = "test.yaml"
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		dir = "local.yaml"
 | 
							dir = "local.yaml"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,10 @@
 | 
				
			||||||
package test
 | 
					package test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
						"trasfer_middleware/cmd/rpc/pb/transfer"
 | 
				
			||||||
	"trasfer_middleware/until/request"
 | 
						"trasfer_middleware/until/request"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,3 +83,10 @@ func TestPostJson(t *testing.T) {
 | 
				
			||||||
	fmt.Printf("响应时间: %f秒\n", resp.Elapsed)
 | 
						fmt.Printf("响应时间: %f秒\n", resp.Elapsed)
 | 
				
			||||||
	fmt.Printf("响应文本: %s\n", resp.Text)
 | 
						fmt.Printf("响应文本: %s\n", resp.Text)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestA(T *testing.T) {
 | 
				
			||||||
 | 
						var res transfer.MarketKeySendRes
 | 
				
			||||||
 | 
						data := "{\"errCode\":\"-1\",\"msg\":\"券码库存不足\"}"
 | 
				
			||||||
 | 
						_ = json.Unmarshal([]byte(data), &res)
 | 
				
			||||||
 | 
						fmt.Println(res)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,137 @@
 | 
				
			||||||
 | 
					package rsa
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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" || key == "mobile_no" || 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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,66 @@
 | 
				
			||||||
 | 
					package rsa
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"crypto/sha256"
 | 
				
			||||||
 | 
						"encoding/base64"
 | 
				
			||||||
 | 
						"encoding/hex"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"github.com/spf13/cast"
 | 
				
			||||||
 | 
						"sort"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var filterKeys = []string{"sign", "extendParams", "msg"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func GetSign(data map[string]interface{}, primary string) (string, error) {
 | 
				
			||||||
 | 
						filterData(&data)
 | 
				
			||||||
 | 
						sysSign, err := hash256AndBase64(sortValue(data, primary))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return "", fmt.Errorf("参数加密失败")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return sysSign, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func filterData(data *map[string]interface{}) {
 | 
				
			||||||
 | 
						for _, key := range filterKeys {
 | 
				
			||||||
 | 
							delete(*data, key)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func sortValue(data map[string]interface{}, primary string) string {
 | 
				
			||||||
 | 
						var sortValueString string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data["key"] = primary
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						keys := make([]string, 0, len(data))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for k := range data {
 | 
				
			||||||
 | 
							keys = append(keys, k)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 对键进行排序
 | 
				
			||||||
 | 
						sort.Strings(keys)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 按照排序后的键的顺序输出map的值
 | 
				
			||||||
 | 
						for _, v := range keys {
 | 
				
			||||||
 | 
							sortValueString += cast.ToString(data[v])
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return sortValueString
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func hash256AndBase64(valueString string) (string, error) {
 | 
				
			||||||
 | 
						// 创建一个新的hash.Hash计算器,并指定算法为sha256
 | 
				
			||||||
 | 
						hasher := sha256.New()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 写入数据到hash计算器
 | 
				
			||||||
 | 
						hasher.Write([]byte(valueString))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Sum方法返回计算出的哈希值的字节切片
 | 
				
			||||||
 | 
						hashBytes := hasher.Sum(nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//将字符串编码为16进制格式,返回字符串
 | 
				
			||||||
 | 
						hashCode := hex.EncodeToString(hashBytes)
 | 
				
			||||||
 | 
						// 将哈希值的字节切片编码为Base64字符串
 | 
				
			||||||
 | 
						hashBase64 := base64.StdEncoding.EncodeToString([]byte(hashCode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return hashBase64, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue