@ -6,22 +6,31 @@ import (
"Open_IM/pkg/common/db"
"Open_IM/pkg/common/db/mysql_model/im_mysql_model"
"Open_IM/pkg/common/log"
"encoding/json"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/client"
dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v2/client"
"github.com/alibabacloud-go/tea/tea"
"github.com/gin-gonic/gin"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
sms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20210111"
"gopkg.in/gomail.v2"
"math/rand"
"net/http"
"time"
)
var sms SMS
func init ( ) {
var err error
if config . Config . Demo . AliSMSVerify . Enable {
sms , err = NewAliSMS ( )
if err != nil {
panic ( err )
}
} else {
sms , err = NewTencentSMS ( )
if err != nil {
panic ( err )
}
}
}
type paramsVerificationCode struct {
Email string ` json:"email" `
PhoneNumber string ` json:"phoneNumber" `
@ -88,28 +97,23 @@ func SendVerificationCode(c *gin.Context) {
return
}
} else {
client , err := CreateClient ( tea . String ( config . Config . Demo . AliSMSVerify . AccessKeyID ) , tea . String ( config . Config . Demo . AliSMSVerify . AccessKeySecret ) )
if err != nil {
log . NewError ( params . OperationID , "create sendSms client err" , "err" , err . Error ( ) )
c . JSON ( http . StatusOK , gin . H { "errCode" : constant . SmsSendCodeErr , "errMsg" : "Enter the superCode directly in the verification code box, SuperCode can be configured in config.xml" } )
return
}
sendSmsRequest := & dysmsapi20170525 . SendSmsRequest {
PhoneNumbers : tea . String ( accountKey ) ,
SignName : tea . String ( config . Config . Demo . AliSMSVerify . SignName ) ,
TemplateCode : tea . String ( config . Config . Demo . AliSMSVerify . VerificationCodeTemplateCode ) ,
TemplateParam : tea . String ( fmt . Sprintf ( "{\"code\":\"%d\"}" , code ) ) ,
}
//client, err := CreateClient(tea.String(config.Config.Demo.AliSMSVerify.AccessKeyID), tea.String(config.Config.Demo.AliSMSVerify.AccessKeySecret))
//if err != nil {
// log.NewError(params.OperationID, "create sendSms client err", "err", err.Error())
// c.JSON(http.StatusOK, gin.H{"errCode": constant.SmsSendCodeErr, "errMsg": "Enter the superCode directly in the verification code box, SuperCode can be configured in config.xml"})
// return
//}
response , err := client . SendSms ( sendSmsRequest )
//sendSmsRequest := &dysmsapi20170525.SendSmsRequest{
// PhoneNumbers: tea.String(accountKey),
// SignName: tea.String(config.Config.Demo.AliSMSVerify.SignName),
// TemplateCode: tea.String(config.Config.Demo.AliSMSVerify.VerificationCodeTemplateCode),
// TemplateParam: tea.String(fmt.Sprintf("{\"code\":\"%d\"}", code)),
//}
response , err := sms . SendSms ( code , accountKey )
//response, err := client.SendSms(sendSmsRequest)
if err != nil {
log . NewError ( params . OperationID , "sendSms error" , account , "err" , err . Error ( ) )
c . JSON ( http . StatusOK , gin . H { "errCode" : constant . SmsSendCodeErr , "errMsg" : "Enter the superCode directly in the verification code box, SuperCode can be configured in config.xml" } )
return
}
if * response . Body . Code != "OK" {
log . NewError ( params . OperationID , "alibabacloud sendSms error" , account , "err" , response . Body . Code , response . Body . Message )
log . NewError ( params . OperationID , "sendSms error" , account , "err" , err . Error ( ) , response )
c . JSON ( http . StatusOK , gin . H { "errCode" : constant . SmsSendCodeErr , "errMsg" : "Enter the superCode directly in the verification code box, SuperCode can be configured in config.xml" } )
return
}
@ -120,48 +124,48 @@ func SendVerificationCode(c *gin.Context) {
c . JSON ( http . StatusOK , gin . H { "errCode" : constant . NoError , "errMsg" : "Verification code has been set!" , "data" : data } )
}
func CreateClient ( accessKeyId * string , accessKeySecret * string ) ( result * dysmsapi20170525 . Client , err error ) {
c := & openapi . Config {
// 您的AccessKey ID
AccessKeyId : accessKeyId ,
// 您的AccessKey Secret
AccessKeySecret : accessKeySecret ,
}
// 访问的域名
c . Endpoint = tea . String ( "dysmsapi.aliyuncs.com" )
result = & dysmsapi20170525 . Client { }
result , err = dysmsapi20170525 . NewClient ( c )
return result , err
}
func CreateTencentSMSClient ( ) ( string , error ) {
credential := common . NewCredential (
config . Config . Demo . TencentSMS . SecretID ,
config . Config . Demo . TencentSMS . SecretKey ,
)
cpf := profile . NewClientProfile ( )
client , err := sms . NewClient ( credential , config . Config . Demo . TencentSMS . Region , cpf )
if err != nil {
return "" , err
}
request := sms . NewSendSmsRequest ( )
request . SmsSdkAppId = common . StringPtr ( config . Config . Demo . TencentSMS . AppID )
request . SignName = common . StringPtr ( config . Config . Demo . TencentSMS . SignName )
request . TemplateId = common . StringPtr ( config . Config . Demo . TencentSMS . VerificationCodeTemplateCode )
request . TemplateParamSet = common . StringPtrs ( [ ] string { "666666" } )
request . PhoneNumberSet = common . StringPtrs ( [ ] string { "+971588232183" } )
// 通过client对象调用想要访问的接口, 需要传入请求对象
response , err := client . SendSms ( request )
// 非SDK异常, 直接失败。实际代码中可以加入其他的处理。
if err != nil {
log . Error ( "test" , "send code to tencent err" , err . Error ( ) )
}
// 处理异常
if _ , ok := err . ( * errors . TencentCloudSDKError ) ; ok {
log . Error ( "test" , "An API error has returned:" , err . Error ( ) )
return "" , err
}
b , _ := json . Marshal ( response . Response )
return string ( b ) , nil
}
//func CreateClient(accessKeyId *string, accessKeySecret *string) (result *dysmsapi20170525.Client, err error) {
// c := &openapi.Config{
// // 您的AccessKey ID
// AccessKeyId: accessKeyId,
// // 您的AccessKey Secret
// AccessKeySecret: accessKeySecret,
// }
//
// // 访问的域名
// c.Endpoint = tea.String("dysmsapi.aliyuncs.com")
// result = &dysmsapi20170525.Client{}
// result, err = dysmsapi20170525.NewClient(c)
// return result, err
//}
//func CreateTencentSMSClient() (string, error) {
// credential := common.NewCredential(
// config.Config.Demo.TencentSMS.SecretID,
// config.Config.Demo.TencentSMS.SecretKey,
// )
// cpf := profile.NewClientProfile()
// client, err := sms.NewClient(credential, config.Config.Demo.TencentSMS.Region, cpf)
// if err != nil {
// return "", err
// }
// request := sms.NewSendSmsRequest()
// request.SmsSdkAppId = common.StringPtr(config.Config.Demo.TencentSMS.AppID)
// request.SignName = common.StringPtr(config.Config.Demo.TencentSMS.SignName)
// request.TemplateId = common.StringPtr(config.Config.Demo.TencentSMS.VerificationCodeTemplateCode)
// request.TemplateParamSet = common.StringPtrs([]string{"666666"})
// request.PhoneNumberSet = common.StringPtrs([]string{"+971588232183"})
// // 通过client对象调用想要访问的接口, 需要传入请求对象
// response, err := client.SendSms(request)
// // 非SDK异常, 直接失败。实际代码中可以加入其他的处理。
// if err != nil {
// log.Error("test", "send code to tencent err", err.Error())
// }
// // 处理异常
// if _, ok := err.(*errors.TencentCloudSDKError); ok {
// log.Error("test", "An API error has returned:", err.Error())
// return "", err
// }
//
// b, _ := json.Marshal(response.Response)
// return string(b), nil
//}