更新库pkg

This commit is contained in:
ayflying
2025-03-14 14:26:07 +08:00
parent 4963780a32
commit 5fbe4d5dcf
18 changed files with 443 additions and 12 deletions

View File

@@ -0,0 +1,43 @@
package drive
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/gtime"
)
type DingTalkMod struct {
DingTalkWebHook string
}
func DingTalkLoad(webHook string) *DingTalkMod {
return &DingTalkMod{
DingTalkWebHook: webHook,
}
}
func (m DingTalkMod) Send(value string) {
ctx := gctx.New()
// 从配置中获取发送者名称
name, _ := g.Cfg().Get(ctx, "name")
// 定义钉钉机器人发送消息的URL其中access_token为固定值
url := m.DingTalkWebHook
url += "&timestamp=" + gtime.Now().TimestampMilliStr()
// 使用goroutine异步发送消息
var post = g.Map{
"msgtype": "text",
"text": g.Map{
"content": "通知姬 " + name.String() + "\n" + value + "\n" + gtime.Now().String(),
},
}
// 构建发送的消息体,包含消息类型和内容
_, err := g.Client().Discovery(nil).ContentJson().Post(ctx, url, post)
if err != nil {
g.Log().Info(ctx, err)
}
return
}

51
pkg/notice/drive/email.go Normal file
View File

@@ -0,0 +1,51 @@
package drive
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"gopkg.in/gomail.v2"
)
type MailMod struct {
Host string `json:"host" dc:"邮件服务器地址"`
Port int `json:"port" dc:"邮件服务器端口"`
User string `json:"user" dc:"邮件服务器用户名"`
Pass string `json:"pass" dc:"邮件服务器密码"`
From string `json:"from" dc:"邮件发送者"`
To string `json:"to" dc:"邮件接收者"`
Subject string `json:"subject" dc:"邮件主题"`
}
func MailLoad(Host string, port int, to string, subject string) *MailMod {
return &MailMod{
Host: Host,
Port: port,
User: "root",
Pass: "root",
From: "root",
To: to,
Subject: subject,
}
}
func (m MailMod) Send(value string) {
// 创建一个新的消息
obj := gomail.NewMessage()
// 设置发件人
obj.SetHeader("From", m.From)
// 设置收件人
obj.SetHeader("To", m.To)
// 设置邮件主题
obj.SetHeader("Subject", m.Subject)
// 设置邮件正文
obj.SetBody("text/plain", value)
// 创建 SMTP 拨号器,这里需要提供 SMTP 服务器地址、端口、发件人邮箱和密码
d := gomail.NewDialer(m.Host, m.Port, m.User, m.Pass)
// 发送邮件
if err := d.DialAndSend(obj); err != nil {
g.Log().Error(gctx.New(), err)
}
return
}

20
pkg/notice/notice.go Normal file
View File

@@ -0,0 +1,20 @@
package notice
import (
v1 "github.com/ayflying/utility_go/api/pgk/v1"
"github.com/ayflying/utility_go/pkg/notice/drive"
)
type MessageV1 interface {
Send(value string)
}
func New(typ v1.NoticeType, host string, value ...interface{}) MessageV1 {
switch typ {
case v1.NoticeType_DINGTALK:
return drive.DingTalkLoad(host)
case v1.NoticeType_EMAIL:
return drive.MailLoad(host, value[0].(int), value[1].(string), value[2].(string))
}
return nil
}