mirror of https://github.com/rocboss/paopao-ce
parent
1946263788
commit
745f3639d5
@ -0,0 +1,66 @@
|
||||
package security
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/rocboss/paopao-ce/internal/conf"
|
||||
"github.com/rocboss/paopao-ce/internal/core"
|
||||
"github.com/rocboss/paopao-ce/pkg/json"
|
||||
"gopkg.in/resty.v1"
|
||||
)
|
||||
|
||||
var (
|
||||
_ core.PhoneVerifyService = (*juheSmsServant)(nil)
|
||||
)
|
||||
|
||||
type juhePhoneCaptchaRsp struct {
|
||||
ErrorCode int `json:"error_code"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
|
||||
type juheSmsServant struct {
|
||||
gateway string
|
||||
key string
|
||||
tplID string
|
||||
tplVal string
|
||||
}
|
||||
|
||||
// SendPhoneCaptcha 发送短信验证码
|
||||
func (s *juheSmsServant) SendPhoneCaptcha(phone string, captcha string, expire time.Duration) error {
|
||||
client := resty.New()
|
||||
client.DisableWarn = true
|
||||
resp, err := client.R().
|
||||
SetFormData(map[string]string{
|
||||
"mobile": phone,
|
||||
"tpl_id": s.tplID,
|
||||
"tpl_value": fmt.Sprintf(s.tplVal, captcha, expire),
|
||||
"key": s.key,
|
||||
}).Post(s.gateway)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if resp.StatusCode() != http.StatusOK {
|
||||
return errors.New(resp.Status())
|
||||
}
|
||||
|
||||
result := &juhePhoneCaptchaRsp{}
|
||||
if err = json.Unmarshal(resp.Body(), result); err != nil {
|
||||
return err
|
||||
}
|
||||
if result.ErrorCode != 0 {
|
||||
return errors.New(result.Reason)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func newJuheSmsServant() *juheSmsServant {
|
||||
return &juheSmsServant{
|
||||
gateway: conf.SmsJuheSetting.Gateway,
|
||||
key: conf.SmsJuheSetting.Key,
|
||||
tplID: conf.SmsJuheSetting.TplID,
|
||||
tplVal: conf.SmsJuheSetting.TplVal,
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package security
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/alimy/cfg"
|
||||
"github.com/rocboss/paopao-ce/internal/core"
|
||||
)
|
||||
|
||||
func NewPhoneVerifyService() core.PhoneVerifyService {
|
||||
smsVendor, _ := cfg.Val("sms")
|
||||
switch strings.ToLower(smsVendor) {
|
||||
case "smsjuhe":
|
||||
return newJuheSmsServant()
|
||||
default:
|
||||
return newJuheSmsServant()
|
||||
}
|
||||
}
|
Loading…
Reference in new issue