package message import ( "bytes" "encoding/json" "fmt" "gitea.codecodify.com/golang/tool/helper" "log" ) // Message 定义消息范型, 统一发送消息入口, 为了类型安全, 需要实现Req接口 type Message[T Req] struct{} const title = "【企业微信消息通知】" // Send 发送消息 func (m *Message[T]) Send(body T, token string) (Resp, error) { log.Printf("%s token: %v\n", title, token) log.Printf("%s send message: %v\n", title, body) url := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s", token) b, err := json.Marshal(body) if err != nil { log.Printf("%s 消息体转换json失败: %v\n", title, err) return Resp{}, err } if b, err := helper.SendHttpRequest(url, "POST", bytes.NewReader(b), nil); err != nil { return Resp{}, err } else { var resp Resp if err := json.Unmarshal(b, &resp); err != nil { log.Printf("%s 响应体转换json失败: %v\n", title, err) return Resp{}, err } return resp, nil } }