新增sms相关接口
This commit is contained in:
		
							parent
							
								
									78d60083f7
								
							
						
					
					
						commit
						ce30ff4ef9
					
				
							
								
								
									
										110
									
								
								services/sms/client.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								services/sms/client.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,110 @@
 | 
			
		||||
package sms
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/md5"
 | 
			
		||||
	"encoding/hex"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk"
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	VERSION = "2024-05-30"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var HOST = requests.Host{
 | 
			
		||||
	Default: "sms.gaore.com:8804",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Client struct {
 | 
			
		||||
	sdk.Client
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewClient() (client *Client, err error) {
 | 
			
		||||
	client = new(Client)
 | 
			
		||||
	err = client.Init()
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) SendEmail(req *SendEmailRequest) (resp *SendEmailResponse, err error) {
 | 
			
		||||
	if len(req.Addresses) == 0 {
 | 
			
		||||
		return nil, errors.New("addresses is empty")
 | 
			
		||||
	}
 | 
			
		||||
	if req.FromName == "" {
 | 
			
		||||
		return nil, errors.New("from is empty")
 | 
			
		||||
	}
 | 
			
		||||
	if req.Subject == "" {
 | 
			
		||||
		return nil, errors.New("subject is empty")
 | 
			
		||||
	}
 | 
			
		||||
	if req.Body == "" {
 | 
			
		||||
		return nil, errors.New("content is empty")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ts, token := getToken("04573fc4c8e01999a0909ab9c00bca5a")
 | 
			
		||||
 | 
			
		||||
	req.JsonParams["sign"] = token
 | 
			
		||||
	req.JsonParams["time"] = ts
 | 
			
		||||
	resp = CreateSendEmailResponse()
 | 
			
		||||
	err = c.DoAction(req, resp)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) SendFeiShuWebHook(req *SendFeiShuWebHookRequest) (resp *SendFeiShuWebHookResponse, err error) {
 | 
			
		||||
	if req.Content == "" {
 | 
			
		||||
		err = errors.New("content is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.Do == "" {
 | 
			
		||||
		err = errors.New("webhook is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.Token == "" {
 | 
			
		||||
		err = errors.New("token is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	resp = CreateSendFeiShuWebHookResponse()
 | 
			
		||||
	err = c.DoAction(req, resp)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) SendSms(req *SendSmsRequest) (resp *SendSmsResponse, err error) {
 | 
			
		||||
 | 
			
		||||
	if req.Mobile == "" {
 | 
			
		||||
		err = errors.New("mobile is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.Type == "" {
 | 
			
		||||
		err = errors.New("type is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.Expired == 0 {
 | 
			
		||||
		err = errors.New("expired is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.Code == 0 {
 | 
			
		||||
		err = errors.New("code is empty")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	resp = CreateSendSmsResponse()
 | 
			
		||||
	err = c.DoAction(req, resp)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getToken(key string) (ts int64, token string) {
 | 
			
		||||
	ts = time.Now().Unix()
 | 
			
		||||
	hash := md5.New()
 | 
			
		||||
	hash.Write([]byte(fmt.Sprintf("%v%v", ts, key)))
 | 
			
		||||
	hashBytes := hash.Sum(nil)
 | 
			
		||||
 | 
			
		||||
	token = hex.EncodeToString(hashBytes)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										110
									
								
								services/sms/client_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								services/sms/client_test.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,110 @@
 | 
			
		||||
package sms
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	client *Client
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestMain(t *testing.M) {
 | 
			
		||||
	var err error
 | 
			
		||||
	client, err = NewClient()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	t.Run()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestClient_SendEmail(t *testing.T) {
 | 
			
		||||
	req := CreateSendEmailRequest(SendEmailParam{
 | 
			
		||||
		Addresses: []string{"xuyang@89you.com"},
 | 
			
		||||
		Subject:   "测试邮件",
 | 
			
		||||
		Body:      "xxx已修改密码,新密码是:xxx",
 | 
			
		||||
		FromName:  "高热监控",
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	email, err := client.SendEmail(req)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println(email)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestClient_SendFeiShuWebHook(t *testing.T) {
 | 
			
		||||
	//req := CreateSendFeiShuWebHookRequest(SendFeiShuWebHookParam{
 | 
			
		||||
	//	Do:         "sendCardText",
 | 
			
		||||
	//	Token:      "b762f80c-fe4f-4182-b48e-5c78041592bc",
 | 
			
		||||
	//	Content:    "[{\"tag\":\"div\",\"text\":{\"tag\":\"plain_text\",\"content\":\"请完成以下任务:\"}},{\"tag\":\"action\",\"actions\":[{\"tag\":\"button\",\"text\":{\"tag\":\"plain_text\",\"content\":\"查看详情\"},\"type\":\"primary\",\"url\":\"https:\\\\\\\\/\\\\\\\\/example.com\\\\\\\\/task\"}]}]",
 | 
			
		||||
	//	Title:      "卡片主标题",
 | 
			
		||||
	//	TitleColor: "purple",
 | 
			
		||||
	//})
 | 
			
		||||
	//
 | 
			
		||||
	//resp, err := client.SendFeiShuWebHook(req)
 | 
			
		||||
	//if err != nil {
 | 
			
		||||
	//	panic(err)
 | 
			
		||||
	//}
 | 
			
		||||
	//fmt.Println(resp)
 | 
			
		||||
	//
 | 
			
		||||
	//req2 := CreateSendFeiShuWebHookRequest(SendFeiShuWebHookParam{
 | 
			
		||||
	//	Do:      "sendSimpleText",
 | 
			
		||||
	//	Token:   "b762f80c-fe4f-4182-b48e-5c78041592bc",
 | 
			
		||||
	//	Content: "  - 苹果ID:XXXX\n  - 游戏ID:XXXX\n  - bundleID:XXXX\n  - 应用名:XXX\n  - 下架时间:2025-04-18 12:36:52\n  - IP:XX(城市A省份)、XX(城市B省份);说明:XX为具体的IP,括号内为IP对应的城市;",
 | 
			
		||||
	//})
 | 
			
		||||
	//
 | 
			
		||||
	//resp2, err := client.SendFeiShuWebHook(req2)
 | 
			
		||||
	//if err != nil {
 | 
			
		||||
	//	panic(err)
 | 
			
		||||
	//}
 | 
			
		||||
	//fmt.Println(resp2)
 | 
			
		||||
 | 
			
		||||
	//[
 | 
			
		||||
	//    [
 | 
			
		||||
	//        {
 | 
			
		||||
	//            "tag": "text",
 | 
			
		||||
	//            "text": "苹果ID:XXXX"
 | 
			
		||||
	//        }
 | 
			
		||||
	//    ],
 | 
			
		||||
	//    [
 | 
			
		||||
	//        {
 | 
			
		||||
	//            "tag": "text",
 | 
			
		||||
	//            "text": "游戏ID:XXXX"
 | 
			
		||||
	//        }
 | 
			
		||||
	//    ]
 | 
			
		||||
	//]
 | 
			
		||||
 | 
			
		||||
	req3 := CreateSendFeiShuWebHookRequest(SendFeiShuWebHookParam{
 | 
			
		||||
		TitleColor: "purple",
 | 
			
		||||
		Title:      "监控报警",
 | 
			
		||||
		Do:         "sendCardText",
 | 
			
		||||
		Token:      "b762f80c-fe4f-4182-b48e-5c78041592bc",
 | 
			
		||||
		Content:    "[{\"tag\":\"div\",\"text\":{\"tag\":\"plain_text\",\"content\":\"苹果ID:XXXX\"}},{\"tag\":\"div\",\"text\":{\"tag\":\"plain_text\",\"content\":\"游戏ID:XXXX\"}}]",
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	resp3, err := client.SendFeiShuWebHook(req3)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(resp3.Msg)
 | 
			
		||||
	fmt.Println(resp3)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestClient_SendSms(t *testing.T) {
 | 
			
		||||
	req := CreateSendSmsRequest(SendSmsParam{
 | 
			
		||||
		Mobile:  "18320021439",
 | 
			
		||||
		Type:    SmsTypeRegister,
 | 
			
		||||
		Code:    123456,
 | 
			
		||||
		Expired: 5,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	sms, err := client.SendSms(req)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println(sms)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										45
									
								
								services/sms/email.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								services/sms/email.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
package sms
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SendEmailRequest struct {
 | 
			
		||||
	*requests.JsonRequest
 | 
			
		||||
	Addresses []string `position:"Json" field:"addresses"`
 | 
			
		||||
	Subject   string   `position:"Json" field:"subject"`
 | 
			
		||||
	Body      string   `position:"Json" field:"body"`
 | 
			
		||||
	FromName  string   `position:"Json" field:"from_name"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SendEmailResponse struct {
 | 
			
		||||
	*responses.BaseResponse
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SendEmailParam struct {
 | 
			
		||||
	Addresses []string
 | 
			
		||||
	Subject   string
 | 
			
		||||
	Body      string
 | 
			
		||||
	FromName  string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateSendEmailRequest(param SendEmailParam) (req *SendEmailRequest) {
 | 
			
		||||
	req = &SendEmailRequest{
 | 
			
		||||
		JsonRequest: &requests.JsonRequest{},
 | 
			
		||||
		Addresses:   param.Addresses,
 | 
			
		||||
		Subject:     param.Subject,
 | 
			
		||||
		Body:        param.Body,
 | 
			
		||||
		FromName:    param.FromName,
 | 
			
		||||
	}
 | 
			
		||||
	req.InitWithApiInfo(HOST, VERSION, "/email/send")
 | 
			
		||||
	req.Method = requests.POST
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateSendEmailResponse() (resp *SendEmailResponse) {
 | 
			
		||||
	resp = &SendEmailResponse{
 | 
			
		||||
		BaseResponse: &responses.BaseResponse{},
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								services/sms/feishu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								services/sms/feishu.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
			
		||||
package sms
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SendFeiShuWebHookRequest struct {
 | 
			
		||||
	*requests.JsonRequest
 | 
			
		||||
	Do         string `position:"Json" field:"do"`
 | 
			
		||||
	Token      string `position:"Json" field:"token"`
 | 
			
		||||
	Content    string `position:"Json" field:"content"`
 | 
			
		||||
	Title      string `position:"Json" field:"title"`
 | 
			
		||||
	TitleColor string `position:"Json" field:"title_color"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SendFeiShuWebHookResponse struct {
 | 
			
		||||
	*responses.BaseResponse
 | 
			
		||||
	FeishuData string `json:"feishu_data"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SendFeiShuWebHookParam struct {
 | 
			
		||||
	Do         string
 | 
			
		||||
	Token      string
 | 
			
		||||
	Content    string
 | 
			
		||||
	Title      string
 | 
			
		||||
	TitleColor string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateSendFeiShuWebHookRequest(param SendFeiShuWebHookParam) (req *SendFeiShuWebHookRequest) {
 | 
			
		||||
	req = &SendFeiShuWebHookRequest{
 | 
			
		||||
		JsonRequest: &requests.JsonRequest{},
 | 
			
		||||
		Do:          param.Do,
 | 
			
		||||
		Token:       param.Token,
 | 
			
		||||
		Content:     param.Content,
 | 
			
		||||
		Title:       param.Title,
 | 
			
		||||
		TitleColor:  param.TitleColor,
 | 
			
		||||
	}
 | 
			
		||||
	req.InitWithApiInfo(HOST, VERSION, "/feishu/webhook_send")
 | 
			
		||||
	req.Method = requests.POST
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateSendFeiShuWebHookResponse() (resp *SendFeiShuWebHookResponse) {
 | 
			
		||||
	resp = &SendFeiShuWebHookResponse{
 | 
			
		||||
		BaseResponse: &responses.BaseResponse{},
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										51
									
								
								services/sms/sms.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								services/sms/sms.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
			
		||||
package sms
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
 | 
			
		||||
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SendSmsRequest struct {
 | 
			
		||||
	*requests.JsonRequest
 | 
			
		||||
	Mobile  string `position:"Json" field:"mobile"`
 | 
			
		||||
	Type    string `position:"Json" field:"type"`
 | 
			
		||||
	Expired int64  `position:"Json" field:"expired"`
 | 
			
		||||
	Code    int64  `position:"Json" field:"code"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SendSmsResponse struct {
 | 
			
		||||
	*responses.BaseResponse
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SmsType = string
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	SmsTypeRegister SmsType = "reg" // 注册
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SendSmsParam struct {
 | 
			
		||||
	Mobile  string  // 手机号
 | 
			
		||||
	Type    SmsType // 验证码类型
 | 
			
		||||
	Expired int64   // 过期时间,秒数
 | 
			
		||||
	Code    int64   // 验证码
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateSendSmsRequest(param SendSmsParam) (req *SendSmsRequest) {
 | 
			
		||||
	req = &SendSmsRequest{
 | 
			
		||||
		JsonRequest: &requests.JsonRequest{},
 | 
			
		||||
		Mobile:      param.Mobile,
 | 
			
		||||
		Type:        param.Type,
 | 
			
		||||
		Expired:     param.Expired,
 | 
			
		||||
		Code:        param.Code,
 | 
			
		||||
	}
 | 
			
		||||
	req.InitWithApiInfo(HOST, VERSION, "/sms/agg/send")
 | 
			
		||||
	req.Method = requests.POST
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateSendSmsResponse() (resp *SendSmsResponse) {
 | 
			
		||||
	resp = &SendSmsResponse{
 | 
			
		||||
		BaseResponse: &responses.BaseResponse{},
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user