Bladeren bron

模拟数据修改,入侵报警事件日志查询

huangyan 1 maand geleden
bovenliggende
commit
21e9a11584

+ 21 - 14
config/local.yml

@@ -35,21 +35,25 @@ lifang:
 
 #海康威视
 hikvision:
-  Ip: ""
-  Port: 0
-  AppKey: ""
-  Secret: ""
-  IsHttps: false
+  Ip: "10.1.80.1"
+  Port: 443
+  AppKey: "29491854"
+  Secret: "Vd1q7pNabJ2u4VlQVeoL"
+  IsHttps: true
   pageSize: 9999
   api:
-    nodesByParams: "/api/irds/v2/region/nodesByParams" #根据查询条件查询区域列表信息,主要用于区域信息查询过滤。相对V1接口,支持级联场景的区域查询
-    deviceResource: "/api/irds/v2/deviceResource/resources" #根据资源类型分页获取资源列表,主要用于资源信息的全量同步。
-    cameras: "/api/resource/v1/cameras"#分页获取监控点资源获取监控点列表接口可用来全量同步监控点信息,返回结果分页展示。
-    previewURLs: "/api/video/v2/cameras/previewURLs"#获取监控点预览取流URLv2
-    controlling: "/api/video/v1/ptzs/controlling" #根据监控点编号进行云台操作接口
-    visitorInfo: "/api/v1/visitorInfo/count" #获取今日访客信息包含:今日来访总人数(已签离人数,未签离人数),预约人数
-    doorSearch: "/api/resource/v2/door/search" #查询门禁设备列表接口
-    doorStates: "/api/acs/v1/door/states" #查询门禁设备状态接口
+    nodesByParams: "/artemis/api/irds/v2/region/nodesByParams" #根据查询条件查询区域列表信息,主要用于区域信息查询过滤。相对V1接口,支持级联场景的区域查询
+    deviceResource: "/artemis/api/irds/v2/deviceResource/resources" #根据资源类型分页获取资源列表,主要用于资源信息的全量同步。
+    cameras: "/artemis/api/resource/v1/cameras"#分页获取监控点资源获取监控点列表接口可用来全量同步监控点信息,返回结果分页展示。
+    previewURLs: "/artemis/api/video/v2/cameras/previewURLs"#获取监控点预览取流URLv2
+    controlling: "/artemis/api/video/v1/ptzs/controlling" #根据监控点编号进行云台操作接口
+    visitorInfo: "/artemis/api/v1/visitorInfo/count" #获取今日访客信息包含:今日来访总人数(已签离人数,未签离人数),预约人数
+    doorSearch: "/artemis/api/resource/v2/door/search" #查询门禁点列表v2
+    doorStates: "/artemis/api/acs/v1/door/states" #查询门禁设备状态接口
+    eventLogs: "/artemis/api/scpms/v2/eventLogs/searches" #入侵报警事件日志查询
+
+
+
 #会议系统
 conference:
   pageSize: 9999
@@ -63,4 +67,7 @@ conference:
   getRoomsByLocationId: "/meetingRoom/getRoomsByLocationId" #获取会议室数据
   meetingRoom: "/meetingRoom" #会议室详情
   location: "/location" #地点详情
-  meetingRoomStatus: "/meetingRoomStatus/home" #会议室状态
+  meetingRoomStatus: "/meetingRoomStatus/home" #会议室状态
+#广播系统
+broadcast:
+  pageSize: 9999

+ 3 - 3
internal/handler/accesscontrol.go

@@ -42,11 +42,11 @@ func (h *AccessControlHandler) GetAccessControl(ctx *gin.Context) {
 		}
 		deviceRanking = append(deviceRanking, ranking)
 	}
-	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("设备%v", i+1)
+	for i := 0; i < 30; i++ {
 		m2 := model.Device{
 			Id:    i + 1,
-			Name:  name,
+			Car:   model.GenerateLicensePlate(),
+			Name:  model.GetRandomItem(model.EntranceExitDeviceNames),
 			State: rand.Intn(2),
 			Date:  time.Now().Format("2006-01-02 15:04:05"),
 		}

+ 120 - 63
internal/handler/hikvision.go

@@ -284,19 +284,13 @@ func (h *HikvisionHandler) GetHikvisionMonitoring(ctx *gin.Context) {
 	m := make(map[string]string)
 	cameraIndexCode := ctx.Query("cameraIndexCode")
 	m["cameraIndexCode"] = cameraIndexCode
-	m["streamType"] = "0"
-	m["protocol"] = "rtsp"
-	m["transmode"] = "1"
-	m["expand"] = "transcode=0"
-	m["streamform"] = "ps"
+	m["protocol"] = "ws"
 	if len(cameraIndexCode) <= 0 || cameraIndexCode == "" {
 		resp.HandleError(ctx, 1203, "设备编码不能为空", nil)
 		return
 	}
-	fmt.Println(m)
-	resp.HandleSuccess(ctx, "rtsp://10.2.145.66:655/EUrl/CLJ52BW")
-	return
-	hikvision, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.cameras"), m, 15)
+	fmt.Println("cameraIndexCode", h.conf.GetString("hikvision.api.previewURLs"))
+	hikvision, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.previewURLs"), m, 15)
 	//返回结果{
 	//    "code": "0",
 	//    "msg": "success",
@@ -349,9 +343,6 @@ func (h *HikvisionHandler) Gimbalcontrol(ctx *gin.Context) {
 		resp.HandleError(ctx, 1203, "设备编码不能为空", nil)
 		return
 	}
-
-	resp.HandleSuccess(ctx, m)
-	return
 	hikvision, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.controlling"), m, 15)
 
 	if err != nil {
@@ -372,10 +363,7 @@ func (h *HikvisionHandler) VisitorInfoCount(c *gin.Context) {
 	m := make(map[string]string)
 	parkId := c.Query("parkId")
 	m["parkId"] = parkId
-	resp.HandleSuccess(c, "appointmentTotal: 1,    notSignOutTotal: 1,       signOutTotal: 1,        signTotal: 1,      orderCount: 1,        visitCount: 1,        visitCountForTemp: 1,  visitCountForOrder: 1,        signOutCount: 1,       notSignOutCount: 1")
-	return
 	hikvision, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.visitorInfo"), m, 15)
-
 	if err != nil {
 		h.logger.Error("获取访客信息失败")
 		resp.HandleError(c, 1201, "获取访客信息失败", err)
@@ -400,10 +388,11 @@ func (h *HikvisionHandler) GetDoorSearch(ctx *gin.Context) {
 	notify := ctx.Writer.CloseNotify()
 
 	var response model.Response
-	var doorlist []model.DoorList
+	//var doorlist []model.DoorList
+	//var doorResp model.DoorResp
 	m := make(map[string]string)
 	m["pageNo"] = "1"
-	m["pageSize"] = "1"
+	m["pageSize"] = "1000"
 
 	for conn {
 		select {
@@ -412,69 +401,100 @@ func (h *HikvisionHandler) GetDoorSearch(ctx *gin.Context) {
 			fmt.Println("断开连接")
 			return
 		default:
-			//hikvision, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.visitorInfo"), m, 15)
+			doorSearch, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.doorSearch"), m, 15)
+			if err != nil {
+				h.logger.Error("获取门禁点列表失败")
+				response.Code = 1203
+				response.Msg = "获取门禁点列表失败"
+				response.Data = nil
+				res, _ := json.Marshal(&response)
+				fmt.Fprintf(ctx.Writer, "data: %s\n\n", string(res))
+				ctx.Writer.Flush()
+				return
+			}
+			if doorSearch.Code != "0" {
+				response.Code = 1203
+				response.Msg = "获取门禁点列表失败"
+				response.Data = nil
+				res, _ := json.Marshal(&response)
+				fmt.Fprintf(ctx.Writer, "data: %s\n\n", string(res))
+				ctx.Writer.Flush()
+				conn = false
+				return
+			}
+			// 获取门禁状态
+			//doorIndexCodes := []string{""}
+			//for _, v := range doorResp.Data.List {
+			//	doorIndexCodes = append(doorIndexCodes, v.IndexCode)
+			//}
+			//data := map[string]string{
+			//	"doorIndexCodes": strings.Join(doorIndexCodes, ","),
+			//}
+			//doorStates, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.doorStates"), data, 15)
 			//if err != nil {
-			//	h.logger.Error("获取门禁点列表失败")
+			//	h.logger.Error("获取门禁状态失败")
 			//	response.Code = 1203
-			//	response.Msg = "获取门禁点列表失败"
+			//	response.Msg = "获取门禁状态失败"
 			//	response.Data = nil
 			//	res, _ := json.Marshal(&response)
 			//	fmt.Fprintf(ctx.Writer, "data: %s\n\n", string(res))
 			//	ctx.Writer.Flush()
+			//	conn = false
 			//	return
 			//}
-			//if hikvision.Code != "0" {
+			//if doorStates.Code != "0" {
 			//	response.Code = 1203
-			//	response.Msg = "获取门禁点列表失败"
+			//	response.Msg = "获取门禁状态失败"
 			//	response.Data = nil
 			//	res, _ := json.Marshal(&response)
 			//	fmt.Fprintf(ctx.Writer, "data: %s\n\n", string(res))
 			//	ctx.Writer.Flush()
-			//  conn = false
+			//	conn = false
 			//	return
 			//}
-			for i := 0; i < 3; i++ {
-				genUUID := uuid.GenUUID()
-				name := fmt.Sprintf("资源:%v", i+1)
-
-				list := model.DoorList{
-					IndexCode:       genUUID,
-					ResourceType:    "door",
-					Name:            name,
-					DoorNo:          genUUID,
-					ChannelNo:       genUUID,
-					ParentIndexCode: genUUID,
-					ControlOneId:    genUUID,
-					ControlTwoId:    genUUID,
-					ReaderInId:      genUUID,
-					ReaderOutId:     genUUID,
-					DoorSerial:      i + 1,
-					TreatyType:      genUUID,
-					RegionIndexCode: genUUID,
-					RegionPath:      genUUID,
-					CreateTime:      time.Now().Format("2006-01-02 15:04:05"),
-					UpdateTime:      time.Now().Format("2006-01-02 15:04:05"),
-					Description:     genUUID,
-					ChannelType:     genUUID,
-					RegionName:      genUUID,
-					RegionPathName:  genUUID,
-					InstallLocation: genUUID,
-				}
-				doorlist = append(doorlist, list)
-			}
-			doorResp := model.DoorResp{
-				Code: "0",
-				Msg:  "SUCCESS",
-				Data: struct {
-					Total    int              `json:"total"`
-					PageNo   int              `json:"pageNo"`
-					PageSize int              `json:"pageSize"`
-					List     []model.DoorList `json:"list"`
-				}{Total: 3, PageNo: 1, PageSize: 1, List: doorlist},
-			}
+			//
+			//for i := 0; i < 3; i++ {
+			//	genUUID := uuid.GenUUID()
+			//	name := fmt.Sprintf("资源:%v", i+1)
+			//
+			//	list := model.DoorList{
+			//		IndexCode:       genUUID,
+			//		ResourceType:    "door",
+			//		Name:            name,
+			//		DoorNo:          genUUID,
+			//		ChannelNo:       genUUID,
+			//		ParentIndexCode: genUUID,
+			//		ControlOneId:    genUUID,
+			//		ControlTwoId:    genUUID,
+			//		ReaderInId:      genUUID,
+			//		ReaderOutId:     genUUID,
+			//		DoorSerial:      i + 1,
+			//		TreatyType:      genUUID,
+			//		RegionIndexCode: genUUID,
+			//		RegionPath:      genUUID,
+			//		CreateTime:      time.Now().Format("2006-01-02 15:04:05"),
+			//		UpdateTime:      time.Now().Format("2006-01-02 15:04:05"),
+			//		Description:     genUUID,
+			//		ChannelType:     genUUID,
+			//		RegionName:      genUUID,
+			//		RegionPathName:  genUUID,
+			//		InstallLocation: genUUID,
+			//	}
+			//	doorlist = append(doorlist, list)
+			//}
+			//doorResp := model.DoorResp{
+			//	Code: "0",
+			//	Msg:  "SUCCESS",
+			//	Data: struct {
+			//		Total    int              `json:"total"`
+			//		PageNo   int              `json:"pageNo"`
+			//		PageSize int              `json:"pageSize"`
+			//		List     []model.DoorList `json:"list"`
+			//	}{Total: 3, PageNo: 1, PageSize: 1, List: doorlist},
+			//}
 			response.Code = 200
 			response.Msg = "获取门禁点列表成功"
-			response.Data = doorResp.Data
+			response.Data = doorSearch.Data
 			res, _ := json.Marshal(&response)
 			fmt.Fprintf(ctx.Writer, "data: %s\n\n", string(res))
 			ctx.Writer.Flush()
@@ -552,3 +572,40 @@ func (h *HikvisionHandler) DoControl(ctx *gin.Context) {
 		}
 	}
 }
+
+// RealTimeInspection 入侵报警事件日志查询
+func (h *HikvisionHandler) RealTimeInspection(ctx *gin.Context) {
+	m := make(map[string]string)
+	m["startTime"] = ctx.Query("startTime") //开始时间
+	m["endTime"] = ctx.Query("endTime")     //结束时间
+	m["pageNo"] = ctx.Query("pageNo")
+	m["pageSize"] = h.conf.GetString("hikvision.pageSize")
+	var eventLogs model.EventLogs
+	hikvision, err := h.hikvisionService.Hikvision(h.conf.GetString("hikvision.api.eventLogs"), m, 15)
+	if err != nil {
+		h.logger.Error("入侵报警事件日志查询失败")
+		resp.HandleError(ctx, 1203, "入侵报警事件日志查询失败", nil)
+		return
+	}
+	if hikvision.Code != "0" {
+		h.logger.Error("入侵报警事件日志查询失败")
+		resp.HandleError(ctx, 1203, "入侵报警事件日志查询失败", nil)
+		return
+	}
+	marshal, err := json.Marshal(hikvision)
+	if err != nil {
+		h.logger.Error("json序列化失败")
+		resp.HandleError(ctx, 1203, "json序列化失败", nil)
+		return
+	}
+	err = json.Unmarshal(marshal, &eventLogs)
+	if err != nil {
+		h.logger.Error("json反序列化失败")
+		resp.HandleError(ctx, 1203, "json反序列化失败", nil)
+		return
+	}
+	for i, _ := range eventLogs.Data.List {
+		eventLogs.Data.List[i].SrcType = model.ResourceType[eventLogs.Data.List[i].SrcType]
+	}
+	resp.HandleSuccess(ctx, hikvision.Data)
+}

+ 15 - 20
internal/handler/information.go

@@ -7,6 +7,7 @@ import (
 	"github.com/gin-gonic/gin"
 	"github.com/spf13/viper"
 	"math/rand"
+	"time"
 )
 
 type InformationHandler struct {
@@ -33,7 +34,7 @@ func (h *InformationHandler) GetInformation(ctx *gin.Context) {
 	readings := make(map[string]any)
 	var Large []model.LargeController
 	var information []model.InformationCount
-	for i := 0; i < 10; i++ {
+	for i := 0; i < 20; i++ {
 		records := model.LargeController{
 			Id:         i + 1,
 			DeviceName: model.LargeScreenNames[i],
@@ -41,28 +42,22 @@ func (h *InformationHandler) GetInformation(ctx *gin.Context) {
 		}
 		Large = append(Large, records)
 	}
-	for i := 0; i < 4; i++ {
+	for i := 0; i < 20; i++ {
 		count := model.InformationCount{
-			Id:              i + 1,
-			InformationType: model.InfoTypes[rand.Intn(len(model.InfoTypes)-1)],
-			Vale:            rand.Intn(1000),
+			Id:         i + 1,
+			DeviceName: model.GetRandomItem(model.LargeScreenNames),
+			State:      rand.Intn(2),
+			Date:       time.Now().Format("2006-01-02 15:04:05"),
 		}
 		information = append(information, count)
 	}
-	readings["Under30"] = rand.Intn(1000)      //30以下
-	readings["Under30And40"] = rand.Intn(1000) //30-40
-	readings["Under40And50"] = rand.Intn(1000) //40-50
-	readings["Under50And60"] = rand.Intn(1000) //50-60
-	readings["More60"] = rand.Intn(1000)       //60以上
-	m["LargeScreen"] = rand.Intn(1000)         //大屏总数
-	m["Normal"] = rand.Intn(1000)              //大屏正常数
-	m["Fault"] = rand.Intn(1000)               //大屏故障数
-	m["Idle"] = rand.Intn(1000)                //大屏空闲数
-	m["UrgentNotice"] = rand.Intn(1000)        //紧急通知
-	m["Policy"] = rand.Intn(1000)              //政策法规
-	m["Activity"] = rand.Intn(1000)            //活动预告
-	m["Large"] = Large                         //大屏控制
-	m["Information"] = information             //进入信息占比
-	m["Readings"] = readings                   //车辆出入记录
+	readings["online"] = rand.Intn(100)  //在线率
+	readings["unline"] = rand.Intn(1000) //离线率
+	m["LargeScreen"] = rand.Intn(1000)   //大屏总数
+	m["Normal"] = rand.Intn(1000)        //大屏正常数
+	m["Fault"] = rand.Intn(1000)         //大屏故障数
+	m["Idle"] = rand.Intn(1000)          //大屏空闲数
+	m["Large"] = Large                   //大屏控制
+	m["Information"] = information       //进入信息占比
 	resp.HandleSuccess(ctx, m)
 }

+ 2 - 2
internal/handler/property.go

@@ -65,9 +65,9 @@ func (h *PropertyHandler) GetProperty(ctx *gin.Context) {
 			Date:  time.Now().Format("2006-01-02 15:04:05"),
 		}
 		records := model.GarRecords{
-			GarName: model.GenerateLicensePlate(),
+			GarName: model.GetRandomItem(model.Names),
 			State:   0,
-			GarImag: "https://img95.699pic.com/photo/40041/1120.jpg_wh860.jpg",
+			Context: model.GetRandomItem(model.ResidentToPropertyContents),
 			Date:    time.Now().Format("2006-01-02 15:04:05"),
 		}
 		garRecords = append(garRecords, records)

+ 129 - 21
internal/model/hikvision.go

@@ -18,6 +18,7 @@ type RealTimeInspection struct {
 }
 type Device struct {
 	Id    int    `json:"Id"`
+	Car   string `json:"Car"`   //车牌号
 	Name  string `json:"Name"`  //名称
 	State int    `json:"State"` //状态
 	Date  string `json:"Date"`  //事件-列3
@@ -64,27 +65,27 @@ type DoorResp struct {
 	} `json:"data"`
 }
 type DoorList struct {
-	IndexCode       string `json:"indexCode"`
-	ResourceType    string `json:"resourceType"`
-	Name            string `json:"name"`
-	DoorNo          string `json:"doorNo"`
-	ChannelNo       string `json:"channelNo"`
-	ParentIndexCode string `json:"parentIndexCode"`
-	ControlOneId    string `json:"controlOneId"`
-	ControlTwoId    string `json:"controlTwoId"`
-	ReaderInId      string `json:"readerInId"`
-	ReaderOutId     string `json:"readerOutId"`
-	DoorSerial      int    `json:"doorSerial"`
-	TreatyType      string `json:"treatyType"`
-	RegionIndexCode string `json:"regionIndexCode"`
-	RegionPath      string `json:"regionPath"`
-	CreateTime      string `json:"createTime"`
-	UpdateTime      string `json:"updateTime"`
-	Description     string `json:"description"`
-	ChannelType     string `json:"channelType"`
-	RegionName      string `json:"regionName"`
-	RegionPathName  string `json:"regionPathName"`
-	InstallLocation string `json:"installLocation"`
+	IndexCode       string `json:"indexCode"`       //资源唯一编码
+	ResourceType    string `json:"resourceType"`    //资源类型
+	Name            string `json:"name"`            //资源名称
+	DoorNo          string `json:"doorNo"`          //门禁点编号
+	ChannelNo       string `json:"channelNo"`       //通道号
+	ParentIndexCode string `json:"parentIndexCode"` //父资源索引
+	ControlOneId    string `json:"controlOneId"`    //一级控制器id
+	ControlTwoId    string `json:"controlTwoId"`    //二级控制器id
+	ReaderInId      string `json:"readerInId"`      //读卡器1
+	ReaderOutId     string `json:"readerOutId"`     //读卡器2
+	DoorSerial      int    `json:"doorSerial"`      //门序号
+	TreatyType      string `json:"treatyType"`      //接入协议
+	RegionIndexCode string `json:"regionIndexCode"` //所属区域
+	RegionPath      string `json:"regionPath"`      //所属区域目录,以@符号分割,包含本节点
+	CreateTime      string `json:"createTime"`      //创建时间
+	UpdateTime      string `json:"updateTime"`      //更新时间
+	Description     string `json:"description"`     //描述
+	ChannelType     string `json:"channelType"`     //通道类型
+	RegionName      string `json:"regionName"`      //区域名称
+	RegionPathName  string `json:"regionPathName"`  //区域目录名称
+	InstallLocation string `json:"installLocation"` //安装位置
 }
 type Response struct {
 	RequestId string `protobuf:"bytes,1,opt,name=requestId,proto3" json:"requestId,omitempty"`
@@ -102,6 +103,113 @@ type DoControlData struct {
 	ControlResultCode int    `json:"controlResultCode"`
 	ControlResultDesc string `json:"controlResultDesc"`
 }
+type Doorstates struct {
+	Code string `json:"code"`
+	Msg  string `json:"msg"`
+	Data struct {
+		AuthDoorList []struct {
+			DoorIndexCode string `json:"doorIndexCode"` //门禁点indexCode
+			DoorState     int    `json:"doorState"`     //门状态,0 初始状态,1 开门状态,2关门状态,3离线状态
+		} `json:"authDoorList"`
+		NoAuthDoorIndexCodeList []string `json:"noAuthDoorIndexCodeList"` //没有权限的门禁点集合
+	} `json:"data"`
+}
+
+// DeviceResource 设备资源
+type DeviceResource struct {
+	Code string `json:"code"`
+	Msg  string `json:"msg"`
+	Data struct {
+		Total    int `json:"total"`
+		PageNo   int `json:"pageNo"`
+		PageSize int `json:"pageSize"`
+		List     []struct {
+			IndexCode        string `json:"indexCode"`
+			Name             string `json:"name"`
+			ResourceType     string `json:"resourceType"`
+			DoorNo           string `json:"doorNo"`
+			Description      string `json:"description"`
+			ParentIndexCodes string `json:"parentIndexCodes"`
+			RegionIndexCode  string `json:"regionIndexCode"`
+			RegionPath       string `json:"regionPath"`
+			ChannelType      string `json:"channelType"`
+			ChannelNo        string `json:"channelNo"`
+			InstallLocation  string `json:"installLocation"`
+			CapabilitySet    string `json:"capabilitySet"`
+			ControlOneId     string `json:"controlOneId"`
+			ControlTwoId     string `json:"controlTwoId"`
+			ReaderInId       string `json:"readerInId"`
+			ReaderOutId      string `json:"readerOutId"`
+			ComId            string `json:"comId"`
+			CreateTime       string `json:"createTime"`
+			UpdateTime       string `json:"updateTime"`
+		} `json:"list"`
+	} `json:"data"`
+}
+type EventLogs struct {
+	Code string `json:"code"`
+	Msg  string `json:"msg"`
+	Data struct {
+		Total    int `json:"total"`
+		PageNo   int `json:"pageNo"`
+		PageSize int `json:"pageSize"`
+		List     []struct {
+			EventId   string `json:"eventId"`
+			StartTime string `json:"startTime"`
+			EndTime   string `json:"endTime"`
+			EventType int    `json:"eventType"`
+			SrcIndex  string `json:"srcIndex"`
+			SrcName   string `json:"srcName"`
+			SrcType   string `json:"srcType"`
+			RegionId  string `json:"regionId"`
+			Status    int    `json:"status"`
+		} `json:"list"`
+	} `json:"data"`
+}
+
+var ResourceType = map[string]string{
+	"region":                "区域",
+	"acsDevice":             "门禁控制器",
+	"door":                  "门禁点",
+	"reader":                "门禁读卡器",
+	"encodeDevice":          "编码设备",
+	"camera":                "监控点",
+	"ioIn":                  "报警输入",
+	"ioOut":                 "报警输出",
+	"iasDevice":             "入侵报警-报警主机",
+	"subSys":                "入侵报警-子系统",
+	"defence":               "入侵报警-防区通道",
+	"radarDevice":           "入侵报警-雷达设备",
+	"visDevice":             "可视对讲设备",
+	"visDeviceInDoor":       "可视对讲-室内机",
+	"visDeviceOutDoor":      "可视对讲-门口机",
+	"visDeviceWallDoor":     "可视对讲-围墙机",
+	"visDeviceManager":      "可视对讲-管理机",
+	"ecsDevice":             "梯控-控制器",
+	"ladderCardReader":      "梯控-读卡器",
+	"floor":                 "梯控-楼层",
+	"peDevice":              "动环设备",
+	"pemsIoOut":             "动环-开关量",
+	"transducer":            "动环-传感器",
+	"sensor":                "动环-环境量",
+	"snapCamera":            "停车场-抓拍机",
+	"led":                   "停车场-显示屏",
+	"inoutControl":          "停车场-出入口控制机",
+	"barrierGate":           "停车场-道闸",
+	"bluetoothReader":       "停车场-蓝牙读卡器",
+	"rfiReader":             "停车场-远距离读卡器",
+	"guideManager":          "停车场-诱导管理器",
+	"guideLed":              "停车场-诱导/引导屏幕",
+	"geoManage":             "停车场-地磁管理器",
+	"monitoringPointDevice": "园区-卡口设备",
+	"monitoringPoint":       "园区-卡口点",
+	"gardenLed":             "园区-显示屏",
+	"emerdevice":            "紧急报警设备",
+	"talk":                  "对讲通道",
+	"electricLock":          "电锁",
+	"alarmLamp":             "警灯",
+	"siren":                 "警号",
+}
 
 func (m *Hikvision) TableName() string {
 	return "hikvision"

+ 4 - 3
internal/model/information.go

@@ -11,9 +11,10 @@ type LargeController struct {
 	UseState   int    `json:"UseState"`   //设备使用状态
 }
 type InformationCount struct {
-	Id              int    `json:"id"`
-	InformationType string `json:"InformationType"` //信息发布类型
-	Vale            int    `json:"UseState"`        //占比
+	Id         int    `json:"id"`
+	DeviceName string `json:"DeviceName"` //设备名称
+	State      int    `json:"State"`      //设备使用状态
+	Date       string `json:"Date"`       //日期
 }
 
 func (m *Information) TableName() string {

+ 40 - 0
internal/model/mock.go

@@ -214,6 +214,46 @@ var MJalarmContents = []string{
 	"人脸识别失败,权限不足。",
 	"紧急出口被激活。",
 }
+var EntranceExitDeviceNames = []string{
+	"主入口闸机",
+	"副出口读卡器",
+	"东侧员工通道控制器",
+	"西侧访客登记终端",
+	"南门人脸识别闸机",
+	"北侧紧急疏散控制面板",
+	"一楼大厅出入口管理器",
+	"二楼VIP通道门禁终端",
+	"三楼办公区入口识别器",
+	"四楼数据中心闸机",
+	"地下停车场入口控制器",
+	"地上一层出口感应器",
+	"消防通道门磁控制器",
+	"电梯厅出入口读卡器",
+	"贵宾专用通道闸机",
+	"无障碍通道升降平台控制器",
+	"自动旋转门控制系统",
+	"玻璃门电控锁装置",
+	"人行通道翼闸机",
+	"车辆道闸控制系统",
+}
+
+var ResidentToPropertyContents = []string{
+	"广播系统今天早上启动后声音不稳定,请检查。",
+	"公共区域广播设备好像没有上线,是否在维护中?",
+	"背景音乐播放测试未完成,可能影响楼层氛围。",
+	"3楼分区扬声器一直无响应,影响紧急通知传达。",
+	"功率放大器出现过热警告,请注意消防安全。",
+	"消防中心发出的广播信号未被接收,请排查故障。",
+	"背景音乐频繁暂停,是否有设置问题?",
+	"广播系统网络中断,已持续超过一小时。",
+	"设备配置更新后广播仍无法正常使用。",
+	"紧急广播触发后覆盖范围不全,存在盲区。",
+	"音频文件加载失败,是否是服务器问题?",
+	"麦克风输入异常,访客呼叫听不到声音。",
+	"广播设备离线,请尽快恢复通讯。",
+	"音量调节到75%,但实际声音偏小。",
+	"定时广播任务未执行,请查看日志记录。",
+}
 
 // 生成随机电话号码
 func GeneratePhoneNumber() string {

+ 1 - 0
internal/model/property.go

@@ -19,6 +19,7 @@ type GarRecords struct {
 	GarName string `json:"GarName"` //车牌
 	State   int    `json:"State"`   //状态
 	GarImag string `json:"GarImag"` //图片
+	Context string `json:"Context"` //详情
 	Date    string `json:"Date"`    //时间
 }
 type Garage struct {

+ 3 - 4
internal/server/http.go

@@ -2,7 +2,6 @@ package server
 
 import (
 	"city_chips/internal/handler"
-	"city_chips/internal/middleware"
 	"city_chips/pkg/log"
 
 	"github.com/gin-gonic/gin"
@@ -24,9 +23,9 @@ func NewServerHTTP(
 ) *gin.Engine {
 	gin.SetMode(gin.ReleaseMode)
 	r := gin.Default()
-	r.Use(
-		middleware.CORSMiddleware(),
-	)
+	//r.Use(
+	//	middleware.CORSMiddleware(),
+	//)
 	//出入口控制系统
 	Access := r.Group("/Access")
 	{

+ 28 - 0
internal/service/hikvision.go

@@ -1,7 +1,10 @@
 package service
 
 import (
+	"city_chips/internal/model"
 	"city_chips/internal/repository"
+	"encoding/json"
+	"errors"
 	"github.com/spf13/viper"
 	"github.com/zxbit2011/hikvisionOpenAPIGo"
 )
@@ -36,3 +39,28 @@ func (s *hikvisionService) Hikvision(url string, body map[string]string, timeout
 	result, err := config.HttpPost(url, body, timeout)
 	return result, err
 }
+
+// DeviceResource 根据设备类型获取设备资源
+func (s *hikvisionService) DeviceResource(Device string) (error, model.DeviceResource) {
+	var deviceResource model.DeviceResource
+	m := make(map[string]string)
+	m["pageNo"] = "1"
+	m["pageSize"] = s.conf.GetString("hikvision.pageSize")
+	m["resourceType"] = Device
+	hikvision, err := s.Hikvision(s.conf.GetString("hikvision.api.deviceResource"), m, 15)
+	if err != nil {
+		return errors.New("获取设备资源失败"), deviceResource
+	}
+	if hikvision.Code != "0" {
+		return errors.New("获取设备资源失败"), deviceResource
+	}
+	marshalString, err := json.Marshal(hikvision)
+	if err != nil {
+		return errors.New("json序列化失败"), deviceResource
+	}
+	err = json.Unmarshal(marshalString, &deviceResource)
+	if err != nil {
+		return errors.New("json反序列化失败"), deviceResource
+	}
+	return nil, deviceResource
+}

+ 10 - 0
web/index.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+<h1>Hello World</h1>
+</body>
+</html>