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