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

This commit is contained in:
Rzy 2024-06-07 14:28:29 +08:00
parent 061bb694bb
commit d1256e2ae9
11 changed files with 121 additions and 18 deletions

View File

@ -44,17 +44,17 @@ apirun:
cd cmd/api && go run transfer.go cd cmd/api && go run transfer.go
.PHONY: apivalidate .PHONY: apivalidate
# 运行rpc # api有效测试
apivalidate: apivalidate:
cd cmd/api/desc && goctl api validate --api *.api cd cmd/api/desc && goctl api validate --api *.api
.PHONY: apiformat .PHONY: apiformat
# 运行rpc # 格式化api文件
apiformat: apiformat:
cd cmd/api/desc && goctl api format --dir ./ cd cmd/api/desc && goctl api format --dir ./
.PHONY: apitodoc .PHONY: apitodoc
# 运行rpc # 生成api文档
apitodoc: apitodoc:
cd cmd/api/desc && goctl api doc --dir ./ cd cmd/api/desc && goctl api doc --dir ./

View File

@ -21,8 +21,7 @@ type Config struct {
DataSource string DataSource string
} }
} }
Cache cache.CacheConf
Cache cache.CacheConf ZLTX types.ZLTXConf
Market types.MarketConf
ZLTX types.ZLTXConf
} }

View File

@ -2,6 +2,7 @@ package logic
import ( import (
"context" "context"
"trasfer_middleware/pkg/common"
"trasfer_middleware/cmd/rpc/internal/svc" "trasfer_middleware/cmd/rpc/internal/svc"
"trasfer_middleware/cmd/rpc/pb/transfer" "trasfer_middleware/cmd/rpc/pb/transfer"
@ -24,7 +25,7 @@ func NewMarketKeyDiscardLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
} }
func (l *MarketKeyDiscardLogic) MarketKeyDiscard(in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) { func (l *MarketKeyDiscardLogic) MarketKeyDiscard(in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) {
// todo: add your logic here and delete this line res, err := l.svcCtx.Market.SetData(common.StructToMap(in)).KeyDiscard()
return &transfer.MarketKeyDiscardRes{}, nil return res, err
} }

View File

@ -2,6 +2,7 @@ package logic
import ( import (
"context" "context"
"trasfer_middleware/pkg/common"
"trasfer_middleware/cmd/rpc/internal/svc" "trasfer_middleware/cmd/rpc/internal/svc"
"trasfer_middleware/cmd/rpc/pb/transfer" "trasfer_middleware/cmd/rpc/pb/transfer"
@ -24,7 +25,7 @@ func NewMarketKeySendLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Mar
} }
func (l *MarketKeySendLogic) MarketKeySend(in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) { func (l *MarketKeySendLogic) MarketKeySend(in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) {
// todo: add your logic here and delete this line res, err := l.svcCtx.Market.SetData(common.StructToMap(in)).KeySend()
return &transfer.MarketKeySendRes{}, nil return res, err
} }

View File

@ -2,6 +2,7 @@ package logic
import ( import (
"context" "context"
"trasfer_middleware/pkg/common"
"trasfer_middleware/cmd/rpc/internal/svc" "trasfer_middleware/cmd/rpc/internal/svc"
"trasfer_middleware/cmd/rpc/pb/transfer" "trasfer_middleware/cmd/rpc/pb/transfer"
@ -24,7 +25,6 @@ func NewMarketQueryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Marke
} }
func (l *MarketQueryLogic) MarketQuery(in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) { func (l *MarketQueryLogic) MarketQuery(in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) {
// todo: add your logic here and delete this line res, err := l.svcCtx.Market.SetData(common.StructToMap(in)).Query()
return res, err
return &transfer.MarketQueryRes{}, nil
} }

View File

@ -1 +1,95 @@
package market package market
import (
"encoding/json"
"fmt"
"time"
"trasfer_middleware/cmd/rpc/internal/logic/po/zltx/types"
"trasfer_middleware/cmd/rpc/internal/logic/vo"
"trasfer_middleware/cmd/rpc/pb/transfer"
"trasfer_middleware/pkg/common"
"trasfer_middleware/pkg/request"
)
type Market struct {
Conf *types.MarketConf
RequestBody map[string]string
}
type MarketRequest struct {
*Market
RequestBody map[string]string
}
func NewMarket(conf types.MarketConf) *Market {
return &Market{
Conf: &conf,
}
}
func (r *Market) SetData(data map[string]interface{}) *MarketRequest {
//商户IDtest001
//AppIdtest001
//平台Idtest001
data["timestamp"] = time.Now().Unix()
privatekey := "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEJHRzQjOTOtyR01BYq7ZsMlzBljTHqGl9FPsVfbn1kIeMQcbtbYsJhiIKS4exbxMXDRp211Mw89SXU4D/awpv0hPa+rMiwWxQEzLseI3EhTl4/vDBhg/EuViEaM60IuPQtW5cheFbABTw8T+HiysQTzUj11YcPUUMKVjDAHracnPuEwNxpZOLcuCK3Sltx/9GkQ2Lqk2J1UJ0kBg9dtPcY9WwoQXe+f1Ft/clmiFA5hXL4gulNiiCp2r3WetGCu18/Ql/jtp8d32PQF5xE+zTorboR9KGgoRwn7kw9Ylo0O2OACeAoX8Zc0eLqX+8oZGC66zw81TtloZGKSb8ThPNAgMBAAECggEACmQkBzcqpFIp/U/Eoe327CR+5YKfqTQy4n2KD8lpYKkXhUa20z1KcGa6xvDZb30C9eWr0T/3GFDSonG6E84H74ShqKg/dUfqBRP/TqfUWuTz9oULHDWOAE4RcnJbARAYIaZ7AkvVdIy8j0c4pmWpEmQf3JY76aMVVV+bZDlSSOBPnjLLodb1lgs+5YuQ5aZWtrWw3Bg5n8trpkuPjKxiYgKRmGoRVBAStrafkrOhS+xM/vP1yZLBpOa3Y99Vv5YCxE34caJc5hr6HU+YfpPfxaHZ9Z6Ct+uWuimZvPhSKSGIxVfryFKKlt0BP6PDM6f7fvPB20AM/SfDCn0m7Ye6AQKBgQDrjvQov08HLSrITKQ9I5CEODRUmkZWoGFmWBZjZ1Q7W/VZ6/Q8Wxlalwy7+7HrWMbRl0D4Vc+ghyur/bW+zSxLtFwQMc50LDd2lnz8Yvm4ZsE1dSkbOxmaWt18fBD69rKdY2GnZnb6X6oR60BqbLo7T7rvQ8U1sdAAoM6xCjFFKQKBgQDVKdrinOl3Wq5dydaH7HwsO3TwQh8ebmOt+btXB/u8AwQK4nzhP1mluJkSXZQnyHJegmujaxV7ntk3tLizCknQNknp/xfOrzocxn+18zyJ2B2zoIEysP2oxrFu80QtmfTh8fD/fpDwkR2NLG2XtuUKL7TPcg2pd5dRknarbOcqBQKBgQCgHyOfUzQgN7a+Q0LdgIBrMF16KQipOAodbMGDPqkGVKM6RedW48IfT1BLtHMj/MvhiwSSCprBj0DDgAn8MjHrICX4qDKjy67EANXjJlCD5e1uLj8MEKd9wkiOpzNPtUSDMhwek8tKtJ7B4X1/GnuZd8AlhpbWwhEXbDg0Ji6JyQKBgDNZ/e0Rt/yUz+SwNwpPoipVuHoYs751AXZr7wGsXqyQXWzx2vu4czRFIDsYaBSdaU/zQ1L+/RHm1pVg6A3ZsKaELZI9bdLQy8Ma3rFKg48BjUY0qGs50CHUm/IKkKYbrK6xxkkGiIwrqV7VESG3Yb3ueDRxWXE16jIwgn4Roi6xAoGAPJsEDVj0meHQZFrUjG36TLE7kT83LogwEvhTW9vcCoVkJuT5iT17D2DbgJCHe1Kpg874EbbCVNUTOuAxJanI1lVD+qEUUKAB9bTVTOHUtENjbiX7rrHAM8sf6v9Up4X0PwG+cYp/0LvNkre30DWlo52cBLC6iqJF9VR1+lK+Aiw="
data["app_id"] = "test001"
data["mem_id"] = "test001"
data["pos_id"] = "test001"
sign, err := common.MarketMakeRsaSign(privatekey, data)
if err != nil {
panic(err)
}
data["sign"] = sign
//data := common.MergeMaps(common.ToMap(p), common.ToMap(r), common.ToMap(e))*/
requestBody := make(map[string]string, len(data))
for key, value := range data {
requestBody[key] = fmt.Sprintf("%v", value)
}
return &MarketRequest{
Market: r,
RequestBody: requestBody,
}
}
func (r *MarketRequest) request(url string) (*request.Response, error) {
req := request.Request{
Method: "POST",
Url: fmt.Sprintf("%s%s", r.Conf.Host, url),
Data: r.RequestBody,
}
resp, _ := req.Send()
return &resp, nil
}
func (r *MarketRequest) KeySend() (*transfer.MarketKeySendRes, error) {
var res transfer.MarketKeySendRes
req, err := r.request(vo.MARKET_KEY_SEND)
if err != nil {
return nil, err
}
_ = json.Unmarshal([]byte(req.Text), &res)
return &res, nil
}
func (r *MarketRequest) KeyDiscard() (*transfer.MarketKeyDiscardRes, error) {
var res transfer.MarketKeyDiscardRes
req, err := r.request(vo.MARKET_KEY_DISCARD)
if err != nil {
return nil, err
}
_ = json.Unmarshal([]byte(req.Text), &res)
return &res, nil
}
func (r *MarketRequest) Query() (*transfer.MarketQueryRes, error) {
var res transfer.MarketQueryRes
req, err := r.request(vo.MARKET_KEY_QUERY)
if err != nil {
return nil, err
}
_ = json.Unmarshal([]byte(req.Text), &res)
return &res, nil
}

View File

@ -14,6 +14,10 @@ type ZLTXConf struct {
Host string Host string
} }
type MarketConf struct {
Host string
}
type BaseRes struct { type BaseRes struct {
Code string `json:"code"` Code string `json:"code"`
Message string `json:"message"` Message string `json:"message"`

View File

@ -2,11 +2,11 @@ package vo
const ( const (
//券码生成 //券码生成
KEY_SEND = "openApi/v1/market/key/send" MARKET_KEY_SEND = "openApi/v1/market/key/send"
//券码作废 //券码作废
KEY_DISCARD = "openApi/v1/market/key/discard" MARKET_KEY_DISCARD = "openApi/v1/market/key/discard"
//券码详情 //券码详情
KEY_QUERY = "openApi/v1/market/key/query" MARKET_KEY_QUERY = "openApi/v1/market/key/query"
) )

View File

@ -4,6 +4,7 @@ import (
"github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/core/stores/sqlx"
"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/zltx" "trasfer_middleware/cmd/rpc/internal/logic/po/zltx"
"trasfer_middleware/genModel" "trasfer_middleware/genModel"
"trasfer_middleware/genModel/marketReseller" "trasfer_middleware/genModel/marketReseller"
@ -17,6 +18,7 @@ type ServiceContext struct {
DbReseller *MarkerReseller DbReseller *MarkerReseller
ZltxOrder *zltx.ZltxOrder ZltxOrder *zltx.ZltxOrder
Market *market.Market
} }
func NewServiceContext(c config.Config) *ServiceContext { func NewServiceContext(c config.Config) *ServiceContext {
@ -31,6 +33,7 @@ func NewServiceContext(c config.Config) *ServiceContext {
DbWrite: DbModel(c.DB.Slave.DataSource, c), DbWrite: DbModel(c.DB.Slave.DataSource, c),
DbReseller: ResellerModel(c.DB.MarketReseller.DataSource, c), DbReseller: ResellerModel(c.DB.MarketReseller.DataSource, c),
ZltxOrder: zltx.NewZltxOrder(c.ZLTX), ZltxOrder: zltx.NewZltxOrder(c.ZLTX),
Market: market.NewMarket(c.Market),
} }
} }

View File

@ -93,6 +93,7 @@ message MarketKeySendRes {
string codeType = 6; string codeType = 6;
} }
} }
message MarketKeySendReq { message MarketKeySendReq {
string appId = 1; string appId = 1;
uint64 sign = 2; uint64 sign = 2;

View File

@ -61,7 +61,7 @@ func VerifyRsaSign(publicKey string, data map[string]interface{}) (map[string]in
} }
// MakeRsaSign 生成签名 // MakeRsaSign 生成签名
func MakeRsaSign(privateKey string, data map[string]interface{}) (string, error) { func MarketMakeRsaSign(privateKey string, data map[string]interface{}) (string, error) {
// 对 sign nonce timestamp appId 升序排序 // 对 sign nonce timestamp appId 升序排序
// 使用 xx=aa&yy=bb 的字符串拼接 // 使用 xx=aa&yy=bb 的字符串拼接
// 营销系统生成的私钥生成签名 RSA2加签 // 营销系统生成的私钥生成签名 RSA2加签