Browse Source

增加发短信rpc

wangchuanjin 2 năm trước cách đây
mục cha
commit
227fe2b56a
2 tập tin đã thay đổi với 33 bổ sung49 xóa
  1. 31 48
      sms/sms.go
  2. 2 1
      sms/sms_test.go

+ 31 - 48
sms/sms.go

@@ -1,56 +1,39 @@
-/*
-短信发送工具类
-暂定使用云片短信发送平台,
-后期确定下来后,再修改此工具类即可
-TODO 发送短信应作一下发送记录,并在前台(action层)控制单一用户发送次数,如每天发送5次。发送多浪费大家成本啊。
-*/
 package sms
 package sms
 
 
 import (
 import (
-	"io/ioutil"
+	"encoding/json"
 	"log"
 	"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
+		}
+	}()
 }
 }

+ 2 - 1
sms/sms_test.go

@@ -1,11 +1,12 @@
 package sms
 package sms
 
 
 import (
 import (
+	"qfw/util/sms"
 	"testing"
 	"testing"
 	"time"
 	"time"
 )
 )
 
 
 func TestSendSms(t *testing.T) {
 func TestSendSms(t *testing.T) {
-	SendSms("15639297172", "1", "#company#=企业服务网&#code#=D323")
+	sms.SendSms("15639297172", "1", "#company#=企业服务网&#code#=D323")
 	time.Sleep(2 * time.Minute)
 	time.Sleep(2 * time.Minute)
 }
 }