2024-05-18 17:12:24 +08:00
package dao
2024-05-20 17:30:39 +08:00
import (
"gorm.io/gorm"
"time"
)
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-06-05 17:06:29 +08:00
DB . Debug ( ) . Where ( "auth_id = ?" , id ) . Where ( "delete_time<=now()" ) . Where ( "isdelete=0" ) . Find ( & 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-05-20 17:30:39 +08:00
res := DB . Debug ( ) . Create ( & video )
if res . Error != nil {
return 0
}
2024-06-05 17:06:29 +08:00
if deleteTime == "" {
DB . Debug ( ) . 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-05-18 17:12:24 +08:00
return video . ID
}
2024-05-20 11:02:55 +08:00
func DeleteVideoByID ( id , user int ) int {
2024-05-18 17:12:24 +08:00
delete_time := time . Now ( ) . Format ( "2006-01-02 15:04:05" )
2024-05-21 14:57:45 +08:00
DB . Debug ( ) . Where ( "id = ? and auth_id = ?" , id , user ) . Updates ( & Video { DeleteTime : delete_time , IsDelete : 1 } )
DB . Debug ( ) . Where ( "id = ? and auth_id = ?" , id , user ) . Delete ( & Video { } )
2024-05-18 17:12:24 +08:00
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 {
res := DB . Debug ( ) . 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 } )
if res . Error != nil {
return false
}
2024-05-22 11:31:03 +08:00
res = DB . Debug ( ) . 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)
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-05-18 18:16:34 +08:00
DB . Debug ( ) . 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-05-29 17:27:46 +08:00
DB . Debug ( ) . 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-05-18 18:16:34 +08:00
DB . Debug ( ) . Where ( "auth_id = ?" , auth_id ) . Where ( "isdelete=0" ) . Where ( "create_time > ? and create_time < ?" , 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-05-29 17:47:59 +08:00
res := DB . Debug ( ) . 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-05-29 17:47:59 +08:00
res := DB . Debug ( ) . 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 {
res := DB . Debug ( ) . Exec ( "update videos set delete_time = date_sub(delete_time, interval ? day) where id = ? and auth_id = ? and isdelete=0" , day , id , user_id )
if res . Error != nil {
return 0
}
return int ( res . RowsAffected )
}
func QuashAllDelay ( user_id int , day int ) int {
res := DB . Debug ( ) . Exec ( "update videos set delete_time = date_sub(delete_time, interval ? day) where auth_id = ? and isdelete=0" , day , user_id )
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
DB . Debug ( ) . Where ( "auth_id = ? and isdelete = ?" , auth_id , 0 ) . Order ( "create_time DESC" ) . Offset ( ( page - 1 ) * pageSize ) . Limit ( pageSize ) . Find ( & videos ) //Offset((page - 1) * pageSize).Limit(pageSize),分页,page从1开始,pageSize每页多少条,Offset是偏移量,Limit是限制条数
return videos
}