|
@@ -2,6 +2,10 @@ package user
|
|
|
|
|
|
import (
|
|
|
"errors"
|
|
|
+ "github.com/gorilla/sessions"
|
|
|
+ "log"
|
|
|
+ "qfw/util"
|
|
|
+ "time"
|
|
|
|
|
|
thisModel "github.com/baiy/Cadmin-server-go/models/user"
|
|
|
|
|
@@ -9,9 +13,12 @@ import (
|
|
|
"github.com/baiy/Cadmin-server-go/system/utils"
|
|
|
|
|
|
"github.com/baiy/Cadmin-server-go/admin"
|
|
|
+ index_ "github.com/baiy/Cadmin-server-go/system/index"
|
|
|
"github.com/doug-martin/goqu/v9"
|
|
|
)
|
|
|
|
|
|
+var store = sessions.NewCookieStore([]byte("something-very-secret-save"))
|
|
|
+
|
|
|
func Lists(context *admin.Context) (interface{}, error) {
|
|
|
userId := context.User.Id
|
|
|
param := new(struct {
|
|
@@ -63,6 +70,8 @@ func Save(context *admin.Context) (interface{}, error) {
|
|
|
Description string `form:"description"`
|
|
|
Status int `form:"status" validate:"required"`
|
|
|
Phone string `form:"phone" `
|
|
|
+ PhoneCode string `form:"phoneCode"`
|
|
|
+ LoginType string `form:"loginType"`
|
|
|
})
|
|
|
|
|
|
err := context.Form(param)
|
|
@@ -73,6 +82,28 @@ func Save(context *admin.Context) (interface{}, error) {
|
|
|
if param.Password != "" {
|
|
|
password = string(admin.Passworder.Hash([]byte(param.Password)))
|
|
|
}
|
|
|
+ if param.LoginType == "2" { //点击发送手机验证码
|
|
|
+ _, err := thisModel.GetByPhone(param.Phone)
|
|
|
+ if err == nil {
|
|
|
+ return nil, errors.New("手机号已绑定其他账号")
|
|
|
+ }
|
|
|
+ if SendPhoneIdentCode(context, param.Phone) {
|
|
|
+ return map[string]interface{}{"status": 3}, nil
|
|
|
+ } else {
|
|
|
+ return nil, errors.New("手机验证码发送失败")
|
|
|
+ }
|
|
|
+ } else if param.LoginType == "3" { //验证手机验证码
|
|
|
+ session, err := store.Get(context.HttpRequest, "qmx_phone_code_save")
|
|
|
+ if err != nil {
|
|
|
+ log.Println("phone-session2获取失败")
|
|
|
+ return nil, nil
|
|
|
+ }
|
|
|
+ phoneCode := util.ObjToString(session.Values["code"])
|
|
|
+ // phone := util.ObjToString(session.Values["phone"])
|
|
|
+ if phoneCode != param.PhoneCode {
|
|
|
+ return nil, errors.New("手机验证码错误")
|
|
|
+ }
|
|
|
+ }
|
|
|
if param.Id == 0 {
|
|
|
if param.Password == "" {
|
|
|
return nil, errors.New("添加用户密码不能为空")
|
|
@@ -82,6 +113,35 @@ func Save(context *admin.Context) (interface{}, error) {
|
|
|
return nil, thisModel.Updata(param.Id, param.Username, password, param.Status, param.Description, param.Phone)
|
|
|
}
|
|
|
|
|
|
+//发送验证码
|
|
|
+func SendPhoneIdentCode(context *admin.Context, phone string) bool {
|
|
|
+ r := context.HttpRequest
|
|
|
+ w := context.HttpResponseWriter
|
|
|
+ session, err := store.Get(r, "qmx_phone_code_save")
|
|
|
+ if err != nil {
|
|
|
+ log.Println("phone-session1获取失败")
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ lastSentTime := util.Int64All(session.Values["identCodeTime"])
|
|
|
+ //60秒之内不允许重复发
|
|
|
+ if lastSentTime > 0 && time.Now().Unix()-lastSentTime <= 60 {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ s_ranNum := util.GetRandom(6) //生成随机数
|
|
|
+ session.Values["code"] = s_ranNum
|
|
|
+ session.Values["phone"] = phone
|
|
|
+ session.Values["identCodeTime"] = time.Now().Unix()
|
|
|
+ session.Options.MaxAge = 300
|
|
|
+ if err := session.Save(r, w); err != nil {
|
|
|
+ log.Println("session1保存错误,验证码")
|
|
|
+ }
|
|
|
+ //发送短信
|
|
|
+ param := map[string]string{"code": s_ranNum}
|
|
|
+ log.Println("短信验证码", phone, s_ranNum)
|
|
|
+ index_.SendSMS("2828060", phone, param)
|
|
|
+ return true
|
|
|
+}
|
|
|
+
|
|
|
func Remove(context *admin.Context) (interface{}, error) {
|
|
|
id, err := context.InputInt("id")
|
|
|
if err != nil {
|