新增了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 | ||||
| 
 | ||||
| .PHONY: apivalidate | ||||
| # 运行rpc
 | ||||
| # api有效测试
 | ||||
| apivalidate: | ||||
| 	cd cmd/api/desc && goctl api validate --api *.api | ||||
| 
 | ||||
| .PHONY: apiformat | ||||
| # 运行rpc
 | ||||
| # 格式化api文件
 | ||||
| apiformat: | ||||
| 	cd cmd/api/desc && goctl api format --dir ./ | ||||
| 
 | ||||
| .PHONY: apitodoc | ||||
| # 运行rpc
 | ||||
| # 生成api文档
 | ||||
| apitodoc: | ||||
| 	cd cmd/api/desc && goctl api doc --dir ./ | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,8 +21,7 @@ type Config struct { | |||
| 			DataSource string | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	Cache cache.CacheConf | ||||
| 
 | ||||
| 	ZLTX types.ZLTXConf | ||||
| 	Cache  cache.CacheConf | ||||
| 	ZLTX   types.ZLTXConf | ||||
| 	Market types.MarketConf | ||||
| } | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ package logic | |||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"trasfer_middleware/pkg/common" | ||||
| 
 | ||||
| 	"trasfer_middleware/cmd/rpc/internal/svc" | ||||
| 	"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) { | ||||
| 	// 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 ( | ||||
| 	"context" | ||||
| 	"trasfer_middleware/pkg/common" | ||||
| 
 | ||||
| 	"trasfer_middleware/cmd/rpc/internal/svc" | ||||
| 	"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) { | ||||
| 	// 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 ( | ||||
| 	"context" | ||||
| 	"trasfer_middleware/pkg/common" | ||||
| 
 | ||||
| 	"trasfer_middleware/cmd/rpc/internal/svc" | ||||
| 	"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) { | ||||
| 	// todo: add your logic here and delete this line
 | ||||
| 
 | ||||
| 	return &transfer.MarketQueryRes{}, nil | ||||
| 	res, err := l.svcCtx.Market.SetData(common.StructToMap(in)).Query() | ||||
| 	return res, err | ||||
| } | ||||
|  |  | |||
|  | @ -1 +1,95 @@ | |||
| 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 | ||||
| } | ||||
| 
 | ||||
| type MarketConf struct { | ||||
| 	Host string | ||||
| } | ||||
| 
 | ||||
| type BaseRes struct { | ||||
| 	Code    string `json:"code"` | ||||
| 	Message string `json:"message"` | ||||
|  |  | |||
|  | @ -2,11 +2,11 @@ package vo | |||
| 
 | ||||
| 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/sqlx" | ||||
| 	"trasfer_middleware/cmd/rpc/internal/config" | ||||
| 	"trasfer_middleware/cmd/rpc/internal/logic/po/market" | ||||
| 	"trasfer_middleware/cmd/rpc/internal/logic/po/zltx" | ||||
| 	"trasfer_middleware/genModel" | ||||
| 	"trasfer_middleware/genModel/marketReseller" | ||||
|  | @ -17,6 +18,7 @@ type ServiceContext struct { | |||
| 	DbReseller  *MarkerReseller | ||||
| 
 | ||||
| 	ZltxOrder *zltx.ZltxOrder | ||||
| 	Market    *market.Market | ||||
| } | ||||
| 
 | ||||
| func NewServiceContext(c config.Config) *ServiceContext { | ||||
|  | @ -31,6 +33,7 @@ func NewServiceContext(c config.Config) *ServiceContext { | |||
| 		DbWrite:    DbModel(c.DB.Slave.DataSource, c), | ||||
| 		DbReseller: ResellerModel(c.DB.MarketReseller.DataSource, c), | ||||
| 		ZltxOrder:  zltx.NewZltxOrder(c.ZLTX), | ||||
| 		Market:     market.NewMarket(c.Market), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -93,6 +93,7 @@ message MarketKeySendRes { | |||
|       string codeType = 6; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| message MarketKeySendReq { | ||||
|   string appId = 1; | ||||
|   uint64 sign = 2; | ||||
|  |  | |||
|  | @ -61,7 +61,7 @@ func VerifyRsaSign(publicKey string, data map[string]interface{}) (map[string]in | |||
| } | ||||
| 
 | ||||
| // 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 升序排序
 | ||||
| 	// 使用 xx=aa&yy=bb 的字符串拼接
 | ||||
| 	// 营销系统生成的私钥生成签名 RSA2加签
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue