l_msg_api/msg.go

129 lines
3.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package l_msg_api
import (
"context"
"encoding/json"
"errors"
)
type MessageCenter struct {
Host string // 消息中心地址
ClientKey string // 客户端id,获取授权token需要
ClientSecret string
header map[string]string
option *mesOptionData
base
}
func NewMessageCenter(host, clientKey, clientSecret, serverIndex, tempIndex string, args ...MesOption) (*MessageCenter, error) {
msg := &MessageCenter{
Host: host,
ClientKey: clientKey,
ClientSecret: clientSecret,
base: base{
ServerIndex: serverIndex,
TempIndex: tempIndex,
},
option: new(mesOptionData),
}
err := msg.setHeader()
if err != nil {
return nil, err
}
for _, arg := range args {
arg(msg.option)
}
return msg, err
}
// OACreate 发起OA审批
func (m *MessageCenter) OACreate(ctx context.Context, dTalkUserId, treadNo string, formModel *FormsData) (data OAResponse, err error) {
formModel.formBase = formBase{
OutTradeNo: treadNo,
OriginatorUserId: dTalkUserId,
}
err = m.send(ctx, oaCreat, m.parseOACreateParam(formModel), &data)
if err != nil {
return
}
return
}
// OAGetDetail OA详情
func (m *MessageCenter) OAGetDetail(ctx context.Context, outTradeNo string) (data OAGetDetailData, err error) {
param, _ := json.Marshal(oAGetDetailRequest{
Base: m.base,
OutTradeNo: outTradeNo,
})
err = m.send(ctx, oaGet, param, &data)
if err != nil {
return
}
return
}
// SendSms 短信
// business SmsBusiness
func (m *MessageCenter) SendSms(ctx context.Context, tels []string, jsonParam string, args ...SmsOption) (data SmsSend, err error) {
var (
e = new(smsOptionData)
)
if len(tels) == 0 {
err = errors.New("手机号不能为空")
return
}
for _, arg := range args {
arg(e)
}
if e.Business != "" {
if _, ex := smsBusinessWithRequestPath[e.Business]; !ex {
err = errors.New("business参数错误")
return
}
} else {
e.Business = SmsBusinessDefault
}
path := smsBusinessWithRequestPath[e.Business]
param := m.parseSmsSendParam(tels, jsonParam)
err = m.send(ctx, path, param, &data)
if err != nil {
return
}
return
}
// SendBlackBoard 钉钉公告
// deptidList //接收部门ID列表最大的列表长度为20。
// UseridList //接收部用户ID列表最大的列表长度为20。
func (m *MessageCenter) SendBlackBoard(ctx context.Context, title, content string, deptidList []int, useridList []string) (data Default, err error) {
receiver := blackboardReceiverView{
deptidList, useridList,
}
err = m.send(ctx, sendSms, m.parseSendBlackBoardParam(title, content, receiver), &data)
if err != nil {
return
}
return
}
// OAComment OA评论,CommentUserId为空则默认审核发起人评论
func (m *MessageCenter) OAComment(ctx context.Context, outTradeNo, text, commentUserId string, file *DingOACommentReqFile) (data OAResponse, err error) {
req := &oACommentRequest{
Base: m.base,
OutTradeNo: outTradeNo,
Text: text,
CommentUserId: commentUserId,
}
if file != nil {
req.File = *file
}
param, _ := json.Marshal(req)
err = m.send(ctx, oaComment, param, &data)
if err != nil {
return
}
return
}