From 4e3049e157cc0c3ac644078b5d3065777daf9ce6 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 28 七月 2020 15:44:00 +0800
Subject: [PATCH] fix get pageResult from hik

---
 service/carService.go |   62 ++++++++++++++++++++++++++++---
 1 files changed, 56 insertions(+), 6 deletions(-)

diff --git a/service/carService.go b/service/carService.go
index 3d8054f..2003b14 100644
--- a/service/carService.go
+++ b/service/carService.go
@@ -3,6 +3,7 @@
 import (
 	reqUtil "car-service/extend/util"
 	"car-service/models"
+	"car-service/vo"
 	"encoding/json"
 	"fmt"
 	"github.com/astaxie/beego"
@@ -232,24 +233,73 @@
 
 func (sv *CarService) GetHikPersonList() []HikPerson {
 	url := "/artemis/api/resource/v2/person/personList"
+	pageSize := 1000
 	reqBody := map[string]interface{} {
 		"pageNo": 1,
-		"pageSize": 1000,
+		"pageSize": pageSize,
 	}
+	pageResult := sv.getHikPageResult(url, reqBody)
+	if pageResult == nil {
+		return nil
+	}
+	b,err := json.Marshal(pageResult.List)
+	if err != nil {
+		fmt.Println("marshal pageResult.List err:", err)
+		return nil
+	}
+	var list []HikPerson
+	if err = json.Unmarshal(b, &list);err != nil {
+		fmt.Println("unmarshal err:", err)
+		return nil
+	}
+	if pageResult.Total > pageSize {
+		times := pageResult.Total / pageSize
+		if pageResult.Total % pageSize > 0 {
+			times++
+		}
+		for i:=1;i<times;i++ {
+			tpr := sv.getHikPageResult(url, map[string]interface{}{
+				"pageNo": i+1,
+				"pageSize": pageSize,
+			})
+			if tpr != nil {
+				tb,e := json.Marshal(tpr.List)
+				if e != nil {
+					fmt.Println("marshal tpr.List err:", e)
+					continue
+				}
+				var tprList []HikPerson
+				if e = json.Unmarshal(tb, &tprList);e ==nil {
+					list = append(list, tprList...)
+				} else {
+					fmt.Println("unmarshal tprList err:", e)
+				}
+			} else {
+				fmt.Println("total:", pageResult.Total, "tpr is nil")
+			}
+		}
+	}
+
+	return nil
+}
+
+func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult {
 	fmt.Println(url, reqBody)
 	result := sv.hikUtil.Post(url, reqBody)
 	if result.Code == reqUtil.HikResult_Success {
 		b, err := json.Marshal(result.Data)
 		if err == nil {
-			var list []HikPerson
-			if err = json.Unmarshal(b, &list);err == nil {
-				return list
+			var pageResult vo.HikPageResult
+			if err = json.Unmarshal(b, &pageResult); err == nil {
+				return &pageResult
 			} else {
-				fmt.Println("unmarshal err:", err)
+				fmt.Println("unmarshal pageResult err:", err)
 			}
 		} else {
-			fmt.Println("marshal err:", err)
+			fmt.Println("marshal result.Data err:", err)
 		}
+	} else {
+		fmt.Println("result.Code:", result.Code)
 	}
 	return nil
 }

--
Gitblit v1.8.0