MessageInput结构
type MessageInput struct {
Mobile string
Content string
}
封装函数
func (s *sMessage) Message(ctx context.Context, in model.MessageInput) (int, error) {
url := "短信接口请求地址"
infoMap = map[string]interface{}{
"api": "文档获取api",
"secret": "文档获取密钥",
"content": in.Content(要发送的短信内容,短信格式参考文档),
"mobile": in.Mobile(接收的手机号),
"template_id": "模板id",
}
jsonBytes, err := json.Marshal(infoMap)
if err != nil {
return 500, errors.New("json格式转换错误")
}
//发起请求
request, err := http.NewRequest("POST", url, bytes.NewReader([]byte(jsonBytes)))
if err != nil {
return 402, err
}
//设置请求头
request.Header.Add("Content-Type", "application/json")
request.Header.Add("cache-control", "no-cache")
resp, err := http.DefaultClient.Do(request)
if err != nil {
return 402, err
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
return 500, err
}
//转换格式
var result map[string]interface{}
err1 := json.Unmarshal(data, &result)
if err1 != nil {
return 500, err1
}
//请求成功返回状态码
if int(result["code"].(float64)) == 0 {
return 200, nil
}
return 500, nil
}
status, err1 := service.Message().Message(ctx, model.MessageInput{
Mobile: phone,
Content: content,
})
if err1 != nil {
return
}