From bb48a3ef0bdc2b5a0b50ca429bc5bc0a118f9732 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 13 九月 2024 02:49:22 +0800 Subject: [PATCH] use goroutinne run rfid read --- repository/subscribeRepo.go | 151 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 147 insertions(+), 4 deletions(-) diff --git a/repository/subscribeRepo.go b/repository/subscribeRepo.go index f5101b6..5f3d256 100644 --- a/repository/subscribeRepo.go +++ b/repository/subscribeRepo.go @@ -1,9 +1,15 @@ package repository import ( + "encoding/json" + "errors" + "fmt" + "gat1400Exchange/client" "gat1400Exchange/models" + "gat1400Exchange/pkg/snowflake" "gat1400Exchange/service" "gat1400Exchange/vo" + "time" ) type SubscribeRepository struct { @@ -13,7 +19,123 @@ return SubscribeRepository{} } -func (a *SubscribeRepository) CreateSubscribe(fromId string, subscribe *vo.Subscribe) error { +func (s *SubscribeRepository) CreateSubscribe(sid string, req *vo.Subscribe) error { + triggerTime := time.Now().Format("20060102150405") + req.SubscribeID = triggerTime + snowflake.GenerateIdStr() + + 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.Subscribe(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) 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} + + // 鏌ユ壘涓嬬骇 + 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) RemoteList(sid string) ([]byte, error) { + // 鏌ユ壘涓嬬骇 + var platform models.SubPlatform + err := platform.FindById(sid) + if err != nil { + return nil, err + } + + uri := fmt.Sprintf("http://%s:%d/VIID/Subscribes", platform.RemoteIP, platform.RemotePort) + + return client.GetSubscribes(uri) +} + +func (s *SubscribeRepository) SaveReceiveSubscribe(fromId string, subscribe *vo.Subscribe) error { var sub = models.Subscribe{ Id: subscribe.SubscribeID, Status: subscribe.SubscribeStatus, @@ -26,19 +148,40 @@ return err } - service.UpdateTaskProcs(sub.Id, vo.Msg_Type_Create_Subscribe, &sub) + service.UpdateNotificationTask(sub.Id, vo.Msg_Type_Create_Subscribe, &sub) return err } -func (a *SubscribeRepository) DeleteSubscribe(id string) error { +func (s *SubscribeRepository) UpdateReceiveSubscribe(subscribe *vo.Subscribe) error { + var sub = models.Subscribe{} + err := sub.FindById(subscribe.SubscribeID) + if err != nil { + return err + } + + sub.Status = subscribe.SubscribeStatus + sub.Ext = *subscribe + + service.UpdateNotificationTask(subscribe.SubscribeID, vo.Msg_Type_Update_Subscribe, &sub) + + return sub.Save() +} + +func (s *SubscribeRepository) DeleteReceiveSubscribe(id string) error { var sub = models.Subscribe{} err := sub.DeleteById(id) if err != nil { return err } - service.UpdateTaskProcs(id, vo.Msg_Type_Delete_Subscribe, nil) + service.UpdateNotificationTask(id, vo.Msg_Type_Delete_Subscribe, nil) return err } + +func (s *SubscribeRepository) ListByFromId(id string) ([]models.Subscribe, error) { + var sub models.Subscribe + + return sub.FindByFromId(id) +} -- Gitblit v1.8.0