feat:完善信息
This commit is contained in:
92
app/common/platform/sms.go
Normal file
92
app/common/platform/sms.go
Normal file
@ -0,0 +1,92 @@
|
||||
package platform
|
||||
|
||||
import (
|
||||
"SciencesServer/utils"
|
||||
"errors"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 短信API
|
||||
|
||||
type Sms struct{}
|
||||
|
||||
type SmsParam struct {
|
||||
Mobile []string `json:"mobile"`
|
||||
Content string `json:"content"`
|
||||
}
|
||||
|
||||
type SmsSendMode int
|
||||
|
||||
const (
|
||||
// SmsSendModeForAlone 常规单独发送
|
||||
SmsSendModeForAlone SmsSendMode = iota + 1
|
||||
// SmsSendModeForGroup 常规群发
|
||||
SmsSendModeForGroup
|
||||
// SmsSendModeForVariable 变量发送
|
||||
SmsSendModeForVariable
|
||||
)
|
||||
|
||||
const (
|
||||
smsSendURLForAlone string = "http://122.144.203.27:8001/mt.ashx"
|
||||
smsSendURLForGroup string = "http://122.144.203.27:8001/mts.ashx"
|
||||
smsSendURLForVariable string = "http://122.144.203.27:8001/mts_var_json.ashx"
|
||||
)
|
||||
|
||||
const (
|
||||
keyForAccount string = "113934"
|
||||
keyForPassword string = "zytDuehC"
|
||||
)
|
||||
|
||||
type SmsSend func(mode SmsSendMode, params *SmsParam) error
|
||||
|
||||
var smsSendModeHandle = map[SmsSendMode]func(params *SmsParam) (string, utils.Method, map[string]interface{}){
|
||||
SmsSendModeForAlone: alone,
|
||||
SmsSendModeForGroup: group,
|
||||
}
|
||||
|
||||
func alone(params *SmsParam) (string, utils.Method, map[string]interface{}) {
|
||||
return smsSendURLForAlone, utils.MethodForGet, map[string]interface{}{
|
||||
"msg": params.Content, "pn": params.Mobile[0],
|
||||
}
|
||||
}
|
||||
|
||||
func group(params *SmsParam) (string, utils.Method, map[string]interface{}) {
|
||||
return smsSendURLForGroup, utils.MethodForPost, map[string]interface{}{
|
||||
"msg": params.Content, "pn": strings.Join(params.Mobile, ","),
|
||||
}
|
||||
}
|
||||
|
||||
func (this *Sms) Send() SmsSend {
|
||||
return func(mode SmsSendMode, params *SmsParam) error {
|
||||
now := time.Now().Format("20060102150405")
|
||||
|
||||
_params := map[string]interface{}{
|
||||
"account": keyForAccount,
|
||||
"pswd": strings.ToUpper(utils.Md5String(keyForAccount + keyForPassword + now)),
|
||||
"ts": now,
|
||||
}
|
||||
handle, has := smsSendModeHandle[mode]
|
||||
|
||||
if !has {
|
||||
return errors.New("未知的短信模式")
|
||||
}
|
||||
url, method, parameter := handle(params)
|
||||
|
||||
if len(parameter) > 0 {
|
||||
for k, v := range parameter {
|
||||
_params[k] = v
|
||||
}
|
||||
}
|
||||
client := utils.NewClient(url, method, _params)
|
||||
|
||||
_, err := client.Request(utils.RequestBodyFormatForFormData, utils.Headers{
|
||||
ContentType: utils.RequestContentTypeForXWWWFormUrlencoded,
|
||||
})
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
func NewSms() *Sms {
|
||||
return &Sms{}
|
||||
}
|
Reference in New Issue
Block a user