zhangzengfei
2024-05-17 9ee887fce2f87f7a79d0b94640cf1d341a254319
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package repository
 
import (
    "encoding/json"
    "errors"
    "fmt"
    "gat1400Exchange/client"
    "gat1400Exchange/models"
    "gat1400Exchange/pkg/snowflake"
    "gat1400Exchange/service"
    "gat1400Exchange/vo"
    "time"
)
 
type SubscribeRepository struct {
}
 
func NewSubscribeRepository() SubscribeRepository {
    return SubscribeRepository{}
}
 
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) SaveReceiveSubscribe(fromId string, subscribe *vo.Subscribe) error {
    var sub = models.Subscribe{
        Id:     subscribe.SubscribeID,
        Status: subscribe.SubscribeStatus,
        FromId: fromId,
        Ext:    *subscribe,
    }
 
    err := sub.Save()
    if err != nil {
        return err
    }
 
    service.UpdateTaskProcs(sub.Id, vo.Msg_Type_Create_Subscribe, &sub)
 
    return err
}
 
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.UpdateTaskProcs(subscribe.SubscribeID, vo.Msg_Type_Update_Subscribe, nil)
 
    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)
 
    return err
}
 
func (s *SubscribeRepository) ListByFromId(id string) ([]models.Subscribe, error) {
    var sub models.Subscribe
 
    return sub.FindByFromId(id)
}