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