- mobile sms verify added.
This commit is contained in:
@@ -5,7 +5,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxcallback/auth/mobile"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/gormdb"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -78,3 +81,15 @@ func GetUserInfo(token string) (loginInfo *LoginInfo, err error) {
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BindMobile(token, mobileNum, code string) (err error) {
|
||||||
|
loginInfo := new(LoginInfo)
|
||||||
|
if err = globals.Cacher.GetAs(token, loginInfo); err == nil {
|
||||||
|
if mobile.VerifyCode(mobileNum, code) {
|
||||||
|
db := gormdb.GetDB()
|
||||||
|
return db.Model(model.WeiXins{}).Where("openid = ?", loginInfo.ID).Update("tel", mobileNum).Error
|
||||||
|
}
|
||||||
|
err = errors.New("验证码错")
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
38
business/jxcallback/auth/mobile/mobile.go
Normal file
38
business/jxcallback/auth/mobile/mobile.go
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package mobile
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"github.com/KenmyZhang/aliyun-communicate"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
DefVerifyCodeDuration = 5 * time.Minute
|
||||||
|
)
|
||||||
|
|
||||||
|
func SendVerifyCode(mobileNumber string) error {
|
||||||
|
smsClient := aliyunsmsclient.New("http://dysmsapi.aliyuncs.com/")
|
||||||
|
code := fmt.Sprintf("%06d", rand.Intn(1000000))
|
||||||
|
_, err := smsClient.Execute(globals.AliKey, globals.AliSecret, mobileNumber, "京西菜市", "SMS_84655036", string(utils.MustMarshal(map[string]interface{}{
|
||||||
|
"code": code,
|
||||||
|
})))
|
||||||
|
if err == nil {
|
||||||
|
globals.Cacher.Set(mobileNumber, code, DefVerifyCodeDuration)
|
||||||
|
}
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(result, false))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func VerifyCode(mobileNumber, code string) bool {
|
||||||
|
if value := globals.Cacher.Get(mobileNumber); value != nil {
|
||||||
|
if code == value.(string) {
|
||||||
|
globals.Cacher.Del(mobileNumber)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
12
business/jxcallback/auth/mobile/mobile_test.go
Normal file
12
business/jxcallback/auth/mobile/mobile_test.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package mobile
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSendVerifyCode(t *testing.T) {
|
||||||
|
err := SendVerifyCode("18180948107")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,9 @@ autonaviKey = "4427170f870af2110becb8852d36ab08"
|
|||||||
generateLegacyJxOrder = false
|
generateLegacyJxOrder = false
|
||||||
enableStore = true
|
enableStore = true
|
||||||
|
|
||||||
|
aliKey = "LTAI6xJUGaP6WdMQ"
|
||||||
|
aliSecret = "CLmx5T93Bgi89EGAxWM4RTAXUsiHbM"
|
||||||
|
|
||||||
[dev]
|
[dev]
|
||||||
freshFoodServerURL = "http://portal.beta.jxc4.com"
|
freshFoodServerURL = "http://portal.beta.jxc4.com"
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/auth"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/auth"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/jxcallback/auth/localpass" // 加载本地用户密码
|
_ "git.rosy.net.cn/jx-callback/business/jxcallback/auth/localpass" // 加载本地用户密码
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxcallback/auth/mobile"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/auth/weixin"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/auth/weixin"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
@@ -102,3 +103,31 @@ func (c *AuthController) GetUserInfo() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 发送验证码
|
||||||
|
// @Description 发送验证码
|
||||||
|
// @Param mobile formData string true "手机号"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /SendMobileVerifyCode [post]
|
||||||
|
func (c *AuthController) SendMobileVerifyCode() {
|
||||||
|
c.callSendMobileVerifyCode(func(params *tAuthSendMobileVerifyCodeParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
err = mobile.SendVerifyCode(params.Mobile)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 绑定手机
|
||||||
|
// @Description 绑定手机
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param mobile formData string true "手机号"
|
||||||
|
// @Param code formData string true "验证码"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /BindMobile [post]
|
||||||
|
func (c *AuthController) BindMobile() {
|
||||||
|
c.callBindMobile(func(params *tAuthBindMobileParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
err = auth.BindMobile(params.Token, params.Mobile, params.Code)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ var (
|
|||||||
JdorderTableName string
|
JdorderTableName string
|
||||||
|
|
||||||
Cacher cache.ICacher
|
Cacher cache.ICacher
|
||||||
|
|
||||||
|
AliKey string
|
||||||
|
AliSecret string
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -53,4 +56,7 @@ func Init() {
|
|||||||
JdorderTableName = "jdorder"
|
JdorderTableName = "jdorder"
|
||||||
|
|
||||||
Cacher = redis.New(beego.AppConfig.DefaultString("redisHost", "localhost"), beego.AppConfig.DefaultInt("redisPort", 0), beego.AppConfig.DefaultString("redisPassword", ""))
|
Cacher = redis.New(beego.AppConfig.DefaultString("redisHost", "localhost"), beego.AppConfig.DefaultInt("redisPort", 0), beego.AppConfig.DefaultString("redisPassword", ""))
|
||||||
|
|
||||||
|
AliKey = beego.AppConfig.DefaultString("aliKey", "")
|
||||||
|
AliSecret = beego.AppConfig.DefaultString("aliSecret", "")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,14 @@ import (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "BindMobile",
|
||||||
|
Router: `/BindMobile`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetUserInfo",
|
Method: "GetUserInfo",
|
||||||
@@ -39,6 +47,14 @@ func init() {
|
|||||||
MethodParams: param.Make(),
|
MethodParams: param.Make(),
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "SendMobileVerifyCode",
|
||||||
|
Router: `/SendMobileVerifyCode`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "CreateWaybillOnProviders",
|
Method: "CreateWaybillOnProviders",
|
||||||
|
|||||||
Reference in New Issue
Block a user