2024-05-18 17:12:24 +08:00
|
|
|
|
package dao
|
|
|
|
|
|
|
2024-05-20 17:30:39 +08:00
|
|
|
|
import (
|
2024-12-17 17:57:26 +08:00
|
|
|
|
"fmt"
|
2024-05-20 17:30:39 +08:00
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
|
)
|
2024-05-18 17:12:24 +08:00
|
|
|
|
|
|
|
|
|
|
type Video struct {
|
2024-05-20 17:30:39 +08:00
|
|
|
|
gorm.Model
|
2024-05-18 17:12:24 +08:00
|
|
|
|
CameraID int `gorm:"column:camera_id"`
|
|
|
|
|
|
VideoPath string `gorm:"column:video_path"`
|
|
|
|
|
|
VideoName string `gorm:"column:video_name"`
|
|
|
|
|
|
AuthId int `gorm:"column:auth_id"`
|
|
|
|
|
|
Human int `gorm:"column:human"`
|
2024-05-18 18:16:34 +08:00
|
|
|
|
IsDelete int `gorm:"column:isdelete"`
|
2024-05-18 17:12:24 +08:00
|
|
|
|
CreateTime string `gorm:"column:create_time"`
|
|
|
|
|
|
EndTime string `gorm:"column:end_time"`
|
|
|
|
|
|
DeleteTime string `gorm:"column:delete_time"`
|
|
|
|
|
|
FileSize int `gorm:"column:file_size"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-21 15:48:20 +08:00
|
|
|
|
func FindWillDelVideoList(id int) []Video {
|
|
|
|
|
|
var videos []Video
|
2024-12-17 18:05:08 +08:00
|
|
|
|
DB.Raw("select * from videos where auth_id = ? and delete_time<=now() and isdelete=0", id).Scan(&videos)
|
2024-05-21 15:48:20 +08:00
|
|
|
|
return videos
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-05 17:06:29 +08:00
|
|
|
|
func CreateVideo(videoPath, videoName string, cameraID, authID, human, isDelete int, createTime, endTime, deleteTime string, fileSize int) uint {
|
|
|
|
|
|
video := Video{VideoPath: videoPath, VideoName: videoName, CameraID: cameraID, AuthId: authID, Human: human, IsDelete: isDelete, CreateTime: createTime, EndTime: endTime, DeleteTime: deleteTime, FileSize: fileSize}
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res := DB.Create(&video)
|
2024-05-20 17:30:39 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
2024-06-05 17:06:29 +08:00
|
|
|
|
if deleteTime == "" {
|
2024-10-04 11:37:25 +08:00
|
|
|
|
DB.Exec("update videos set delete_time= DATE_ADD(NOW(), INTERVAL 20 DAY) where id=?", video.ID) //delete_time= DATE_ADD(NOW(), INTERVAL 20 DAY)
|
2024-06-05 17:06:29 +08:00
|
|
|
|
}
|
2024-05-18 17:12:24 +08:00
|
|
|
|
return video.ID
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-17 17:57:26 +08:00
|
|
|
|
// 文件已删除
|
2024-05-20 11:02:55 +08:00
|
|
|
|
func DeleteVideoByID(id, user int) int {
|
2024-12-17 17:57:26 +08:00
|
|
|
|
res := DB.Exec("update videos set deleted_at = now(),isdelete=1 where id=? and auth_id=?", id, user) //delete_time= DATE_ADD(NOW(), INTERVAL 20 DAY)
|
|
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
fmt.Println("dao DeleteVideoByID:", res.Error)
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return id
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 文件未删除时逻辑删除
|
|
|
|
|
|
func LogicDeleteVideoByID(id, user int) int {
|
|
|
|
|
|
res := DB.Exec("update videos set deleted_at=now(),delete_time=now() where id=? and auth_id=?", id, user) //delete_time= DATE_ADD(NOW(), INTERVAL 20 DAY)
|
|
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
fmt.Println("dao LogicDeleteVideoByID:", res.Error)
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
2024-05-18 17:12:24 +08:00
|
|
|
|
return id
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-17 18:31:14 +08:00
|
|
|
|
// 回滚视频输出-逻辑删除,若文件已删除则不可回滚
|
|
|
|
|
|
func RollbackVideoByID(id, user int) int {
|
|
|
|
|
|
res := DB.Exec("update videos set deleted_at=null where id=? and auth_id=? and isdelete=0", id, user) //isdelete=0说明文件未删除
|
|
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
fmt.Println("dao RollbackVideoByID:", res.Error)
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return id
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-21 14:57:45 +08:00
|
|
|
|
func UpdateVideo(videoPath, videoName string, cameraID, videoID, authID, human, isDelete int, createTime, endTime string, fileSize int) bool {
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res := DB.Model(&Video{}).Where("id = ? and auth_id = ?", videoID, authID).Updates(Video{VideoPath: videoPath, VideoName: videoName, CameraID: cameraID, AuthId: authID, Human: human, IsDelete: isDelete, CreateTime: createTime, EndTime: endTime, FileSize: fileSize})
|
2024-05-21 14:57:45 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return false
|
|
|
|
|
|
}
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res = DB.Exec("update videos set delete_time= DATE_ADD(NOW(), INTERVAL 20 DAY) where id=? and auth_id=?", videoID, authID) //delete_time= DATE_ADD(NOW(), INTERVAL 20 DAY)
|
2024-05-22 11:31:03 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return false
|
|
|
|
|
|
}
|
2024-05-21 14:57:45 +08:00
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-18 17:12:24 +08:00
|
|
|
|
func FindVideoByID(id, auth_id int) Video {
|
|
|
|
|
|
var video Video
|
2024-10-04 11:37:25 +08:00
|
|
|
|
DB.Where("id = ? and auth_id = ?", id, auth_id).Where("isdelete = ?", 0).First(&video)
|
2024-05-18 17:12:24 +08:00
|
|
|
|
return video
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-29 17:27:46 +08:00
|
|
|
|
// 根据用户id查找视频列表,返回最新30条
|
2024-05-18 17:12:24 +08:00
|
|
|
|
func FindVideoListsByAuthID(auth_id int) []Video {
|
|
|
|
|
|
var videos []Video
|
2024-12-11 17:45:52 +08:00
|
|
|
|
DB.Where("auth_id = ? and isdelete =? ", auth_id, 0).Order("create_time DESC").Limit(30).Find(&videos)
|
2024-05-18 17:12:24 +08:00
|
|
|
|
return videos
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func FindVideoListByTime(auth_id int, startTime, endTime string) []Video {
|
|
|
|
|
|
var videos []Video
|
2024-12-17 17:57:26 +08:00
|
|
|
|
DB.Where("auth_id = ?", auth_id).Where("isdelete=0").Where("create_time > ? and create_time < ? and deleted_at != null", startTime, endTime).Find(&videos)
|
2024-05-18 17:12:24 +08:00
|
|
|
|
return videos
|
|
|
|
|
|
}
|
2024-05-20 11:02:55 +08:00
|
|
|
|
|
2024-05-29 16:57:26 +08:00
|
|
|
|
// id 为视频id,auth_id为用户id,day为延长天数,返回修改的行数
|
|
|
|
|
|
func DelayVideo(id, auth_id, day int) int {
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res := DB.Exec("update videos set delete_time = date_add(delete_time, interval ? day) where id = ? and auth_id = ? and isdelete=0", day, id, auth_id)
|
2024-05-29 16:57:26 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return int(res.RowsAffected)
|
2024-05-28 17:27:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-29 16:57:26 +08:00
|
|
|
|
// id 为用户id,day为延长天数,返回修改的行数
|
|
|
|
|
|
func DelayAllVideo(id, day int) int {
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res := DB.Exec("update videos set delete_time = date_add(delete_time, interval ? day) where auth_id = ? and isdelete = 0", day, id)
|
2024-05-29 16:57:26 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return int(res.RowsAffected)
|
2024-05-20 11:02:55 +08:00
|
|
|
|
}
|
2024-06-24 17:58:22 +08:00
|
|
|
|
|
|
|
|
|
|
func QuashOneDelay(id, user_id int, day int) int {
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res := DB.Exec("update videos set delete_time = date_sub(delete_time, interval ? day) where id = ? and auth_id = ? and isdelete=0", day, id, user_id)
|
2024-06-24 17:58:22 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return int(res.RowsAffected)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func QuashAllDelay(user_id int, day int) int {
|
2024-10-04 11:37:25 +08:00
|
|
|
|
res := DB.Exec("update videos set delete_time = date_sub(delete_time, interval ? day) where auth_id = ? and isdelete=0", day, user_id)
|
2024-06-24 17:58:22 +08:00
|
|
|
|
if res.Error != nil {
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return int(res.RowsAffected)
|
|
|
|
|
|
}
|
2024-07-09 09:59:19 +08:00
|
|
|
|
|
|
|
|
|
|
// 获取视频列表分页
|
|
|
|
|
|
func GetVideoListByPage(auth_id, page, pageSize int) []Video {
|
|
|
|
|
|
var videos []Video
|
2024-10-04 11:37:25 +08:00
|
|
|
|
DB.Where("auth_id = ? and isdelete = ?", auth_id, 0).Order("created_at DESC").Offset((page - 1) * pageSize).Limit(pageSize).Find(&videos) //Offset((page - 1) * pageSize).Limit(pageSize),分页,page从1开始,pageSize每页多少条,Offset是偏移量,Limit是限制条数
|
2024-07-09 09:59:19 +08:00
|
|
|
|
return videos
|
|
|
|
|
|
}
|