Files
2022-02-11 11:02:29 +08:00

82 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package controller
import (
"SciencesServer/app/handle"
"SciencesServer/utils"
"errors"
"fmt"
)
type Sms struct{}
type SmsHandle func() *Sms
type (
CaptchaCallback struct {
Token string `json:"token"`
EffectTime int `json:"effect_time"`
}
)
// tokenEffectTime Token有效期单位s
var tokenEffectTime = 5 * 60
func (c *Sms) captchaCallback(mobile, code string, callback func() error) error {
content := fmt.Sprintf("【中科云】您的验证码是%s三分钟内有效", code)
fmt.Println(content)
// 执行保存数据库
//mSysSmsLogs := model.NewSysSmsLogs()
//mSysSmsLogs.Mobile = mobile
//mSysSmsLogs.Content = content
//mSysSmsLogs.Usage = model2.SysSmsLogsUsageForCaptcha
//
//return model2.Create(mSysSmsLogs.SysSmsLogs)
// 发送短信
//_ = platform.NewSms().Send()(platform.SmsSendModeForGroup, &platform.SmsParam{
// Mobile: []string{mobile}, Content: content,
//})
if callback != nil {
//_ = callback()
}
return nil
}
// Captcha 验证码事件
func (c *Sms) Captcha(mobile string) error {
if !utils.ValidateMobile(mobile) {
return errors.New("手机格式不正确")
}
if err := handle.NewCaptcha().Sms(6, mobile, c.captchaCallback); err != nil {
return err
}
return nil
}
func (c *Sms) CaptchaValidate(mobile, captcha string) (*CaptchaCallback, error) {
if !utils.ValidateMobile(mobile) {
return nil, errors.New("手机格式不正确")
}
pass, err := handle.NewCaptcha().Validate(&handle.CaptchaSms{
Mobile: mobile,
Captcha: captcha,
})
if err != nil {
return nil, err
} else if !pass {
return nil, errors.New("手机号或验证码错误")
}
return &CaptchaCallback{
Token: utils.JWTEncrypt(tokenEffectTime, map[string]interface{}{
"mobile": mobile,
}),
EffectTime: tokenEffectTime,
}, nil
}
func NewSms() SmsHandle {
return func() *Sms {
return &Sms{}
}
}