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-12-17 19:19:30 +08:00
"videoplayer/proto"
2024-05-20 17:30:39 +08:00
)
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-12-17 19:19:30 +08:00
var res * gorm . DB
if proto . Config . SERVER_SQL_LOG {
res = DB . Debug ( ) . Create ( & video )
if res . Error != nil {
return 0
}
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)
}
} else {
res = DB . Create ( & video )
if res . Error != nil {
return 0
}
if deleteTime == "" {
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 19:19:30 +08:00
var res * gorm . DB
if proto . Config . SERVER_SQL_LOG {
res = DB . Debug ( ) . Exec ( "update videos set deleted_at = now(),isdelete=1 where id=? and auth_id=?" , id , user )
} else {
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)
}
2024-12-17 17:57:26 +08:00
if res . Error != nil {
fmt . Println ( "dao DeleteVideoByID:" , res . Error )
return 0
}
return id
}
// 文件未删除时逻辑删除
func LogicDeleteVideoByID ( id , user int ) int {
2024-12-17 19:19:30 +08:00
var res * gorm . DB
if proto . Config . SERVER_SQL_LOG {
res = DB . Debug ( ) . Exec ( "update videos set deleted_at=now(),delete_time=now() where id=? and auth_id=?" , id , user )
} else {
res = DB . Exec ( "update videos set deleted_at=now(),delete_time=now() where id=? and auth_id=?" , id , user )
}
2024-12-17 17:57:26 +08:00
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-12-17 19:19:30 +08:00
var res * gorm . DB
if proto . Config . SERVER_SQL_LOG {
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 } )
} else {
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
}
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 19:19:30 +08:00
if proto . Config . SERVER_SQL_LOG {
DB . Debug ( ) . Where ( "auth_id = ?" , auth_id ) . Where ( "create_time > ? and create_time < ? and isdelete=0 and deleted_at is null" , startTime , endTime ) . Find ( & videos )
} else {
DB . Where ( "auth_id = ?" , auth_id ) . Where ( "create_time > ? and create_time < ? and isdelete=0 and deleted_at is 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
}