From e904a0672267d8f1b25fe92d0b08282f8b5b8d18 Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期五, 26 十一月 2021 14:01:30 +0800
Subject: [PATCH] 增加接口 GetUserProfile

---
 sbusClient.go |  135 ++++++++++++++++++++++++--------------------
 1 files changed, 74 insertions(+), 61 deletions(-)

diff --git a/sbusClient.go b/sbusClient.go
index 9deb67c..abfe693 100644
--- a/sbusClient.go
+++ b/sbusClient.go
@@ -1,15 +1,15 @@
 package bhomedbapi
 
 import (
-	"basic.com/valib/bhomebus.git"
+	"basic.com/valib/c_bhomebus.git/api/bhsgo"
+	"basic.com/valib/c_bhomebus.git/proto/source/bhome_msg"
 	"encoding/json"
 	"errors"
-	"fmt"
 	"strconv"
 )
 
 type SBusClient struct {
-	nodes []bhomebus.NetNode
+	nodes []*bhome_msg.MsgQueryTopicReply_BHNodeAddress
 }
 
 type ProcInfo struct {
@@ -18,14 +18,7 @@
 	Info 			string 				`json:"info"` // 杩涚▼鐨勬弿杩颁俊鎭紝鐢ㄤ簬鍖哄垎鍚屼竴杩涚▼鍚嶇О涓嬪涓繘绋�
 }
 
-type MsgInfo struct {
-	SrcProc  		ProcInfo   			`json:"srcProc"`    	// 婧愯繘绋嬪熀鏈俊鎭�
-	MsgType   		string 				`json:"msgType"`        // 鏁版嵁绫诲瀷锛屽彲涓鸿姹傘�佸彂甯冦�佽闃呫�佸簲绛旂瓑
-	Topic 			string				`json:"topic"`			//璇锋眰涓婚
-	Body 			[]byte				`json:"body"`			//璇锋眰鍐呭鎴栬�呭弽棣堢粨鏋�
-}
-
-type request struct {
+type Request struct {
 	Path        			string              	`json:"path"`
 	Method      			string              	`json:"method"`
 	ContentType 			string              	`json:"contentType"`
@@ -36,26 +29,37 @@
 	Body        			[]byte              	`json:"body"`
 }
 
-func (sc SBusClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
-	if sc.nodes == nil || len(sc.nodes) == 0 {
-		return nil, errors.New("invalid netNodes")
-	}
+type reply struct {
+	Success 			bool 						`json:"success"`
+	Msg 				string 						`json:"msg"`
+	Data 				interface{} 				`json:"data"`
+}
 
-	req := request {
+func (sc SBusClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
+
+	req := Request{
 		Path:        url,
 		Method:      "GET",
 		ContentType: CONTENT_TYPE_JSON,
 	}
 	fillParam(&req, headers, params, nil)
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := bhome_msg.MsgRequestTopic{
+		Topic: []byte(req.Path),
+		Data: rb,
+	}
+
+	return busReq(&rMsg, sc.nodes)
+	//return doReq(req, sc.nodes)
 }
 
 func (sc SBusClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
-	if sc.nodes == nil || len(sc.nodes) == 0 {
-		return nil, errors.New("invalid port")
-	}
-	req := request {
+
+	req := Request{
 		Path:        url,
 		Method:      "POST",
 		ContentType: contentType,
@@ -64,6 +68,7 @@
 	if contentType == CONTENT_TYPE_FORM || contentType == CONTENT_TYPE_MULFORM {
 		if body != nil {
 			req.PostFormMap = make(map[string][]string)
+			req.FormMap = map[string][]string{}
 			for k,v := range body {
 				switch v.(type) {
 				case string:
@@ -90,38 +95,61 @@
 		}
 	}
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := bhome_msg.MsgRequestTopic{
+		Topic: []byte(req.Path),
+		Data: rb,
+	}
+
+	return busReq(&rMsg, sc.nodes)
 }
 
 func (sc SBusClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
-	if sc.nodes == nil || len(sc.nodes) == 0 {
-		return nil, errors.New("invalid port")
-	}
-	req := request {
+
+	req := Request{
 		Path:        url,
 		Method:      "PUT",
 		ContentType: contentType,
 	}
 	fillParam(&req, headers, nil, body)
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := bhome_msg.MsgRequestTopic{
+		Topic: []byte(req.Path),
+		Data: rb,
+	}
+
+	return busReq(&rMsg, sc.nodes)
 }
 
 func (sc SBusClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
-	if sc.nodes == nil || len(sc.nodes) == 0 {
-		return nil, errors.New("invalid port")
-	}
-	req := request {
+
+	req := Request{
 		Path:        url,
 		Method:      "DELETE",
 		ContentType: contentType,
 	}
 	fillParam(&req, headers, nil, body)
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := bhome_msg.MsgRequestTopic{
+		Topic: []byte(req.Path),
+		Data: rb,
+	}
+
+	return busReq(&rMsg, sc.nodes)
 }
 
-func fillParam(req *request,headers map[string]string, params map[string]string, body map[string]interface{}) {
+func fillParam(req *Request,headers map[string]string, params map[string]string, body map[string]interface{}) {
 	headerMap := make(map[string][]string)
 	queryMap := make(map[string][]string)
 	if headers != nil {
@@ -142,37 +170,22 @@
 	} else {
 		req.Body = b
 	}
-
 }
 
-func doReq(req request, nodes []bhomebus.NetNode) ([]byte,error) {
-	rb, err := json.Marshal(req)
-	if err !=nil {
-		return nil,err
+/**
+* 鏂扮増bhs鐩存帴鍙戣捣璇锋眰锛屼笉浼氫骇鐢熷叡浜唴瀛樻硠婕忕殑闂锛�
+*/
+func doReq(req *bhome_msg.MsgRequestTopic, destArr []bhome_msg.BHAddress) ([]byte, error) {
+	dest := bhome_msg.BHAddress{}
+	if destArr != nil && len(destArr) > 0 {
+		dest = destArr[0]
 	}
-	rMsg := MsgInfo{
-		Topic: req.Path,
-		Body: rb,
-	}
-	data, err := json.Marshal(rMsg)
-	if err != nil {
-		return nil, err
-	}
-	s := bhomebus.OpenSocket()
-	defer s.Close()
-	var ret []bhomebus.Mesg
-	if n := s.SendandrecvTimeout(nodes, data, &ret, 5000);n == 0 {  //n==0琛ㄧず娌℃湁璇锋眰鎴愬姛
-		return nil, fmt.Errorf("doReq s.SendandrecvTimeout result n:%d", n)
+	pid := ""
+	r := bhome_msg.MsgRequestTopicReply{}
+	if bhsgo.Request(&dest, req, &pid, &r, 5000) {
+		return r.Data, nil
 	} else {
-		if len(ret) > 0 {
-			var retMsg MsgInfo
-			err = json.Unmarshal(ret[0].Data, &retMsg)
-			if err != nil {
-				logPrint("doReq unmarshal to MsgInfo err:", err)
-				return nil, err
-			}
-			return retMsg.Body, nil
-		}
-		return nil, fmt.Errorf("no any response")
+		logPrint("bhsgo.Request request err:", r.Errmsg)
+		return nil, errors.New("bhsgo.Request return false")
 	}
 }
\ No newline at end of file

--
Gitblit v1.8.0