123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- 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)
- }
|