构建镜像

This commit is contained in:
renzhiyuan 2024-10-15 18:35:45 +08:00
parent a7664d5ed2
commit 6922b04f70
34 changed files with 806 additions and 3913 deletions

View File

@ -24,7 +24,7 @@ apigen:
.PHONY: rpcgen
# 根据protoc创建rpc文件
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
# api端生成rpc

View File

@ -29,6 +29,7 @@ type TopicList struct {
Market TopicConfig
ZLTX TopicConfig
RS TopicConfig
NewMarket TopicConfig
}
type TopicConfig struct {

View File

@ -5,6 +5,7 @@ import (
"github.com/zeromicro/go-zero/zrpc"
"trasfer_middleware/cmd/rpc/etc"
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"
zltxTypes "trasfer_middleware/cmd/rpc/internal/logic/po/zltx/types"
)
@ -16,6 +17,7 @@ type Config struct {
ZLTX zltxTypes.ZLTXConf
Market marketTypes.MarketConf
RS rsTypes.RSConf
NewMarket newMarketTypes.NewMarketConf
DB struct {
Master struct {
DataSource string

View File

@ -13,6 +13,9 @@ func MarketKeyDataSet(order *genModel.ServerOrderMarket, resq string, resp strin
orderInfoRes map[string]interface{}
)
err = json.Unmarshal([]byte(resp), &orderInfoRes)
if _, ok := orderInfoRes["errCode"]; !ok {
return nil
}
if orderInfoRes["errCode"].(string) != vo.MARKET_SUCCESS {
return err
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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 {
p := "-----BEGIN RSA PRIVATE KEY-----\n" + data["sign"].(string) + "\n-----END RSA PRIVATE KEY-----"
sign, err := common.MarketMakeRsaSign(p, data)
if err != nil {
panic(err)
}
data["sign"] = sign
requestBody := make(map[string]string, len(data))
for key, value := range data {
requestBody[key] = fmt.Sprintf("%v", value)
@ -69,7 +69,7 @@ func (r *MarketRequest) request(url string) (*request.Response, error) {
SecurityToken: r.Config.SecurityToken,
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 {
sysLog.LogSendMq(r.ctx, err)
}

View File

@ -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
}

View File

@ -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"`
}

View File

@ -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"`
}

View File

@ -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"`
}

View File

@ -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"`
}

View File

@ -0,0 +1,9 @@
package types
type RechargeInfoParam struct {
}
type RechargeInfoRes struct {
Code string `json:"code"`
Balance string `json:"balance"`
}

View File

@ -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"`
}

View File

@ -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
}

View File

@ -2,6 +2,7 @@ package po
import (
"encoding/json"
"github.com/sleepinggodoflove/lansexiongdi-marketing-sdk/api/v1/key"
"time"
"trasfer_middleware/cmd/rpc/etc"
"trasfer_middleware/genModel"
@ -26,6 +27,17 @@ func SetMqSendDataZLTX(reqInfo *RequestStruct, respInfo *request.Response, url s
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 {
log := commonMqSendData(rsReq, respInfo, url)
OrderMap := common.StructToMap(order)

View File

@ -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"
)

View File

@ -31,6 +31,11 @@ type RS struct {
ctx context.Context
}
type NewMarkets struct {
svc *mqSvc.ServiceContext
ctx context.Context
}
func NewMarket(svc *mqSvc.ServiceContext, ctx context.Context) *Market {
return &Market{
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 {
var market = &genModel.ServerMiddleMarketLogs{}
json.Unmarshal(msg, market)
err := json.Unmarshal(msg, market)
market.CreateTime = time.Now()
market.Status = vo.MARKET_LOG_STATU_DEFAULT
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
}
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 {
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.ZLTX.Name] = NewZLTX(svc, ctx)
result[c.TopicPrefix+c.Topic.RS.Name] = NewRS(svc, ctx)
result[c.TopicPrefix+c.Topic.NewMarket.Name] = NewNewMarkets(svc, ctx)
return result
}

View File

@ -81,3 +81,18 @@ func (s *TransferServer) RsCouponGrant(ctx context.Context, in *transfer.RsCoupo
l := logic.NewRsCouponGrantLogic(ctx, s.svcCtx)
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)
}

View File

@ -4,6 +4,7 @@ import (
"github.com/zeromicro/go-zero/core/stores/redis"
"trasfer_middleware/cmd/rpc/internal/config"
"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/zltx"
)
@ -14,6 +15,7 @@ type ServiceContext struct {
ZltxOrder *zltx.ZltxOrder
Market *market.Market
RS *rs.RS
NewMarket *new_market.NewMarketStruct
}
func NewServiceContext(c config.Config) *ServiceContext {
@ -28,18 +30,6 @@ func NewServiceContext(c config.Config) *ServiceContext {
ZltxOrder: zltx.NewZltxOrder(c.ZLTX),
Market: market.NewMarket(c.Market),
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
}*/

View File

@ -33,8 +33,57 @@ service Transfer {
rpc marketQuery(MarketQueryReq) returns(MarketQueryRes);
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 {
string vendorNo = 1;
string data = 2;

File diff suppressed because it is too large Load Diff

View File

@ -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",
}

View File

@ -3,16 +3,18 @@ package main
import (
"context"
"flag"
"fmt"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/core/service"
"trasfer_middleware/cmd/rpc/internal/config"
mq2 "trasfer_middleware/cmd/rpc/internal/queue/mq"
"trasfer_middleware/cmd/rpc/internal/queue/mq/mqServer"
"trasfer_middleware/cmd/rpc/internal/queue/mq/mqSvc"
"trasfer_middleware/until"
"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() {
flag.Parse()

View File

@ -34,6 +34,7 @@ func main() {
reflection.Register(grpcServer)
}
})
registerNacos(&c)
defer s.Stop()

1
env
View File

@ -1 +0,0 @@
produce

54
go.mod
View File

@ -1,13 +1,15 @@
module trasfer_middleware
go 1.21
go 1.22.2
require (
github.com/apache/rocketmq-client-go/v2 v2.1.2
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/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/zeromicro/go-zero v1.6.5
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/sdk v1.19.0
go.opentelemetry.io/otel/trace v1.19.0
google.golang.org/grpc v1.63.2
google.golang.org/protobuf v1.34.1
google.golang.org/grpc v1.67.1
google.golang.org/protobuf v1.34.2
)
require (
@ -24,11 +26,8 @@ require (
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
github.com/beorn7/perks v1.0.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/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
github.com/chenzhuoyu/iasm v0.9.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // 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/emirpasic/gods v1.18.1 // 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.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/gin-gonic/gin v1.9.1 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // 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-playground/locales v0.14.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/goccy/go-json v0.10.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/mock v1.6.0 // 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/gofuzz v1.2.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/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // 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/common v0.45.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/robfig/cron v1.2.0 // 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/tidwall/gjson v1.15.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
go.etcd.io/etcd/api/v3 v3.5.13 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
go.etcd.io/etcd/client/v3 v3.5.13 // indirect
@ -101,19 +94,16 @@ require (
go.uber.org/automaxprocs v1.5.3 // indirect
go.uber.org/multierr v1.9.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/arch v0.6.0 // indirect
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/oauth2 v0.17.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/term v0.20.0 // indirect
golang.org/x/text v0.15.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/net v0.28.0 // indirect
golang.org/x/oauth2 v0.22.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.24.0 // indirect
golang.org/x/term v0.23.0 // indirect
golang.org/x/text v0.17.0 // indirect
golang.org/x/time v0.5.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.66.2 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect

595
go.sum

File diff suppressed because it is too large Load Diff

View File

@ -4,4 +4,4 @@
Environment="test"
ADDRESS="${TEST_ADDRESS}"
echo "test"> $(pwd)/env
sh $(pwd)/sh/build.sh
. $(pwd)/sh/build.sh

View File

@ -10,10 +10,28 @@ func GetConfig() string {
pwd, _ := os.Getwd()
path := fmt.Sprintf("%s%s", pwd, "/../../env")
bytes, _ := os.ReadFile(path)
switch string(bytes) {
case "produce":
env := string(bytes)
switch env {
case "produce\n":
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"
default:
dir = "local.yaml"

View File

@ -1,8 +1,10 @@
package test
import (
"encoding/json"
"fmt"
"testing"
"trasfer_middleware/cmd/rpc/pb/transfer"
"trasfer_middleware/until/request"
)
@ -81,3 +83,10 @@ func TestPostJson(t *testing.T) {
fmt.Printf("响应时间: %f秒\n", resp.Elapsed)
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)
}

137
until/rsa/rsa.go Normal file
View File

@ -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
}

66
until/rsa/sign.go Normal file
View File

@ -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
}