videoplayer/service/videoService.go

148 lines
3.9 KiB
Go
Raw Normal View History

package service
import (
"encoding/json"
2024-06-26 17:39:45 +08:00
"fmt"
"strconv"
"strings"
"time"
"videoplayer/dao"
"videoplayer/proto"
"videoplayer/worker"
)
func GetVideo(id, auth_id int) dao.Video {
return dao.FindVideoByID(id, auth_id)
}
func GetWillDelVideoList(id int) []dao.Video {
return dao.FindWillDelVideoList(id)
}
2024-12-17 17:16:22 +08:00
func GetVideoList(auth_id, id int, start, end, hour string) []dao.Video {
if id > 0 {
2024-12-21 18:47:47 +08:00
user := dao.FindUserByID2(auth_id)
if user.Role == "admin" {
return dao.FindVideoByID2(id) //可根据id查找视频
} else {
return []dao.Video{dao.FindVideoByID(id, auth_id)}
}
2024-12-17 17:16:22 +08:00
}
if start == "" {
return dao.FindVideoListsByAuthID(auth_id)
} else {
if hour != "33" {
ss := strings.Split(start, " ")
ss1 := strings.Split(ss[1], ":")
start = ss[0] + " " + hour + ":" + ss1[1] + ":" + ss1[2]
es := strings.Split(end, " ")
es1 := strings.Split(es[1], ":")
end = es[0] + " " + hour + ":" + es1[1] + ":" + es1[2]
}
_, err := time.Parse("2006-01-02 15:04:05", start)
_, err2 := time.Parse("2006-01-02 15:04:05", end)
if err != nil || err2 != nil {
return []dao.Video{}
}
return dao.FindVideoListByTime(auth_id, start, end)
}
}
2024-05-29 16:57:26 +08:00
func DelayVideo(id, auth_id, day int) int {
return dao.DelayVideo(id, auth_id, day)
}
2024-05-29 16:57:26 +08:00
func DelayAllVideo(id, day int) int {
return dao.DelayAllVideo(id, day)
}
func CreateVideo(videoPath, videoName string, cameraID, authID, human, isDelete int, createTime, endTime, deleteTime string, fileSize int) uint {
return dao.CreateVideo(videoPath, videoName, cameraID, authID, human, isDelete, createTime, endTime, deleteTime, fileSize)
}
func GetVideoListByPage(auth_id, page, page_size int) []dao.Video {
if page < 0 {
page = 0 //默认第一页
}
if page_size < 0 || page_size > 100 {
page_size = 10 //默认每页10条
}
return dao.GetVideoListByPage(auth_id, page, page_size)
}
2024-12-17 17:57:26 +08:00
func DeleteVideo(id, user int, tp string) int {
if tp == "del_with_logic" {
data := map[string]interface{}{"id": id, "auth_id": user, "delete_time": time.Now().Format("2006-01-02 15:04:05"), "method": "delete"}
str, _ := json.Marshal(data)
2024-12-21 18:36:10 +08:00
SetVideoOption("user-"+strconv.Itoa(user)+"-option", string(str))
2024-12-17 17:57:26 +08:00
return dao.LogicDeleteVideoByID(id, user)
} else if tp == "del_with_real" {
return dao.DeleteVideoByID(id, user)
}
return 0
}
2024-06-24 17:58:22 +08:00
func QuashVideo(user int, data map[string]interface{}) (int, string) {
var res int
var msg string
2024-06-26 17:39:45 +08:00
defer func() {
if r := recover(); r != nil {
fmt.Println("error:", r)
}
}()
2024-06-24 17:58:22 +08:00
switch data["method"] {
case "delete":
video_id := int(data["id"].(float64))
res = dao.RollbackVideoByID(video_id, user)
if res == 0 {
msg = strconv.Itoa(video_id) + " rollback video error"
} else {
res = 0
msg = "success"
}
2024-06-24 17:58:22 +08:00
case "delay":
if data["option"] == "all" {
2024-06-25 10:48:09 +08:00
if dao.QuashAllDelay(user, data["delay_day"].(int)) == 0 {
res = proto.RevokeDelayOperationFailed
2024-06-24 17:58:22 +08:00
msg = "quash all video delay error"
} else {
res = proto.SuccessCode
2024-06-24 17:58:22 +08:00
msg = "success"
}
} else if data["option"] == "one" {
2024-06-26 17:39:45 +08:00
if dao.QuashOneDelay(int(data["id"].(float64)), user, int(data["delay_day"].(float64))) == 0 {
res = proto.RevokeDelayOperationFailed
2024-06-24 17:58:22 +08:00
msg = "quash one video error"
} else {
res = proto.SuccessCode
2024-06-24 17:58:22 +08:00
msg = "success"
}
} else {
res = proto.RevokeOperationFailed
2024-06-24 17:58:22 +08:00
msg = "option error,no such delay option"
}
default:
res = proto.RevokeOperationFailed
2024-06-24 17:58:22 +08:00
msg = "method error,no such method"
}
return res, msg
}
func UpdateVideo(videoPath, videoName string, cameraID, videoID, authID, human, isDelete int, createTime, endTime string, fileSize int) bool {
video := GetVideo(videoID, authID)
if video.ID == 0 {
return false
}
return dao.UpdateVideo(videoPath, videoName, cameraID, videoID, authID, human, isDelete, createTime, endTime, fileSize)
}
2024-12-21 18:36:10 +08:00
func SetVideoOption(key string, value string) {
//查看list长度
lens := worker.GetRedisListLen(key)
if lens > 100 {
//移除开头的元素
worker.PopRedisList(key)
}
worker.PushRedisList(key, value)
}