添加修改视频信息功能并测试完成

This commit is contained in:
lijun 2024-05-21 14:57:45 +08:00
parent c324a1707c
commit 4a1d5eb195
4 changed files with 83 additions and 1 deletions

View File

@ -30,10 +30,19 @@ func CreateVideo(videoPath, videoName string, cameraID, authID, human, isDelete
func DeleteVideoByID(id, user int) int {
delete_time := time.Now().Format("2006-01-02 15:04:05")
DB.Debug().Where("id = ? and auth_id = ?", id, user).Delete(&Video{DeleteTime: delete_time, IsDelete: 1})
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{})
return id
}
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
}
return true
}
func FindVideoByID(id, auth_id int) Video {
var video Video
DB.Debug().Where("id = ? and auth_id = ?", id, auth_id).Where("isdelete = ?", 0).First(&video)

View File

@ -1,6 +1,8 @@
package handler
import (
"crypto/md5"
"encoding/hex"
"fmt"
"github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt"
@ -28,6 +30,11 @@ func loginHandler(c *gin.Context) {
var req_data RLReq
tokenString := ""
if err := c.ShouldBindJSON(&req_data); err == nil {
if len(req_data.Password) < 32 {
hasher := md5.New()
hasher.Write([]byte(req_data.Password)) // 生成密码的 MD5 散列值
req_data.Password = hex.EncodeToString(hasher.Sum(nil)) // 生成密码的 MD5 散列值
}
user := service.GetUser(req_data.User, req_data.Password)
if user.ID != 0 {
// 生成 JWT 令牌
@ -57,6 +64,11 @@ func registerHandler(c *gin.Context) {
var req_data RLReq
tokenString := ""
if err := c.ShouldBindJSON(&req_data); err == nil {
if len(req_data.Password) < 32 {
hasher := md5.New()
hasher.Write([]byte(req_data.Password)) // 生成密码的 MD5 散列值
req_data.Password = hex.EncodeToString(hasher.Sum(nil)) // 生成密码的 MD5 散列值
}
id := service.CreateUser(req_data.User, req_data.Password, req_data.Email)
// 生成 JWT 令牌
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{

View File

@ -31,6 +31,20 @@ type videoReq struct {
FileSize int `json:"file_size"`
}
type videoUpdateReq struct {
ID int `json:"id"`
CameraID int `json:"camera_id"`
VideoPath string `json:"video_path"`
VideoName string `json:"video_name"`
AuthId int `json:"auth_id"`
Human int `json:"human"`
IsDelete int `json:"is_delete"`
CreateTime string `json:"create_time"`
EndTime string `json:"end_time"`
DeleteTime string `json:"delete_time"`
FileSize int `json:"file_size"`
}
// video播放视频请求
type videoPReq struct {
ID int `json:"id"`
@ -57,6 +71,21 @@ func SetUpVideoGroup(router *gin.Engine) {
videoGroup.GET("/mp4", GetVideo)
videoGroup.POST("/delay", DelayVideo)
videoGroup.POST("/delete", DeleteVideo)
videoGroup.POST("/update", UpdateVideo)
}
func UpdateVideo(c *gin.Context) {
var video_req videoUpdateReq
user_id, _ := c.Get("id")
if err := c.ShouldBindJSON(&video_req); err == nil {
res := service.UpdateVideo(video_req.VideoPath, video_req.VideoName, video_req.CameraID, video_req.ID, int(user_id.(float64)), video_req.Human, video_req.IsDelete, video_req.CreateTime, video_req.EndTime, video_req.FileSize)
if !res {
c.JSON(http.StatusBadRequest, gin.H{"error": "update video failed", "code": 1, "message": "failed"})
return
}
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "success"})
} else {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "code": 1, "message": "failed"})
}
}
func GetVideo(c *gin.Context) {

View File

@ -33,3 +33,35 @@ func CreateVideo(videoPath, videoName string, cameraID, authID, human, isDelete
func DeleteVideo(id, user int) int {
return dao.DeleteVideoByID(id, user)
}
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
}
if videoPath == "" {
videoPath = video.VideoPath
}
if videoName == "" {
videoName = video.VideoName
}
if cameraID == 0 {
cameraID = video.CameraID
}
if human == 0 {
human = video.Human
}
if isDelete == 0 {
isDelete = video.IsDelete
}
if createTime == "" {
createTime = video.CreateTime
}
if endTime == "" {
endTime = video.EndTime
}
if fileSize == 0 {
fileSize = video.FileSize
}
return dao.UpdateVideo(videoPath, videoName, cameraID, videoID, authID, human, isDelete, createTime, endTime, fileSize)
}