From eef11eeadc679b1ad7bd23c983a67318d7cd3705 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期二, 11 八月 2020 17:34:00 +0800 Subject: [PATCH] sync user from hik manual,ret syncCount --- controllers/user.go | 13 +++++++++++++ routers/router.go | 1 + service/carService.go | 18 +++++++++++++++--- models/user.go | 15 +++++++++++++-- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/controllers/user.go b/controllers/user.go index 26ca81b..927a38f 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -186,4 +186,17 @@ } +// @router /sync [get] +func (u *UserController) Sync() { + resp := code.Code{} + syncCount := service.SyncHikPerson() + resp.Success = true + resp.Status = http.StatusOK + resp.Data = map[string]interface{}{ + "syncCount": syncCount, + } + + u.Data["json"] = resp + u.ServeJSON() +} diff --git a/models/user.go b/models/user.go index df2b4e9..ea773c9 100644 --- a/models/user.go +++ b/models/user.go @@ -55,15 +55,17 @@ return all,nil } -func (u *User) GetAllMapByPhone() map[string]User { +func (u *User) GetAllMapByPhone() (map[string]User, map[string]User) { m := make(map[string]User) + idM := make(map[string]User) all, _ := u.GetAllUsers() if all !=nil { for _,p := range all { m[p.PhoneNum] = p + idM[p.Id] = p } } - return m + return m, idM } func (u *User) Update() (int64, error) { @@ -89,3 +91,12 @@ o := orm.NewOrm() return o.Update(u, "isDelete") } + +func (u *User) Delete(id string) (int64, error) { + o := orm.NewOrm() + res, err := o.Raw("delete from sys_user where id=?", id).Exec() + if err != nil { + return 0, err + } + return res.RowsAffected() +} \ No newline at end of file diff --git a/routers/router.go b/routers/router.go index 105255c..4fd8880 100644 --- a/routers/router.go +++ b/routers/router.go @@ -56,6 +56,7 @@ beego.Router(preApi+"/user/delPlateNo", &controllers.UserController{}, "*:DelPlateNo") beego.Router(preApi+"/user/all", &controllers.UserController{}, "*:GetUserAll") + beego.Router(preApi+"/user/sync", &controllers.UserController{}, "*:Sync") beego.Router(preApi+"/car/crossRecord", &controllers.CarController{}, "*:CrossRecord") } diff --git a/service/carService.go b/service/carService.go index 964c706..a3c45e0 100644 --- a/service/carService.go +++ b/service/carService.go @@ -303,20 +303,32 @@ return list } -func SyncHikPerson() { +func SyncHikPerson() int { + syncCount := 0 sv := NewCarService() hikPersons := sv.GetHikPersonList() - if hikPersons != nil { + if hikPersons != nil && len(hikPersons) >0 { var u models.User - uMap := u.GetAllMapByPhone() + uMap,idMap := u.GetAllMapByPhone() + hikPM := make(map[string]string) for _,hp := range hikPersons { + hikPM[hp.PersonId] = hp.PersonId if sp,ok := uMap[hp.PhoneNo];ok { if sp.Id != hp.PersonId { u.SyncHikPersonId(hp.PhoneNo, hp.PersonId) + syncCount++ } } } + for k,_ := range idMap { + if _,in := hikPM[k];!in { + u.Delete(k) + syncCount++ + } + } + } + return syncCount } func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult { -- Gitblit v1.8.0