From 9e8d8b630affc4a4be428c775264ef4b0e5104b3 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 17 五月 2024 15:25:45 +0800
Subject: [PATCH] 添加取消订阅接口
---
vo/subscribe.go | 4 ++
routes/webApi.go | 1
controller/subscribeCtl.go | 26 +++++++++++-
repository/subscribeRepo.go | 37 ++++++++++++++++++
4 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/controller/subscribeCtl.go b/controller/subscribeCtl.go
index 6f2995d..2cceebc 100644
--- a/controller/subscribeCtl.go
+++ b/controller/subscribeCtl.go
@@ -1,13 +1,14 @@
package controller
import (
+ "net/http"
+ "strings"
+ "time"
+
"gat1400Exchange/config"
"gat1400Exchange/pkg/logger"
"gat1400Exchange/repository"
"gat1400Exchange/vo"
- "net/http"
- "strings"
- "time"
"github.com/gin-gonic/gin"
)
@@ -172,3 +173,22 @@
c.JSON(http.StatusOK, gin.H{"msg": "ok"})
}
+
+func (s SubscribeController) CancelSubscribes(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.CancelSubscribe(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 ec3bb73..c924b80 100644
--- a/repository/subscribeRepo.go
+++ b/repository/subscribeRepo.go
@@ -53,6 +53,43 @@
return err
}
+
+func (s *SubscribeRepository) CancelSubscribe(sid string, req *vo.Subscribe) error {
+ var subscribeMsg vo.RequestCancelSubscribe
+ subscribeMsg.SubscribeObject = *req
+
+ if req.SubscribeID == "" {
+ return errors.New("璁㈤槄娑堟伅涓婚涓虹┖")
+ }
+
+ // 鏌ユ壘涓嬬骇
+ var platform models.SubPlatform
+ err := platform.FindById(sid)
+ if err != nil {
+ return err
+ }
+
+ uri := fmt.Sprintf("http://%s:%d/VIID/Subscribes/%s", platform.RemoteIP, platform.RemotePort, req.SubscribeID)
+ 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) UpdateSubscribe(sid string, req *vo.Subscribe) error {
var subscribeMsg vo.RequestSubscribe
subscribeMsg.SubscribeListObject.SubscribeObject = []vo.Subscribe{*req}
diff --git a/routes/webApi.go b/routes/webApi.go
index 9663d31..ccd4d3b 100644
--- a/routes/webApi.go
+++ b/routes/webApi.go
@@ -12,6 +12,7 @@
{
router.POST("/:id", subCtl.CreateSubscribes)
router.PUT("/:id", subCtl.UpdateSubscribes)
+ router.PUT("/cancel/:id", subCtl.UpdateSubscribes)
//router.GET("/:id", subCtl.Faces)
//router.DELETE("/:id", subCtl.Faces)
}
diff --git a/vo/subscribe.go b/vo/subscribe.go
index dd55e92..322dfe7 100644
--- a/vo/subscribe.go
+++ b/vo/subscribe.go
@@ -53,6 +53,10 @@
} `json:"SubscribeListObject"`
}
+type RequestCancelSubscribe struct {
+ SubscribeObject Subscribe `json:"SubscribeObject"`
+}
+
type RequestSubscribeNotification struct {
SubscribeNotificationListObject struct {
SubscribeNotificationObject []interface{} `json:"SubscribeNotificationObject"`
--
Gitblit v1.8.0