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