Compare commits

..

3 Commits
v1.9.0 ... v1

3 changed files with 64 additions and 16 deletions

View File

@ -13,10 +13,39 @@ const (
DDDateField = "DDDateField" DDDateField = "DDDateField"
) )
type RequestPath string
const ( const (
accessToken = "/oauth/v1/accesstoken" accessToken RequestPath = "/oauth/v1/accesstoken"
oaCreat = "/msg/v1/dingtalk/oa/create" oaCreat RequestPath = "/msg/v1/dingtalk/oa/create"
oaGet = "/msg/v1/dingtalk/oa/get" oaGet RequestPath = "/msg/v1/dingtalk/oa/get"
oaComment = "/msg/v1/dingtalk/oa/comment" oaComment RequestPath = "/msg/v1/dingtalk/oa/comment"
sendSms = "/msg/v1/sms/send" sendSms RequestPath = "/msg/v1/sms/send"
sendSmsHs RequestPath = "/msg/v1/sms/send/hs"
) )
type SmsBusiness string
const (
SmsBusinessHs SmsBusiness = "hs"
SmsBusinessDefault SmsBusiness = "aliyun"
)
var smsBusinessWithRequestPath = map[SmsBusiness]RequestPath{
SmsBusinessHs: sendSmsHs,
SmsBusinessDefault: sendSms,
}
type (
SmsOption func(*SmsOptionData)
SmsOptionData struct {
Business SmsBusiness
}
)
func WithBusiness(business SmsBusiness) SmsOption {
return func(OptionData *SmsOptionData) {
OptionData.Business = business
}
}

35
msg.go
View File

@ -2,6 +2,7 @@ package l_msg_api
import ( import (
"encoding/json" "encoding/json"
"errors"
) )
type MessageCenter struct { type MessageCenter struct {
@ -23,15 +24,15 @@ func NewMessageCenter(host, clientKey, clientSecret, serverIndex, tempIndex stri
}, },
} }
msg.header = map[string]string{"content-type": "application/json; charset=utf-8"} msg.header = map[string]string{"content-type": "application/json; charset=utf-8"}
accessToken, err := msg.getAccessToken() token, err := msg.getAccessToken()
msg.header = map[string]string{"Authorization": accessToken, "content-type": "application/json; charset=utf-8"} msg.header = map[string]string{"Authorization": token, "content-type": "application/json; charset=utf-8"}
return msg, err return msg, err
} }
// OACreate 发起OA审批 // OACreate 发起OA审批
func (m *MessageCenter) OACreate(dTalkUserId, treadNo string, formModel *FormsData) (data OAResponse, err error) { func (m *MessageCenter) OACreate(dTalkUserId, treadNo string, formModel *FormsData) (data OAResponse, err error) {
formModel.FormBase = FormBase{ formModel.formBase = formBase{
OutTradeNo: treadNo, OutTradeNo: treadNo,
OriginatorUserId: dTalkUserId, OriginatorUserId: dTalkUserId,
} }
@ -56,18 +57,36 @@ func (m *MessageCenter) OAGetDetail(outTradeNo string) (data OAGetDetailData, er
} }
// SendSms 短信 // SendSms 短信
func (m *MessageCenter) SendSms(tels []string, jsonParam string) (data SmsSend, err error) { // business SmsBusiness
func (m *MessageCenter) SendSms(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) param := m.parseSmsSendParam(tels, jsonParam)
err = m.post(sendSms, param, &data) err = m.post(path, param, &data)
if err != nil { if err != nil {
return return
} }
return return
} }
// BlackboardReceiverView struct {
// }
// SendBlackBoard 钉钉公告 // SendBlackBoard 钉钉公告
// deptidList //接收部门ID列表最大的列表长度为20。 // deptidList //接收部门ID列表最大的列表长度为20。
// UseridList //接收部用户ID列表最大的列表长度为20。 // UseridList //接收部用户ID列表最大的列表长度为20。

View File

@ -14,7 +14,7 @@ func (m *MessageCenter) parseOACreateParam(formModel *FormsData) (out []byte) {
} }
req.FormComponentValues = formModel.FormComponentValues req.FormComponentValues = formModel.FormComponentValues
req.Finance = formModel.Finance req.Finance = formModel.Finance
req.FormBase = formModel.FormBase req.formBase = formModel.formBase
out, _ = json.Marshal(req) out, _ = json.Marshal(req)
return return
} }
@ -53,7 +53,7 @@ func (m *MessageCenter) getAccessToken() (string, error) {
return data.AccessToken, err return data.AccessToken, err
} }
func (m *MessageCenter) post(path string, data []byte, resReflect interface{}) (err error) { func (m *MessageCenter) post(path RequestPath, data []byte, resReflect interface{}) (err error) {
var body responseBody var body responseBody
res, err := httpclient.FastHttpPost(fmt.Sprintf("%s%s", m.Host, path), m.header, data, timeOut) res, err := httpclient.FastHttpPost(fmt.Sprintf("%s%s", m.Host, path), m.header, data, timeOut)
if err != nil { if err != nil {
@ -77,7 +77,7 @@ func (m *MessageCenter) post(path string, data []byte, resReflect interface{}) (
return return
} }
func (m *MessageCenter) accessPost(path string, data []byte, resReflect interface{}) (err error) { func (m *MessageCenter) accessPost(path RequestPath, data []byte, resReflect interface{}) (err error) {
var body responseBody var body responseBody
res, err := httpclient.FastHttpPost(fmt.Sprintf("%s%s", m.Host, path), m.header, data, timeOut) res, err := httpclient.FastHttpPost(fmt.Sprintf("%s%s", m.Host, path), m.header, data, timeOut)
if err != nil { if err != nil {