新增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