浏览代码

feat:更换短信平台

wangchuanjin 3 年之前
父节点
当前提交
c4cc1720bb
共有 2 个文件被更改,包括 87 次插入49 次删除
  1. 31 49
      src/qfw/util/sms/sms.go
  2. 56 0
      src/qfw/util/sms/sms.go_yunpian_del

+ 31 - 49
src/qfw/util/sms/sms.go

@@ -1,56 +1,38 @@
-/*
-短信发送工具类
-暂定使用云片短信发送平台,
-后期确定下来后,再修改此工具类即可
-TODO 发送短信应作一下发送记录,并在前台(action层)控制单一用户发送次数,如每天发送5次。发送多浪费大家成本啊。
-*/
 package sms
 
 import (
-	"io/ioutil"
+	"encoding/json"
 	"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 "
+	"net/rpc"
+	"qfw/util"
 )
 
-//开启多协程发送短信
-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
+/*
+ *发送短信
+ *@Param address 消息服务rpc地址
+ *@Param id 消息服务rpc程序中定义
+ *@Param mobile 手机号
+ *@Param params 消息模板中变量
+ */
+func SendSms(address, id, phones string, params ...string) {
+	go func() {
+		defer util.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
+		}
+	}()
 }

+ 56 - 0
src/qfw/util/sms/sms.go_yunpian_del

@@ -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
+}