|
@@ -0,0 +1,143 @@
|
|
|
+package handler
|
|
|
+
|
|
|
+import (
|
|
|
+ "city_chips/internal/service"
|
|
|
+ "city_chips/pkg/helper/resp"
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+ "github.com/spf13/viper"
|
|
|
+ "github.com/tidwall/gjson"
|
|
|
+ "strconv"
|
|
|
+)
|
|
|
+
|
|
|
+type HikvisionHandler struct {
|
|
|
+ *Handler
|
|
|
+ hikvisionService service.HikvisionService
|
|
|
+ conf *viper.Viper
|
|
|
+}
|
|
|
+
|
|
|
+func NewHikvisionHandler(handler *Handler, hikvisionService service.HikvisionService, conf *viper.Viper) *HikvisionHandler {
|
|
|
+ return &HikvisionHandler{
|
|
|
+ Handler: handler,
|
|
|
+ hikvisionService: hikvisionService,
|
|
|
+ conf: conf,
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// GetHikvisionMonitoring 获取视频监控流{
|
|
|
+// "cameraIndexCode": "748d84750e3a4a5bbad3cd4af9ed5101",
|
|
|
+// "streamType": 0,
|
|
|
+// "protocol": "rtsp",
|
|
|
+// "transmode": 1,
|
|
|
+// "expand": "transcode=0",
|
|
|
+// "streamform": "ps"
|
|
|
+// }
|
|
|
+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"
|
|
|
+ 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)
|
|
|
+ //返回结果{
|
|
|
+ // "code": "0",
|
|
|
+ // "msg": "success",
|
|
|
+ // "data": {
|
|
|
+ // "url": "rtsp://10.2.145.66:655/EUrl/CLJ52BW"
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ if err != nil {
|
|
|
+ h.logger.Error("获取获取监控点资源失败")
|
|
|
+ resp.HandleError(ctx, 1201, "获取获取监控点资源失败", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if hikvision.Code != "0" {
|
|
|
+ atoi, _ := strconv.Atoi(hikvision.Code)
|
|
|
+ resp.HandleError(ctx, atoi, hikvision.Msg, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ marshalString, err := json.Marshal(hikvision)
|
|
|
+ if err != nil {
|
|
|
+ resp.HandleError(ctx, 1202, "json序列化失败", nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ url := gjson.Get(string(marshalString), "data.url")
|
|
|
+ resp.HandleSuccess(ctx, url)
|
|
|
+}
|
|
|
+
|
|
|
+// 视频监控云台控制{
|
|
|
+// "cameraIndexCode": "748d84750e3a4a5bbad3cd4af9ed5101",
|
|
|
+// "action": 1, 0-开始
|
|
|
+//1-停止
|
|
|
+//注:GOTO_PRESET命令下填任意值均可转到预置点,建议填0即可
|
|
|
+// "command": "GOTO_PRESET",
|
|
|
+// "speed": 4,
|
|
|
+// "presetIndex": 20
|
|
|
+//}
|
|
|
+
|
|
|
+func (h *HikvisionHandler) Gimbalcontrol(ctx *gin.Context) {
|
|
|
+ m := make(map[string]string)
|
|
|
+ cameraIndexCode := ctx.Query("cameraIndexCode")
|
|
|
+ command := ctx.Query("command")
|
|
|
+ action := ctx.Query("action")
|
|
|
+ speed := ctx.Query("speed")
|
|
|
+ presetIndex := ctx.Query("presetIndex")
|
|
|
+ m["cameraIndexCode"] = cameraIndexCode
|
|
|
+ m["action"] = action
|
|
|
+ m["command"] = command
|
|
|
+ m["speed"] = speed
|
|
|
+ m["presetIndex"] = presetIndex
|
|
|
+ if len(cameraIndexCode) <= 0 || len(command) <= 0 || len(action) <= 0 {
|
|
|
+ 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 {
|
|
|
+ h.logger.Error("控制云台失败")
|
|
|
+ resp.HandleError(ctx, 1201, "控制云台失败", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if hikvision.Code != "0" {
|
|
|
+ atoi, _ := strconv.Atoi(hikvision.Code)
|
|
|
+ resp.HandleError(ctx, atoi, hikvision.Msg, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp.HandleSuccess(ctx, hikvision.Msg)
|
|
|
+}
|
|
|
+
|
|
|
+// VisitorInfoCount 获取今日访客信息包含:今日来访总人数(已签离人数,未签离人数),预约人数
|
|
|
+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)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if hikvision.Code != "0" {
|
|
|
+ atoi, _ := strconv.Atoi(hikvision.Code)
|
|
|
+ resp.HandleError(c, atoi, hikvision.Msg, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp.HandleSuccess(c, hikvision.Data)
|
|
|
+}
|