feat: save messages to database (close #37)
This commit is contained in:
+1
-1
@@ -13,7 +13,7 @@ type barkMessageResponse struct {
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
func SendBarkMessage(message *Message, user *model.User) error {
|
||||
func SendBarkMessage(message *model.Message, user *model.User) error {
|
||||
if user.BarkServer == "" || user.BarkSecret == "" {
|
||||
return errors.New("未配置 Bark 消息推送方式")
|
||||
}
|
||||
|
||||
+6
-6
@@ -19,7 +19,7 @@ const (
|
||||
type webSocketClient struct {
|
||||
userId int
|
||||
conn *websocket.Conn
|
||||
message chan *Message
|
||||
message chan *model.Message
|
||||
pong chan bool
|
||||
stop chan bool
|
||||
timestamp int64
|
||||
@@ -98,7 +98,7 @@ func (c *webSocketClient) handleDataWriting() {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *webSocketClient) sendMessage(message *Message) {
|
||||
func (c *webSocketClient) sendMessage(message *model.Message) {
|
||||
c.message <- message
|
||||
}
|
||||
|
||||
@@ -122,21 +122,21 @@ func RegisterClient(userId int, conn *websocket.Conn) {
|
||||
oldClient, existed := clientMap[userId]
|
||||
clientConnMapMutex.Unlock()
|
||||
if existed {
|
||||
byeMessage := &Message{
|
||||
byeMessage := &model.Message{
|
||||
Title: common.SystemName,
|
||||
Description: "其他客户端已连接服务器,本客户端已被挤下线!",
|
||||
}
|
||||
oldClient.sendMessage(byeMessage)
|
||||
oldClient.close()
|
||||
}
|
||||
helloMessage := &Message{
|
||||
helloMessage := &model.Message{
|
||||
Title: common.SystemName,
|
||||
Description: "客户端连接成功!",
|
||||
}
|
||||
newClient := &webSocketClient{
|
||||
userId: userId,
|
||||
conn: conn,
|
||||
message: make(chan *Message),
|
||||
message: make(chan *model.Message),
|
||||
pong: make(chan bool),
|
||||
stop: make(chan bool),
|
||||
timestamp: time.Now().UnixMilli(),
|
||||
@@ -149,7 +149,7 @@ func RegisterClient(userId int, conn *websocket.Conn) {
|
||||
clientConnMapMutex.Unlock()
|
||||
}
|
||||
|
||||
func SendClientMessage(message *Message, user *model.User) error {
|
||||
func SendClientMessage(message *model.Message, user *model.User) error {
|
||||
if user.ClientSecret == "" {
|
||||
return errors.New("未配置 WebSocket 客户端消息推送方式")
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ type corpMessageResponse struct {
|
||||
Message string `json:"errmsg"`
|
||||
}
|
||||
|
||||
func SendCorpMessage(message *Message, user *model.User) error {
|
||||
func SendCorpMessage(message *model.Message, user *model.User) error {
|
||||
if user.CorpWebhookURL == "" {
|
||||
return errors.New("未配置企业微信群机器人消息推送方式")
|
||||
}
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ type dingMessageResponse struct {
|
||||
Message string `json:"errmsg"`
|
||||
}
|
||||
|
||||
func SendDingMessage(message *Message, user *model.User) error {
|
||||
func SendDingMessage(message *model.Message, user *model.User) error {
|
||||
if user.DingWebhookURL == "" {
|
||||
return errors.New("未配置钉钉群机器人消息推送方式")
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import (
|
||||
"message-pusher/model"
|
||||
)
|
||||
|
||||
func SendEmailMessage(message *Message, user *model.User) error {
|
||||
func SendEmailMessage(message *model.Message, user *model.User) error {
|
||||
if user.Email == "" {
|
||||
return errors.New("未配置邮箱地址")
|
||||
}
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ type larkMessageResponse struct {
|
||||
Message string `json:"msg"`
|
||||
}
|
||||
|
||||
func SendLarkMessage(message *Message, user *model.User) error {
|
||||
func SendLarkMessage(message *model.Message, user *model.User) error {
|
||||
if user.LarkWebhookURL == "" {
|
||||
return errors.New("未配置飞书群机器人消息推送方式")
|
||||
}
|
||||
|
||||
+4
-12
@@ -15,20 +15,10 @@ const (
|
||||
TypeTelegram = "telegram"
|
||||
TypeBark = "bark"
|
||||
TypeClient = "client"
|
||||
TypeNone = "none"
|
||||
)
|
||||
|
||||
type Message struct {
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
Desp string `json:"desp"` // alias for description
|
||||
Content string `json:"content"`
|
||||
URL string `json:"url"`
|
||||
Channel string `json:"channel"`
|
||||
Token string `json:"token"`
|
||||
HTMLContent string `json:"html_content"`
|
||||
}
|
||||
|
||||
func (message *Message) Send(user *model.User) error {
|
||||
func SendMessage(message *model.Message, user *model.User) error {
|
||||
switch message.Channel {
|
||||
case TypeEmail:
|
||||
return SendEmailMessage(message, user)
|
||||
@@ -48,6 +38,8 @@ func (message *Message) Send(user *model.User) error {
|
||||
return SendClientMessage(message, user)
|
||||
case TypeTelegram:
|
||||
return SendTelegramMessage(message, user)
|
||||
case TypeNone:
|
||||
return nil
|
||||
default:
|
||||
return errors.New("不支持的消息通道:" + message.Channel)
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ type telegramMessageResponse struct {
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
func SendTelegramMessage(message *Message, user *model.User) error {
|
||||
func SendTelegramMessage(message *model.Message, user *model.User) error {
|
||||
if user.TelegramBotToken == "" || user.TelegramChatId == "" {
|
||||
return errors.New("未配置 Telegram 机器人消息推送方式")
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ type wechatCorpMessageResponse struct {
|
||||
ErrorMessage string `json:"errmsg"`
|
||||
}
|
||||
|
||||
func SendWeChatCorpMessage(message *Message, user *model.User) error {
|
||||
func SendWeChatCorpMessage(message *model.Message, user *model.User) error {
|
||||
if user.WeChatCorpAccountId == "" {
|
||||
return errors.New("未配置微信企业号消息推送方式")
|
||||
}
|
||||
@@ -119,8 +119,7 @@ func SendWeChatCorpMessage(message *Message, user *model.User) error {
|
||||
messageRequest.MessageType = "textcard"
|
||||
messageRequest.TextCard.Title = message.Title
|
||||
messageRequest.TextCard.Description = message.Description
|
||||
// TODO: render content and set URL
|
||||
messageRequest.TextCard.URL = common.ServerAddress
|
||||
messageRequest.TextCard.URL = message.URL
|
||||
} else {
|
||||
messageRequest.MessageType = "markdown"
|
||||
messageRequest.Markdown.Content = message.Content
|
||||
|
||||
@@ -88,7 +88,7 @@ type wechatTestMessageResponse struct {
|
||||
ErrorMessage string `json:"errmsg"`
|
||||
}
|
||||
|
||||
func SendWeChatTestMessage(message *Message, user *model.User) error {
|
||||
func SendWeChatTestMessage(message *model.Message, user *model.User) error {
|
||||
if user.WeChatTestAccountId == "" {
|
||||
return errors.New("未配置微信测试号消息推送方式")
|
||||
}
|
||||
@@ -97,8 +97,8 @@ func SendWeChatTestMessage(message *Message, user *model.User) error {
|
||||
TemplateId: user.WeChatTestAccountTemplateId,
|
||||
URL: "",
|
||||
}
|
||||
// TODO: render content and set URL
|
||||
values.Data.Text.Value = message.Description
|
||||
values.URL = message.URL
|
||||
jsonData, err := json.Marshal(values)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user