| | |
| | | "errors" |
| | | "fmt" |
| | | "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" |
| | | "github.com/astaxie/beego" |
| | | "github.com/satori/go.uuid" |
| | | "strings" |
| | | "sync" |
| | | "time" |
| | | ) |
| | |
| | | |
| | | } |
| | | |
| | | func (sv *UserService) Login(phoneNum, code string) (bool,*vo.UserInfo,error) { |
| | | func (sv *UserService) Login(phoneNum, code, cid string) (bool,*vo.UserInfo,error) { |
| | | if verifyCode(phoneNum, code) { |
| | | carSv := NewCarService() |
| | | |
| | | var tmpUser models.User |
| | | err := tmpUser.SelectByPhoneNum(phoneNum) |
| | | fmt.Println("login err:", err) |
| | | if err != nil { //用户不存在,则新增 |
| | | //先判断此手机号是否在海康平台中 |
| | | hikPersons := carSv.GetHikPersonList() |
| | | found := false |
| | | hikPersonId := "" |
| | | if hikPersons != nil { |
| | | for _,hikP := range hikPersons { |
| | | if hikP.PhoneNo == phoneNum { |
| | | found = true |
| | | hikPersonId = hikP.PersonId |
| | | } |
| | | //先判断此手机号是否在海康平台中 |
| | | hikPersons := carSv.GetHikPersonList() |
| | | found := false |
| | | hikPersonId := "" |
| | | if hikPersons != nil { |
| | | for _,hikP := range hikPersons { |
| | | if hikP.PhoneNo == phoneNum { |
| | | found = true |
| | | hikPersonId = hikP.PersonId |
| | | } |
| | | } |
| | | if !found { |
| | | return false, nil, errors.New("请联系停车场管理员") |
| | | } |
| | | } |
| | | if !found { |
| | | return false, nil, errors.New("请联系停车场管理员") |
| | | } |
| | | |
| | | var tmpUser models.User |
| | | err := tmpUser.SelectById(hikPersonId) |
| | | fmt.Println("login err:", err) |
| | | if err != nil { //用户不存在,则新增 |
| | | u := models.User{ |
| | | Id: hikPersonId, |
| | | PhoneNum: phoneNum, |
| | |
| | | plateNos = append(plateNos, up.PlateNo) |
| | | } |
| | | } |
| | | //客户端cid绑定别名 |
| | | if cid != "" { |
| | | go func() { |
| | | var uc models.UserClient |
| | | ucList := uc.GetByCid(cid) |
| | | if ucList != nil && len(ucList) >0 { |
| | | if len(ucList) >1 || ucList[0].PhoneNum != phoneNum { |
| | | unbindB, unE := UnbindAlias(cid) |
| | | fmt.Println("unbindB:", unbindB, "err:", unE) |
| | | } |
| | | } |
| | | if !uc.ExistByCid(phoneNum, cid) { |
| | | new := models.UserClient{ |
| | | Id:uuid.NewV4().String(), |
| | | PhoneNum: phoneNum, |
| | | ClientId: cid, |
| | | BindTime: time.Now().Format("2006-01-02 15:04:05"), |
| | | } |
| | | new.Insert() |
| | | bindR, bindE := BindAlias(cid, phoneNum) |
| | | fmt.Println("bind cid:",cid, "phoneNum:",phoneNum,"result:", bindR, "err:", bindE) |
| | | } |
| | | }() |
| | | } |
| | | return true, &vo.UserInfo{ |
| | | UserId: u.Id, |
| | | PhoneNum: phoneNum, |
| | | PlateNos: plateNos, |
| | | IsAdmin: isAdmin(phoneNum), |
| | | }, nil |
| | | } else { |
| | | fmt.Println("u.Insert err:", e) |
| | | return false, nil, errors.New("注册失败") |
| | | } |
| | | } else { //用户已存在 |
| | | if phoneNum != tmpUser.PhoneNum { |
| | | tmpUser.UpdatePhoneNum(phoneNum, hikPersonId) |
| | | } |
| | | var plateNos = make([]string, 0) |
| | | hikVehicles := carSv.GetVehicleListByPerson(tmpUser.Id) |
| | | hikVehicles := carSv.GetVehicleListByPerson(hikPersonId) |
| | | |
| | | if hikVehicles != nil { |
| | | for _,up := range hikVehicles { |
| | | plateNos = append(plateNos, up.PlateNo) |
| | | } |
| | | } |
| | | //客户端cid绑定别名 |
| | | if cid != "" { |
| | | go func() { |
| | | var uc models.UserClient |
| | | ucList := uc.GetByCid(cid) |
| | | if ucList != nil && len(ucList) >0 { |
| | | if len(ucList) >1 || ucList[0].PhoneNum != phoneNum { |
| | | unbindB, unE := UnbindAlias(cid) |
| | | fmt.Println("unbindB:", unbindB, "err:", unE) |
| | | } |
| | | } |
| | | if !uc.ExistByCid(phoneNum, cid) { |
| | | new := models.UserClient{ |
| | | Id:uuid.NewV4().String(), |
| | | PhoneNum: phoneNum, |
| | | ClientId: cid, |
| | | BindTime: time.Now().Format("2006-01-02 15:04:05"), |
| | | } |
| | | new.Insert() |
| | | bindR, bindE := BindAlias(cid, phoneNum) |
| | | fmt.Println("bind cid:",cid, "phoneNum:",phoneNum,"result:", bindR, "err:", bindE) |
| | | } |
| | | }() |
| | | } |
| | | return true, &vo.UserInfo{ |
| | | UserId: tmpUser.Id, |
| | | PhoneNum: phoneNum, |
| | | PlateNos: plateNos, |
| | | IsAdmin: isAdmin(phoneNum), |
| | | }, nil |
| | | } |
| | | } else { |
| | | return false,nil, errors.New("验证码错误") |
| | | } |
| | | } |
| | | |
| | | func isAdmin(phoneNum string) bool { |
| | | managers := beego.AppConfig.String("nightManagerPhones") |
| | | arr := strings.Split(managers, ",") |
| | | for _,s := range arr { |
| | | if s == phoneNum { |
| | | return true |
| | | } |
| | | } |
| | | |
| | | return false |
| | | } |
| | | |
| | | func (sv *UserService) AddPlateNo(userId, plateNo string) bool { |
| | |
| | | } |
| | | |
| | | func NewVerifyCode(phoneNum string) error { |
| | | carSv := NewCarService() |
| | | personList := carSv.GetHikPersonList() |
| | | found := false |
| | | if personList ==nil { |
| | | return errors.New("手机号不存在,请联系停车场管理员") |
| | | } else { |
| | | for _,p := range personList { |
| | | if p.PhoneNo == phoneNum { |
| | | found = true |
| | | } |
| | | } |
| | | } |
| | | if !found { |
| | | return errors.New("手机号不存在,请联系停车场管理员") |
| | | } |
| | | //var tmpUser models.User |
| | | //err := tmpUser.SelectByPhoneNum(phoneNum) |
| | | //if err != nil { //用户不存在,注册获取验证码,此手机号必须在育英海康平台中 |
| | | // |
| | | //} |
| | | |
| | | regionId := "cn-hangzhou" |
| | | accessKeyId := "LTAIkHFaStA1JKk5" |
| | | AccessSecret := "oE7LhSqBWWUBzV0B7l1G9aVmgHPddM" |
| | |
| | | request.PhoneNumbers = phoneNum |
| | | request.TemplateParam = "{\"code\":"+verifyCode+"}" |
| | | response, err := client.SendSms(request) |
| | | fmt.Println("sendSms err:", err) |
| | | fmt.Println("sendSms err:", err, "phoneNum:", phoneNum, "cod:", verifyCode) |
| | | if err != nil { |
| | | return errors.New("发送短信验证码失败,请联系管理员") |
| | | } |