From f0afe45aad0c8280c381b4d9baac2c03a66fc979 Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Tue, 8 Apr 2025 10:20:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9F=AD=E4=BF=A1=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=E5=92=8C=E4=B8=9A=E5=8A=A1=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- const.go | 25 ++++++++++++++++++++----- msg.go | 23 +++++++++++++++++------ paramset.go | 6 +++--- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/const.go b/const.go index c114602..5435bf9 100644 --- a/const.go +++ b/const.go @@ -13,10 +13,25 @@ const ( DDDateField = "DDDateField" ) +type RequestPath string + const ( - accessToken = "/oauth/v1/accesstoken" - oaCreat = "/msg/v1/dingtalk/oa/create" - oaGet = "/msg/v1/dingtalk/oa/get" - oaComment = "/msg/v1/dingtalk/oa/comment" - sendSms = "/msg/v1/sms/send" + accessToken RequestPath = "/oauth/v1/accesstoken" + oaCreat RequestPath = "/msg/v1/dingtalk/oa/create" + oaGet RequestPath = "/msg/v1/dingtalk/oa/get" + oaComment RequestPath = "/msg/v1/dingtalk/oa/comment" + 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, +} diff --git a/msg.go b/msg.go index 9280842..9f7c08b 100644 --- a/msg.go +++ b/msg.go @@ -2,6 +2,7 @@ package l_msg_api import ( "encoding/json" + "errors" ) type MessageCenter struct { @@ -31,7 +32,7 @@ func NewMessageCenter(host, clientKey, clientSecret, serverIndex, tempIndex stri // OACreate 发起OA审批 func (m *MessageCenter) OACreate(dTalkUserId, treadNo string, formModel *FormsData) (data OAResponse, err error) { - formModel.FormBase = FormBase{ + formModel.formBase = formBase{ OutTradeNo: treadNo, OriginatorUserId: dTalkUserId, } @@ -56,18 +57,28 @@ func (m *MessageCenter) OAGetDetail(outTradeNo string) (data OAGetDetailData, er } // SendSms 短信 -func (m *MessageCenter) SendSms(tels []string, jsonParam string) (data SmsSend, err error) { +// business SmsBusiness +func (m *MessageCenter) SendSms(tels []string, jsonParam string, business SmsBusiness) (data SmsSend, err error) { + var ( + path RequestPath + ex bool + ) + if len(tels) == 0 { + err = errors.New("手机号不能为空") + return + } + if path, ex = smsBusinessWithRequestPath[business]; !ex { + err = errors.New("未知的供应商") + return + } param := m.parseSmsSendParam(tels, jsonParam) - err = m.post(sendSms, param, &data) + err = m.post(path, param, &data) if err != nil { return } return } -// BlackboardReceiverView struct { - -// } // SendBlackBoard 钉钉公告 // deptidList //接收部门ID列表,最大的列表长度为20。 // UseridList //接收部用户ID列表,最大的列表长度为20。 diff --git a/paramset.go b/paramset.go index ba11947..5a86993 100644 --- a/paramset.go +++ b/paramset.go @@ -14,7 +14,7 @@ func (m *MessageCenter) parseOACreateParam(formModel *FormsData) (out []byte) { } req.FormComponentValues = formModel.FormComponentValues req.Finance = formModel.Finance - req.FormBase = formModel.FormBase + req.formBase = formModel.formBase out, _ = json.Marshal(req) return } @@ -53,7 +53,7 @@ func (m *MessageCenter) getAccessToken() (string, error) { 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 res, err := httpclient.FastHttpPost(fmt.Sprintf("%s%s", m.Host, path), m.header, data, timeOut) if err != nil { @@ -77,7 +77,7 @@ func (m *MessageCenter) post(path string, data []byte, resReflect interface{}) ( 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 res, err := httpclient.FastHttpPost(fmt.Sprintf("%s%s", m.Host, path), m.header, data, timeOut) if err != nil {