新增了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 | 	ZLTX   types.ZLTXConf | ||||||
|  | 	Market types.MarketConf | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -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