1.增加事件录像,事件录像列表接口

2.将下载时间范围内的录像及播放时间范围内的录像参数统一为start和end
3.增加事件录像入数据库功能
This commit is contained in:
pg
2024-08-18 23:28:42 +08:00
parent 699868b602
commit deb8cfedae
8 changed files with 482 additions and 15 deletions

95
mysqldb.go Normal file
View File

@@ -0,0 +1,95 @@
package record
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
)
var mysqldb *gorm.DB
var err error
var createDataBaseSql = `CREATE DATABASE IF NOT EXISTS m7srecord;`
var useDataBaseSql = `USE m7srecord;`
var initsql = `CREATE TABLE IF NOT EXISTS eventrecord (
id int(11) NOT NULL AUTO_INCREMENT,
streamPath varchar(255) NOT NULL COMMENT '流路径',
eventId varchar(255) DEFAULT NULL COMMENT '事件编号',
eventType varchar(255) DEFAULT NULL COMMENT '事件类型',
eventName varchar(255) DEFAULT NULL COMMENT '事件名称',
beforeDuration int(255) DEFAULT NULL COMMENT '事件前缓存时长',
afterDuration int(255) DEFAULT NULL COMMENT '事件后缓存时长',
recordTime datetime DEFAULT NULL COMMENT '录像时间',
startTime datetime DEFAULT NULL COMMENT '录像开始时间',
endTime datetime DEFAULT NULL COMMENT '录像结束时间',
filepath varchar(255) DEFAULT NULL COMMENT '录像文件路径',
isDelete varchar(255) DEFAULT '0' COMMENT '是否删除0表示正常1表示删除默认0',
fileName varchar(255) DEFAULT NULL COMMENT '文件名',
userId int(11) DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;`
func initMysqlDB(MysqlDSN string) {
mysqldb, err = gorm.Open(mysql.Open(MysqlDSN), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
mysqldb.Exec(createDataBaseSql)
mysqldb.Exec(useDataBaseSql)
mysqldb.Exec(initsql)
//mysqldb.AutoMigrate(&EventRecord{})
mysqldb.AutoMigrate(&Exception{})
}
func paginate[T any](model T, pageNum, pageSize int, filters map[string]interface{}) ([]T, int64, error) {
var results []T
var totalCount int64
// 计算偏移量
offset := (pageNum - 1) * pageSize
// 查询总记录数
countQuery := mysqldb.Model(model)
for field, value := range filters {
if valueStr, ok := value.(string); ok && (valueStr != "") {
// countQuery = countQuery.Where(field+" LIKE ?", "%"+valueStr+"%")
//} else {
if field == "startTime" {
countQuery = countQuery.Where("recordTime >= ?", valueStr)
} else if field == "endTime" {
countQuery = countQuery.Where("recordTime <= ?", valueStr)
} else {
countQuery = countQuery.Where(field+" = ?", value)
}
}
}
result := countQuery.Count(&totalCount)
if result.Error != nil {
return nil, 0, result.Error
}
// 查询当前页的数据
query := mysqldb.Model(model).Limit(pageSize).Offset(offset)
for field, value := range filters {
if valueStr, ok := value.(string); ok && (valueStr != "") {
// query = query.Where(field+" LIKE ?", "%"+valueStr+"%")
//} else {
if field == "startTime" {
query = query.Where("recordTime >= ?", valueStr)
} else if field == "endTime" {
query = query.Where("recordTime <= ?", valueStr)
} else {
query = query.Where(field+" = ?", value)
}
}
}
result = query.Find(&results)
if result.Error != nil {
return nil, 0, result.Error
}
return results, totalCount, nil
}