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