|
@@ -1,56 +1,39 @@
|
|
|
-/*
|
|
|
-短信发送工具类
|
|
|
-暂定使用云片短信发送平台,
|
|
|
-后期确定下来后,再修改此工具类即可
|
|
|
-TODO 发送短信应作一下发送记录,并在前台(action层)控制单一用户发送次数,如每天发送5次。发送多浪费大家成本啊。
|
|
|
-*/
|
|
|
package sms
|
|
|
|
|
|
import (
|
|
|
- "io/ioutil"
|
|
|
+ "encoding/json"
|
|
|
"log"
|
|
|
- "net/http"
|
|
|
- "net/url"
|
|
|
-)
|
|
|
+ "net/rpc"
|
|
|
|
|
|
-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 "
|
|
|
+ . "app.yhyue.com/moapp/jybase/common"
|
|
|
)
|
|
|
|
|
|
-//开启多协程发送短信
|
|
|
-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(err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- defer res.Body.Close()
|
|
|
- bs, _ := ioutil.ReadAll(res.Body)
|
|
|
- log.Println("返回内容:" + 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
|
|
|
+/*
|
|
|
+ *发送短信
|
|
|
+ *@Param address 消息服务rpc地址
|
|
|
+ *@Param id 消息服务rpc程序中定义
|
|
|
+ *@Param mobile 手机号
|
|
|
+ *@Param params 消息模板中变量
|
|
|
+ */
|
|
|
+func SendSms(address, id, phones string, params ...string) {
|
|
|
+ go func() {
|
|
|
+ defer Catch()
|
|
|
+ var repl string
|
|
|
+ client, err := rpc.DialHTTP("tcp", address)
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer client.Close()
|
|
|
+ b, _ := json.Marshal(map[string]interface{}{
|
|
|
+ "id": id,
|
|
|
+ "phones": phones,
|
|
|
+ "params": params,
|
|
|
+ })
|
|
|
+ err = client.Call("Sms.Execute", b, &repl)
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }()
|
|
|
}
|