新增了rpc服务定义和工具命令
This commit is contained in:
parent
061bb694bb
commit
d1256e2ae9
6
Makefile
6
Makefile
|
@ -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 ./
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
//商户ID:test001
|
||||||
|
//AppId:test001
|
||||||
|
//平台Id:test001
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -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"`
|
||||||
|
|
|
@ -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"
|
||||||
)
|
)
|
||||||
|
|
|
@ -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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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加签
|
||||||
|
|
Loading…
Reference in New Issue