|
|
|
@ -1,6 +1,7 @@
|
|
|
|
package main
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
import (
|
|
|
|
|
|
|
|
"database/sql"
|
|
|
|
"fmt"
|
|
|
|
"fmt"
|
|
|
|
"net/http"
|
|
|
|
"net/http"
|
|
|
|
"time"
|
|
|
|
"time"
|
|
|
|
@ -9,6 +10,30 @@ import (
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// getStringValue 获取sql.NullString的值
|
|
|
|
|
|
|
|
func getStringValue(ns sql.NullString) string {
|
|
|
|
|
|
|
|
if ns.Valid {
|
|
|
|
|
|
|
|
return ns.String
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// getInt64Value 获取sql.NullInt64的值
|
|
|
|
|
|
|
|
func getInt64Value(ni sql.NullInt64) int64 {
|
|
|
|
|
|
|
|
if ni.Valid {
|
|
|
|
|
|
|
|
return ni.Int64
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// getTimeValue 获取sql.NullTime的值
|
|
|
|
|
|
|
|
func getTimeValue(nt sql.NullTime) time.Time {
|
|
|
|
|
|
|
|
if nt.Valid {
|
|
|
|
|
|
|
|
return nt.Time
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return time.Time{}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// CameraRequest 摄像头请求结构
|
|
|
|
// CameraRequest 摄像头请求结构
|
|
|
|
type CameraRequest struct {
|
|
|
|
type CameraRequest struct {
|
|
|
|
Name string `json:"name" binding:"required"`
|
|
|
|
Name string `json:"name" binding:"required"`
|
|
|
|
@ -82,23 +107,23 @@ func HTTPAPIServerCameras(c *gin.Context) {
|
|
|
|
CameraID: camera.CameraID,
|
|
|
|
CameraID: camera.CameraID,
|
|
|
|
IP: camera.IP,
|
|
|
|
IP: camera.IP,
|
|
|
|
Port: camera.Port,
|
|
|
|
Port: camera.Port,
|
|
|
|
Username: camera.Username,
|
|
|
|
Username: getStringValue(camera.Username),
|
|
|
|
Password: camera.Password,
|
|
|
|
Password: getStringValue(camera.Password),
|
|
|
|
URL: camera.URL,
|
|
|
|
URL: camera.URL,
|
|
|
|
CameraProduce: camera.CameraProduce,
|
|
|
|
CameraProduce: getStringValue(camera.CameraProduce),
|
|
|
|
CameraName: camera.CameraName,
|
|
|
|
CameraName: getStringValue(camera.CameraName),
|
|
|
|
DeviceType: camera.DeviceType,
|
|
|
|
DeviceType: getStringValue(camera.DeviceType),
|
|
|
|
UnitCode: camera.UnitCode,
|
|
|
|
UnitCode: getStringValue(camera.UnitCode),
|
|
|
|
NvrProduce: camera.NvrProduce,
|
|
|
|
NvrProduce: getStringValue(camera.NvrProduce),
|
|
|
|
NvrPath: camera.NvrPath,
|
|
|
|
NvrPath: getStringValue(camera.NvrPath),
|
|
|
|
PlayBack: camera.PlayBack,
|
|
|
|
PlayBack: getStringValue(camera.PlayBack),
|
|
|
|
DelFlag: camera.DelFlag,
|
|
|
|
DelFlag: camera.DelFlag,
|
|
|
|
CreateBy: camera.CreateBy,
|
|
|
|
CreateBy: getStringValue(camera.CreateBy),
|
|
|
|
CreateTime: camera.CreateTime,
|
|
|
|
CreateTime: getTimeValue(camera.CreateTime),
|
|
|
|
UpdateBy: camera.UpdateBy,
|
|
|
|
UpdateBy: getStringValue(camera.UpdateBy),
|
|
|
|
UpdateTime: camera.UpdateTime,
|
|
|
|
UpdateTime: getTimeValue(camera.UpdateTime),
|
|
|
|
UserID: camera.UserID,
|
|
|
|
UserID: getInt64Value(camera.UserID),
|
|
|
|
DeptID: camera.DeptID,
|
|
|
|
DeptID: getInt64Value(camera.DeptID),
|
|
|
|
StreamStatus: streamStatus,
|
|
|
|
StreamStatus: streamStatus,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
responses = append(responses, response)
|
|
|
|
responses = append(responses, response)
|
|
|
|
@ -156,23 +181,23 @@ func HTTPAPIServerCamerasByUnitCode(c *gin.Context) {
|
|
|
|
CameraID: camera.CameraID,
|
|
|
|
CameraID: camera.CameraID,
|
|
|
|
IP: camera.IP,
|
|
|
|
IP: camera.IP,
|
|
|
|
Port: camera.Port,
|
|
|
|
Port: camera.Port,
|
|
|
|
Username: camera.Username,
|
|
|
|
Username: getStringValue(camera.Username),
|
|
|
|
Password: camera.Password,
|
|
|
|
Password: getStringValue(camera.Password),
|
|
|
|
URL: camera.URL,
|
|
|
|
URL: camera.URL,
|
|
|
|
CameraProduce: camera.CameraProduce,
|
|
|
|
CameraProduce: getStringValue(camera.CameraProduce),
|
|
|
|
CameraName: camera.CameraName,
|
|
|
|
CameraName: getStringValue(camera.CameraName),
|
|
|
|
DeviceType: camera.DeviceType,
|
|
|
|
DeviceType: getStringValue(camera.DeviceType),
|
|
|
|
UnitCode: camera.UnitCode,
|
|
|
|
UnitCode: getStringValue(camera.UnitCode),
|
|
|
|
NvrProduce: camera.NvrProduce,
|
|
|
|
NvrProduce: getStringValue(camera.NvrProduce),
|
|
|
|
NvrPath: camera.NvrPath,
|
|
|
|
NvrPath: getStringValue(camera.NvrPath),
|
|
|
|
PlayBack: camera.PlayBack,
|
|
|
|
PlayBack: getStringValue(camera.PlayBack),
|
|
|
|
DelFlag: camera.DelFlag,
|
|
|
|
DelFlag: camera.DelFlag,
|
|
|
|
CreateBy: camera.CreateBy,
|
|
|
|
CreateBy: getStringValue(camera.CreateBy),
|
|
|
|
CreateTime: camera.CreateTime,
|
|
|
|
CreateTime: getTimeValue(camera.CreateTime),
|
|
|
|
UpdateBy: camera.UpdateBy,
|
|
|
|
UpdateBy: getStringValue(camera.UpdateBy),
|
|
|
|
UpdateTime: camera.UpdateTime,
|
|
|
|
UpdateTime: getTimeValue(camera.UpdateTime),
|
|
|
|
UserID: camera.UserID,
|
|
|
|
UserID: getInt64Value(camera.UserID),
|
|
|
|
DeptID: camera.DeptID,
|
|
|
|
DeptID: getInt64Value(camera.DeptID),
|
|
|
|
StreamStatus: streamStatus,
|
|
|
|
StreamStatus: streamStatus,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
responses = append(responses, response)
|
|
|
|
responses = append(responses, response)
|
|
|
|
@ -206,19 +231,19 @@ func HTTPAPIServerCameraAdd(c *gin.Context) {
|
|
|
|
camera := Camera{
|
|
|
|
camera := Camera{
|
|
|
|
IP: req.IP,
|
|
|
|
IP: req.IP,
|
|
|
|
Port: 554, // 默认RTSP端口
|
|
|
|
Port: 554, // 默认RTSP端口
|
|
|
|
Username: req.Username,
|
|
|
|
Username: sql.NullString{String: req.Username, Valid: req.Username != ""},
|
|
|
|
Password: req.Password,
|
|
|
|
Password: sql.NullString{String: req.Password, Valid: req.Password != ""},
|
|
|
|
URL: req.RTSPURL,
|
|
|
|
URL: req.RTSPURL,
|
|
|
|
CameraName: req.Name,
|
|
|
|
CameraName: sql.NullString{String: req.Name, Valid: true},
|
|
|
|
DeviceType: "网络摄像头",
|
|
|
|
DeviceType: sql.NullString{String: "网络摄像头", Valid: true},
|
|
|
|
UnitCode: "DEFAULT", // 默认单位代码
|
|
|
|
UnitCode: sql.NullString{String: "DEFAULT", Valid: true}, // 默认单位代码
|
|
|
|
DelFlag: "0",
|
|
|
|
DelFlag: "0",
|
|
|
|
CreateBy: "admin",
|
|
|
|
CreateBy: sql.NullString{String: "admin", Valid: true},
|
|
|
|
CreateTime: time.Now(),
|
|
|
|
CreateTime: sql.NullTime{Time: time.Now(), Valid: true},
|
|
|
|
UpdateBy: "admin",
|
|
|
|
UpdateBy: sql.NullString{String: "admin", Valid: true},
|
|
|
|
UpdateTime: time.Now(),
|
|
|
|
UpdateTime: sql.NullTime{Time: time.Now(), Valid: true},
|
|
|
|
UserID: 1,
|
|
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
|
|
DeptID: 1,
|
|
|
|
DeptID: sql.NullInt64{Int64: 1, Valid: true},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 保存到数据库
|
|
|
|
// 保存到数据库
|
|
|
|
@ -314,12 +339,12 @@ func HTTPAPIServerCameraUpdate(c *gin.Context) {
|
|
|
|
// 更新摄像头信息 - 适配qsc_camera表
|
|
|
|
// 更新摄像头信息 - 适配qsc_camera表
|
|
|
|
updatedCamera := *existingCamera // 复制现有摄像头信息
|
|
|
|
updatedCamera := *existingCamera // 复制现有摄像头信息
|
|
|
|
updatedCamera.IP = req.IP
|
|
|
|
updatedCamera.IP = req.IP
|
|
|
|
updatedCamera.Username = req.Username
|
|
|
|
updatedCamera.Username = sql.NullString{String: req.Username, Valid: req.Username != ""}
|
|
|
|
updatedCamera.Password = req.Password
|
|
|
|
updatedCamera.Password = sql.NullString{String: req.Password, Valid: req.Password != ""}
|
|
|
|
updatedCamera.URL = req.RTSPURL
|
|
|
|
updatedCamera.URL = req.RTSPURL
|
|
|
|
updatedCamera.CameraName = req.Name
|
|
|
|
updatedCamera.CameraName = sql.NullString{String: req.Name, Valid: true}
|
|
|
|
updatedCamera.UpdateBy = "admin"
|
|
|
|
updatedCamera.UpdateBy = sql.NullString{String: "admin", Valid: true}
|
|
|
|
updatedCamera.UpdateTime = time.Now()
|
|
|
|
updatedCamera.UpdateTime = sql.NullTime{Time: time.Now(), Valid: true}
|
|
|
|
|
|
|
|
|
|
|
|
// 更新数据库
|
|
|
|
// 更新数据库
|
|
|
|
err = Storage.dbManager.UpdateCamera(&updatedCamera)
|
|
|
|
err = Storage.dbManager.UpdateCamera(&updatedCamera)
|
|
|
|
@ -465,19 +490,19 @@ func HTTPAPIServerCameraGet(c *gin.Context) {
|
|
|
|
|
|
|
|
|
|
|
|
response := CameraResponse{
|
|
|
|
response := CameraResponse{
|
|
|
|
CameraID: camera.CameraID,
|
|
|
|
CameraID: camera.CameraID,
|
|
|
|
CameraName: camera.CameraName,
|
|
|
|
CameraName: getStringValue(camera.CameraName),
|
|
|
|
IP: camera.IP,
|
|
|
|
IP: camera.IP,
|
|
|
|
Port: camera.Port,
|
|
|
|
Port: camera.Port,
|
|
|
|
Username: camera.Username,
|
|
|
|
Username: getStringValue(camera.Username),
|
|
|
|
// Password: camera.Password, // 不返回密码
|
|
|
|
// Password: camera.Password, // 不返回密码
|
|
|
|
URL: camera.URL,
|
|
|
|
URL: camera.URL,
|
|
|
|
CameraProduce: camera.CameraProduce,
|
|
|
|
CameraProduce: getStringValue(camera.CameraProduce),
|
|
|
|
DeviceType: camera.DeviceType,
|
|
|
|
DeviceType: getStringValue(camera.DeviceType),
|
|
|
|
UnitCode: camera.UnitCode,
|
|
|
|
UnitCode: getStringValue(camera.UnitCode),
|
|
|
|
NvrProduce: camera.NvrProduce,
|
|
|
|
NvrProduce: getStringValue(camera.NvrProduce),
|
|
|
|
StreamStatus: status,
|
|
|
|
StreamStatus: status,
|
|
|
|
CreateTime: camera.CreateTime,
|
|
|
|
CreateTime: getTimeValue(camera.CreateTime),
|
|
|
|
UpdateTime: camera.UpdateTime,
|
|
|
|
UpdateTime: getTimeValue(camera.UpdateTime),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
c.JSON(http.StatusOK, response)
|
|
|
|
c.JSON(http.StatusOK, response)
|
|
|
|
|