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