From cef97441f455b3efc5e710fc52c1c5dbd5671fac Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 17 五月 2024 13:00:16 +0800
Subject: [PATCH] 添加修改订阅功能

---
 util/http.go                |   28 ++++++++++++++
 vo/subscribe.go             |   15 ++++---
 client/notify.go            |   19 +++++++++
 routes/webApi.go            |    2 
 controller/subscribeCtl.go  |   20 ++++++++++
 repository/subscribeRepo.go |   31 +++++++++++++++
 6 files changed, 108 insertions(+), 7 deletions(-)

diff --git a/client/notify.go b/client/notify.go
index ba3ad7e..2b1cd08 100644
--- a/client/notify.go
+++ b/client/notify.go
@@ -53,3 +53,22 @@
 
 	return vo.StatusSuccess
 }
+func UpdateSubscribe(url string, msg []byte) int {
+	rsp, err := util.HttpPut(url, headers, msg)
+	if err != nil {
+		logger.Warn("Put subscribe failed, %s", err.Error())
+		return vo.StatusOtherError
+	}
+
+	var stat vo.ResponseStatusList
+	err = json.Unmarshal(rsp, &stat)
+	if err != nil {
+		logger.Warn("Put subscribe response unmarshal failed, %s", err.Error())
+		logger.Warn("response, %s", string(rsp))
+		return vo.StatusOtherError
+	}
+
+	logger.Debug("Post notification success.")
+
+	return vo.StatusSuccess
+}
diff --git a/controller/subscribeCtl.go b/controller/subscribeCtl.go
index c5241ee..6f2995d 100644
--- a/controller/subscribeCtl.go
+++ b/controller/subscribeCtl.go
@@ -152,3 +152,23 @@
 
 	c.JSON(http.StatusOK, gin.H{"msg": "ok"})
 }
+
+// UpdateSubscribes 鏇存柊涓嬬骇骞冲彴鐨勮闃呮秷鎭�
+func (s SubscribeController) UpdateSubscribes(c *gin.Context) {
+	var req vo.Subscribe
+	if err := c.BindJSON(&req); err != nil {
+		c.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
+		return
+	}
+
+	if c.Param("id") == "" {
+		c.JSON(http.StatusBadRequest, gin.H{"msg": "涓嬬骇id涓虹┖"})
+	}
+
+	if err := s.Repository.UpdateSubscribe(c.Param("id"), &req); err != nil {
+		c.JSON(http.StatusInternalServerError, gin.H{"msg": err.Error()})
+		return
+	}
+
+	c.JSON(http.StatusOK, gin.H{"msg": "ok"})
+}
diff --git a/repository/subscribeRepo.go b/repository/subscribeRepo.go
index f6f505f..ec3bb73 100644
--- a/repository/subscribeRepo.go
+++ b/repository/subscribeRepo.go
@@ -53,6 +53,37 @@
 
 	return err
 }
+func (s *SubscribeRepository) UpdateSubscribe(sid string, req *vo.Subscribe) error {
+	var subscribeMsg vo.RequestSubscribe
+	subscribeMsg.SubscribeListObject.SubscribeObject = []vo.Subscribe{*req}
+
+	// 鏌ユ壘涓嬬骇
+	var platform models.SubPlatform
+	err := platform.FindById(sid)
+	if err != nil {
+		return err
+	}
+
+	uri := fmt.Sprintf("http://%s:%d/VIID/Subscribes", platform.RemoteIP, platform.RemotePort)
+	body, _ := json.Marshal(subscribeMsg)
+	if client.UpdateSubscribe(uri, body) != vo.StatusSuccess {
+		return errors.New("鍙戦�佽闃呮秷鎭け璐�")
+	}
+
+	var sub = models.Subscribe{
+		Id:     req.SubscribeID,
+		Status: req.SubscribeStatus,
+		FromId: sid,
+		Ext:    *req,
+	}
+
+	err = sub.Save()
+	if err != nil {
+		return err
+	}
+
+	return err
+}
 
 func (s *SubscribeRepository) SaveReceiveSubscribe(fromId string, subscribe *vo.Subscribe) error {
 	var sub = models.Subscribe{
diff --git a/routes/webApi.go b/routes/webApi.go
index 200cb9d..9663d31 100644
--- a/routes/webApi.go
+++ b/routes/webApi.go
@@ -11,8 +11,8 @@
 	router := r.Group("/subscribe")
 	{
 		router.POST("/:id", subCtl.CreateSubscribes)
+		router.PUT("/:id", subCtl.UpdateSubscribes)
 		//router.GET("/:id", subCtl.Faces)
-		//router.PUT("/:id", subCtl.Faces)
 		//router.DELETE("/:id", subCtl.Faces)
 	}
 
diff --git a/util/http.go b/util/http.go
index 248aba4..ecd4c99 100644
--- a/util/http.go
+++ b/util/http.go
@@ -55,6 +55,34 @@
 	return body, nil
 }
 
+func HttpPut(url string, header map[string]string, data []byte) ([]byte, error) {
+	req, err := http.NewRequest(http.MethodPut, url, bytes.NewBuffer(data))
+	if err != nil {
+		return nil, err
+	}
+
+	//req.Header.Set("Content-Type", "applicaiton/json; charset=UTF-8")
+	if header != nil {
+		for k, v := range header {
+			req.Header.Set(k, v)
+		}
+	}
+
+	cli := &http.Client{}
+	resp, err := cli.Do(req)
+	if err != nil {
+		return nil, err
+	}
+
+	defer resp.Body.Close()
+	body, err := io.ReadAll(resp.Body)
+	if err != nil {
+		return nil, err
+	}
+
+	return body, nil
+}
+
 func HttpGet(url string) error {
 	_, err := http.Get(url)
 	if err != nil {
diff --git a/vo/subscribe.go b/vo/subscribe.go
index 1f33c1c..dd55e92 100644
--- a/vo/subscribe.go
+++ b/vo/subscribe.go
@@ -18,12 +18,15 @@
 	ReceiveAddr           string `json:"ReceiveAddr" binding:"required"`
 	ReportInterval        int    `json:"ReportInterval" binding:"required"`
 	Reason                string `json:"Reason" binding:"required"`
-	OperateType           int    `json:"OperateType" `          // 0锛氳闃咃紱1锛氬彇娑堣闃�
-	SubscribeStatus       int    `json:"SubscribeStatus" `      // 0锛氳闃呬腑 1锛氬凡鍙栨秷璁㈤槄 2锛氳闃呭埌鏈� 9锛氭湭璁㈤槄
-	SubscribeCancelOrg    string `json:"SubscribeCancelOrg"`    // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
-	SubscribeCancelPerson string `json:"SubscribeCancelPerson"` // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
-	CancelTime            string `json:"CancelTime"`            // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
-	CancelReason          string `json:"CancelReason"`          // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
+	OperateType           int    `json:"OperateType" `                    // 0锛氳闃咃紱1锛氬彇娑堣闃�
+	SubscribeStatus       int    `json:"SubscribeStatus" `                // 0锛氳闃呬腑 1锛氬凡鍙栨秷璁㈤槄 2锛氳闃呭埌鏈� 9锛氭湭璁㈤槄
+	ResourceClass         int    `json:"ResourceClass" `                  //
+	ResultImageDeclare    string `json:"ResultImageDeclare" `             // 瀵瑰簲subImage 鐨� type, -1 涓嶄紶
+	ResultFeatureDeclare  int    `json:"ResultFeatureDeclare" `           //
+	SubscribeCancelOrg    string `json:"SubscribeCancelOrg,omitempty"`    // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
+	SubscribeCancelPerson string `json:"SubscribeCancelPerson,omitempty"` // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
+	CancelTime            string `json:"CancelTime,omitempty"`            // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
+	CancelReason          string `json:"CancelReason,omitempty"`          // 浠呭湪鍙栨秷璁㈤槄鏃朵娇鐢�
 }
 
 func (s *Subscribe) Scan(value interface{}) error {

--
Gitblit v1.8.0