From e5197550d82cfb7a8784899fff435e96ed026ef9 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期二, 11 八月 2020 11:20:55 +0800 Subject: [PATCH] add syncperson from hik --- main.go | 8 ++++ service/carService.go | 16 ++++++++ service/userService.go | 36 ++++++++++-------- models/user.go | 20 ++++++++++ 4 files changed, 64 insertions(+), 16 deletions(-) diff --git a/main.go b/main.go index 7679f46..ccff92d 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,9 @@ "car-service/controllers" "car-service/models" _ "car-service/routers" + "car-service/service" "github.com/astaxie/beego" + "github.com/robfig/cron" ) func main() { @@ -15,5 +17,11 @@ models.InitDb() controllers.Schedule() go controllers.ComputeSpaceLeftRealTime() + //姣忓ぉ鍚屾娴峰悍鏁版嵁锛岀湅浜哄憳id鏄惁鏈夊彂鐢熷彉鍖� + c := cron.New() + c.AddFunc("@daily", func() { + service.SyncHikPerson() + }) + c.Start() beego.Run() } diff --git a/models/user.go b/models/user.go index 46ee619..ff6df42 100644 --- a/models/user.go +++ b/models/user.go @@ -55,11 +55,31 @@ return all,nil } +func (u *User) GetAllMapByPhone() map[string]User { + m := make(map[string]User) + all, _ := u.GetAllUsers() + if all !=nil { + for _,p := range all { + m[p.PhoneNum] = p + } + } + return m +} + func (u *User) Update() (int64, error) { o := orm.NewOrm() return o.Update(u) } +func (u *User) SyncHikPersonId(phoneNum string, hikPersonId string) (int64, error) { + o := orm.NewOrm() + res, err := o.Raw("update sys_user set id=? where phoneNum=?", hikPersonId, phoneNum).Exec() + if err != nil { + return 0, err + } + return res.RowsAffected() +} + func Login(username, password string) bool { return false diff --git a/service/carService.go b/service/carService.go index 318e706..4e2c881 100644 --- a/service/carService.go +++ b/service/carService.go @@ -302,6 +302,22 @@ return list } +func SyncHikPerson() { + sv := NewCarService() + hikPersons := sv.GetHikPersonList() + if hikPersons != nil { + var u models.User + uMap := u.GetAllMapByPhone() + for _,hp := range hikPersons { + if sp,ok := uMap[hp.PhoneNo];ok { + if sp.Id != hp.PersonId { + u.SyncHikPersonId(hp.PhoneNo, hp.PersonId) + } + } + } + } +} + func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult { fmt.Println(url, reqBody) result := sv.hikUtil.Post(url, reqBody) diff --git a/service/userService.go b/service/userService.go index 237cf0d..b6eccdd 100644 --- a/service/userService.go +++ b/service/userService.go @@ -20,26 +20,26 @@ if verifyCode(phoneNum, code) { carSv := NewCarService() + //鍏堝垽鏂鎵嬫満鍙锋槸鍚﹀湪娴峰悍骞冲彴涓� + 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("璇疯仈绯诲仠杞﹀満绠$悊鍛�") + } + 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 - } - } - } - if !found { - return false, nil, errors.New("璇疯仈绯诲仠杞﹀満绠$悊鍛�") - } - u := models.User{ Id: hikPersonId, PhoneNum: phoneNum, @@ -71,6 +71,10 @@ return false, nil, errors.New("娉ㄥ唽澶辫触") } } else { //鐢ㄦ埛宸插瓨鍦� + if hikPersonId != tmpUser.Id { + tmpUser.Id = hikPersonId + tmpUser.SyncHikPersonId(tmpUser.PhoneNum, hikPersonId) + } var plateNos = make([]string, 0) hikVehicles := carSv.GetVehicleListByPerson(tmpUser.Id) -- Gitblit v1.8.0