From 832871d49d33a0133f8c783044d5cb4db050c002 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 30 Jun 2022 16:27:39 +0800 Subject: [PATCH 1/5] sms test --- internal/demo/register/ali_sms.go | 60 ++++++++++ internal/demo/register/send_code.go | 150 ++++++++++++------------ internal/demo/register/sms_interface.go | 5 + internal/demo/register/tencent_sms.go | 51 ++++++++ 4 files changed, 193 insertions(+), 73 deletions(-) create mode 100644 internal/demo/register/ali_sms.go create mode 100644 internal/demo/register/sms_interface.go create mode 100644 internal/demo/register/tencent_sms.go diff --git a/internal/demo/register/ali_sms.go b/internal/demo/register/ali_sms.go new file mode 100644 index 000000000..ccd12d052 --- /dev/null +++ b/internal/demo/register/ali_sms.go @@ -0,0 +1,60 @@ +package register + +import ( + "Open_IM/pkg/common/config" + "errors" + "fmt" + openapi "github.com/alibabacloud-go/darabonba-openapi/client" + dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v2/client" + "github.com/alibabacloud-go/tea/tea" +) + +type AliSMS struct { + client *dysmsapi20170525.Client +} + +func (a AliSMS) SendSms(code int, phoneNumber string) (resp interface{}, err error) { + sendSmsRequest := &dysmsapi20170525.SendSmsRequest{ + PhoneNumbers: tea.String(phoneNumber), + 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 := a.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 resp, err + } + if *response.Body.Code != "OK" { + //log.NewError(params.OperationID, "alibabacloud sendSms error", account, "err", response.Body.Code, response.Body.Message) + //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 + return resp, errors.New("alibabacloud sendSms error") + } + return resp, nil +} + +func NewAliSMS() (*AliSMS, error) { + var a AliSMS + client, err := createClient(tea.String(config.Config.Demo.AliSMSVerify.AccessKeyID), tea.String(config.Config.Demo.AliSMSVerify.AccessKeySecret)) + if err != nil { + return &a, err + } + a.client = client + return &a, 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 +} diff --git a/internal/demo/register/send_code.go b/internal/demo/register/send_code.go index 7937e5318..72d3f375f 100644 --- a/internal/demo/register/send_code.go +++ b/internal/demo/register/send_code.go @@ -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.TencentSMS.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 - } + //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)), - } - - 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 +//} diff --git a/internal/demo/register/sms_interface.go b/internal/demo/register/sms_interface.go new file mode 100644 index 000000000..6830cc7ae --- /dev/null +++ b/internal/demo/register/sms_interface.go @@ -0,0 +1,5 @@ +package register + +type SMS interface { + SendSms(code int, phoneNumber string) (resp interface{}, err error) +} diff --git a/internal/demo/register/tencent_sms.go b/internal/demo/register/tencent_sms.go new file mode 100644 index 000000000..02a09c7b5 --- /dev/null +++ b/internal/demo/register/tencent_sms.go @@ -0,0 +1,51 @@ +package register + +import ( + "Open_IM/pkg/common/config" + "Open_IM/pkg/utils" + "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" + v20210111 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20210111" +) + +type TencentSMS struct { + client *v20210111.Client +} + +func (t TencentSMS) SendSms(code int, phoneNumber string) (resp interface{}, err error) { + request := v20210111.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{utils.IntToString(code)}) + request.PhoneNumberSet = common.StringPtrs([]string{phoneNumber}) + //+971588232183 + // 通过client对象调用想要访问的接口,需要传入请求对象 + response, err := t.client.SendSms(request) + // 非SDK异常,直接失败。实际代码中可以加入其他的处理。 + if err != nil { + return response, err + } + // 处理异常 + if _, ok := err.(*errors.TencentCloudSDKError); ok { + return response, err + } + return response, nil +} + +func NewTencentSMS() (*TencentSMS, error) { + var a TencentSMS + credential := common.NewCredential( + config.Config.Demo.TencentSMS.SecretID, + config.Config.Demo.TencentSMS.SecretKey, + ) + cpf := profile.NewClientProfile() + client, err := v20210111.NewClient(credential, config.Config.Demo.TencentSMS.Region, cpf) + if err != nil { + return &a, err + } + a.client = client + return &a, nil + +} From 10132879f2639335c70684ebb74d29683b2cc5c4 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 30 Jun 2022 16:29:52 +0800 Subject: [PATCH 2/5] sms test --- internal/api/third/minio_init.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 2f5be9bcc..7726be85e 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -7,7 +7,6 @@ import ( "context" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" - "github.com/minio/minio-go/v7/pkg/policy" url2 "net/url" ) From 013828eb03f79e43a351ed28488e8751ed96ed16 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 30 Jun 2022 16:42:27 +0800 Subject: [PATCH 3/5] sms test --- config/config.yaml | 2 +- internal/demo/register/send_code.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 764d891c8..bd7a2039b 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -694,7 +694,7 @@ demo: accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV signName: 托云信息技术 verificationCodeTemplateCode: SMS_226810164 - enable: true + enable: false tencentsms: #腾讯云短信配置,在腾讯云申请成功后,修改以下选项,enable为true则必须修改 appID: 2400000648 region: "ap-singapore" diff --git a/internal/demo/register/send_code.go b/internal/demo/register/send_code.go index 72d3f375f..d6fd6b312 100644 --- a/internal/demo/register/send_code.go +++ b/internal/demo/register/send_code.go @@ -18,7 +18,7 @@ var sms SMS func init() { var err error - if config.Config.Demo.TencentSMS.Enable { + if config.Config.Demo.AliSMSVerify.Enable { sms, err = NewAliSMS() if err != nil { panic(err) From e96b9b8bf86d71286263a8b1fbb71860713d2453 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 30 Jun 2022 16:51:58 +0800 Subject: [PATCH 4/5] compose file update --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 16acfc578..f9d48b922 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -16,7 +16,7 @@ services: restart: always mongodb: - image: mongo:latest + image: mongo:4.0 ports: - 37017:27017 container_name: mongo From ddc07ee1601a77685ba2d6834c5fe7c490089322 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 30 Jun 2022 17:07:18 +0800 Subject: [PATCH 5/5] compose file update --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index bd7a2039b..764d891c8 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -694,7 +694,7 @@ demo: accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV signName: 托云信息技术 verificationCodeTemplateCode: SMS_226810164 - enable: false + enable: true tencentsms: #腾讯云短信配置,在腾讯云申请成功后,修改以下选项,enable为true则必须修改 appID: 2400000648 region: "ap-singapore"