|
@@ -0,0 +1,56 @@
|
|
|
|
+/*
|
|
|
|
+短信发送工具类
|
|
|
|
+暂定使用云片短信发送平台,
|
|
|
|
+后期确定下来后,再修改此工具类即可
|
|
|
|
+TODO 发送短信应作一下发送记录,并在前台(action层)控制单一用户发送次数,如每天发送5次。发送多浪费大家成本啊。
|
|
|
|
+*/
|
|
|
|
+package sms
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "io/ioutil"
|
|
|
|
+ "log"
|
|
|
|
+ "net/http"
|
|
|
|
+ "net/url"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+const (
|
|
|
|
+ //取用户信息地址
|
|
|
|
+ getUserInfoUrl = "http://yunpian.com/v1/user/get.json"
|
|
|
|
+ //发送短信地址
|
|
|
|
+ sendSmsUrl = "http://yunpian.com/v1/sms/tpl_send.json" //"http://yunpian.com/v1/sms/send.json"
|
|
|
|
+ //购买服务后,提供的KEY
|
|
|
|
+ key = "950090a3dfefb4f821ed8f0221482fcd "
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+//开启多协程发送短信
|
|
|
|
+func SendSms(tomobile, tpl, params string) {
|
|
|
|
+ go sendTextSms(tomobile, tpl, params)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//发短信
|
|
|
|
+func sendTextSms(tomobile, tpl /*模板标识*/, params /*url参数模板*/ string) error {
|
|
|
|
+ content, _ := url.Parse(params)
|
|
|
|
+ param := url.Values{"apikey": []string{key}, "mobile": []string{tomobile}, "tpl_id": []string{tpl}, "tpl_value": []string{content.String()}}
|
|
|
|
+ res, err := http.PostForm(sendSmsUrl, param)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println(tomobile, err.Error())
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ bs, _ := ioutil.ReadAll(res.Body)
|
|
|
|
+ log.Println(tomobile, "返回内容:"+string(bs))
|
|
|
|
+ return nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//取得用户信息
|
|
|
|
+func GetUserInfo() (string, error) {
|
|
|
|
+ param := url.Values{"apikey": []string{key}}
|
|
|
|
+ res, err := http.PostForm(getUserInfoUrl, param)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println(err.Error())
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ bs, _ := ioutil.ReadAll(res.Body)
|
|
|
|
+ return string(bs), nil
|
|
|
|
+}
|