From f64dd9f191dff341b4eb430d7bacc44a3db9a279 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期五, 04 三月 2022 10:12:45 +0800 Subject: [PATCH] fix nil --- service/userService.go | 132 +++++++++++++++++++++++++++++++------------- 1 files changed, 93 insertions(+), 39 deletions(-) diff --git a/service/userService.go b/service/userService.go index 237cf0d..7d0c770 100644 --- a/service/userService.go +++ b/service/userService.go @@ -7,7 +7,9 @@ "errors" "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" + "github.com/astaxie/beego" "github.com/satori/go.uuid" + "strings" "sync" "time" ) @@ -20,26 +22,26 @@ 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, @@ -57,22 +59,43 @@ //瀹㈡埛绔痗id缁戝畾鍒悕 if cid != "" { go func() { - bindR, bindE := BindAlias(cid, phoneNum) - fmt.Println("bind cid:",cid, "phoneNum:",phoneNum,"result:", bindR, "err:", bindE) + 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 { @@ -82,19 +105,49 @@ //瀹㈡埛绔痗id缁戝畾鍒悕 if cid != "" { go func() { - bindR, bindE := BindAlias(cid, phoneNum) - fmt.Println("bind cid:",cid, "phoneNum:",phoneNum,"result:", bindR, "err:", bindE) + 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 { @@ -115,25 +168,26 @@ } func NewVerifyCode(phoneNum string) error { - var tmpUser models.User - err := tmpUser.SelectByPhoneNum(phoneNum) - if err != nil { //鐢ㄦ埛涓嶅瓨鍦�,娉ㄥ唽鑾峰彇楠岃瘉鐮侊紝姝ゆ墜鏈哄彿蹇呴』鍦ㄨ偛鑻辨捣搴峰钩鍙颁腑 - carSv := NewCarService() - personList := carSv.GetHikPersonList() - found := false - if personList ==nil { - return errors.New("鎵嬫満鍙蜂笉瀛樺湪锛岃鑱旂郴鍋滆溅鍦虹鐞嗗憳") - } else { - for _,p := range personList { - if p.PhoneNo == phoneNum { - found = true - } + 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("鎵嬫満鍙蜂笉瀛樺湪锛岃鑱旂郴鍋滆溅鍦虹鐞嗗憳") - } } + if !found { + return errors.New("鎵嬫満鍙蜂笉瀛樺湪锛岃鑱旂郴鍋滆溅鍦虹鐞嗗憳") + } + //var tmpUser models.User + //err := tmpUser.SelectByPhoneNum(phoneNum) + //if err != nil { //鐢ㄦ埛涓嶅瓨鍦�,娉ㄥ唽鑾峰彇楠岃瘉鐮侊紝姝ゆ墜鏈哄彿蹇呴』鍦ㄨ偛鑻辨捣搴峰钩鍙颁腑 + // + //} regionId := "cn-hangzhou" accessKeyId := "LTAIkHFaStA1JKk5" @@ -150,7 +204,7 @@ 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("鍙戦�佺煭淇¢獙璇佺爜澶辫触锛岃鑱旂郴绠$悊鍛�") } -- Gitblit v1.8.0