如何在go语言中向企业微信对不同员工发送对应数据库消息
时间: 2024-04-17 12:23:30 浏览: 72
要在 Go 语言中向企业微信对不同员工发送对应数据库消息,你需要先连接到数据库并获取相应的数据,然后使用企业微信的应用消息接口发送消息。
以下是一个简单的示例代码,演示如何从数据库中获取员工信息,并向每个员工发送对应的消息:
```go
package main
import (
"database/sql"
"encoding/json"
"fmt"
_ "github.com/go-sql-driver/mysql"
"net/http"
"strings"
)
type Employee struct {
UserID string `json:"userid"`
Name string `json:"name"`
}
type WeChatMessage struct {
ToUser string `json:"touser"`
MsgType string `json:"msgtype"`
AgentID int `json:"agentid"`
Text struct {
Content string `json:"content"`
} `json:"text"`
}
func main() {
db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/database")
if err != nil {
fmt.Println("Failed to connect to the database:", err)
return
}
defer db.Close()
rows, err := db.Query("SELECT userid, name FROM employees")
if err != nil {
fmt.Println("Failed to query employees:", err)
return
}
defer rows.Close()
apiURL := "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=YOUR_ACCESS_TOKEN"
for rows.Next() {
var employee Employee
err := rows.Scan(&employee.UserID, &employee.Name)
if err != nil {
fmt.Println("Failed to scan employee:", err)
continue
}
message := WeChatMessage{
ToUser: employee.UserID,
MsgType: "text",
AgentID: 1000001,
Text: struct {
Content string `json:"content"`
}{
Content: fmt.Sprintf("Hello, %s! This is a message from the company.", employee.Name),
},
}
messageData, err := json.Marshal(message)
if err != nil {
fmt.Println("JSON marshal error:", err)
continue
}
resp, err := http.Post(apiURL, "application/json", strings.NewReader(string(messageData)))
if err != nil {
fmt.Println("HTTP request error:", err)
continue
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
fmt.Println("API request failed:", resp.Status)
continue
}
fmt.Printf("Message sent to %s successfully!\n", employee.Name)
}
}
```
在上述示例代码中,你需要将以下部分进行替换:
- `username:password@tcp(hostname:port)/database`:替换为你的数据库连接信息,包括用户名、密码、主机名、端口和数据库名。
- `YOUR_ACCESS_TOKEN`:替换为你的企业微信应用的访问令牌。
- `SELECT userid, name FROM employees`:替换为从数据库中选择员工信息的 SQL 查询语句,确保查询结果包含员工的 UserID 和 Name 字段。
此示例假设你已经安装了 Go 的 MySQL 驱动程序(`github.com/go-sql-driver/mysql`),如果没有安装,可以使用以下命令进行安装:`go get -u github.com/go-sql-driver/mysql`。
请根据实际情况对示例代码进行适当的修改和调整,以满足你的具体需求。
阅读全文