| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- package business
- import (
- "bytes"
- "fmt"
- "net/http"
- "os"
- "os/exec"
- "strconv"
- "strings"
- "time"
- "github.com/gin-gonic/gin"
- "github.com/gin-gonic/gin/binding"
- //"device-manage/app/admin/models"
- "device-manage/app/admin/models/busmodels"
- "device-manage/tools"
- "device-manage/tools/app"
- )
- // @Summary 获取video列表
- // @Description Get JSON
- // @Tags video列表
- // @Param name query string false "name"
- // @Param status query string false "status"
- // @Param deviceSn query string false "deviceSn"
- // @Param pageSize query int false "页条数"
- // @Param pageIndex query int false "页码"
- // @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
- // @Router /api/v1/device/list/devicelist [get]
- // @Security Bearer
- func GetVideoList(c *gin.Context) {
- var data busmodels.BusVideo
- var err error
- var pageSize = 10
- var pageIndex = 1
- size := c.Request.FormValue("pageSize")
- if size != "" {
- pageSize, err = tools.StringToInt(size)
- }
- index := c.Request.FormValue("pageIndex")
- if index != "" {
- pageIndex, err = tools.StringToInt(index)
- }
- data.VideoName = c.Request.FormValue("videoName")
- //data.VideoTime = c.Request.FormValue("videoTime")
- result, count, err := data.GetPage(pageSize, pageIndex)
- tools.HasError(err, "", -1)
- app.PageOK(c, result, count, pageIndex, pageSize, "")
- }
- func GetVideo(c *gin.Context) {
- videoInfo := busmodels.BusVideo{}
- IDS := tools.IdsStrToIdsIntGroup("videoId", c)
- result, err := videoInfo.GetVideo(IDS)
- tools.HasError(err, "获取视频信息出错", -1)
- app.OK(c, result, "")
- }
- func UpdateVideo(c *gin.Context) {
- var data busmodels.BusVideo
- data.UpdateBy = tools.GetUserIdStr(c)
- err := c.Bind(&data)
- tools.HasError(err, "数据解析失败", -1)
- result, err := data.Update()
- tools.HasError(err, "", -1)
- app.OK(c, result, "修改成功")
- }
- // uuid 作为保存路径
- func UploadVideo(c *gin.Context) {
- videoInfo := busmodels.BusVideo{}
- //获取文件头
- file, err := c.FormFile("file")
- uuid, _ := c.GetPostForm("uuid")
- fmt.Println(uuid)
- if err != nil {
- c.String(http.StatusBadRequest, "请求失败")
- return
- }
- //获取文件名
- fileName := file.Filename
- destName := uuid + "." + strings.Split(fileName, ".")[1]
- destPath := "files/media" + "/" + uuid[0:2] + "/" + uuid[2:4]
- finalPath := destPath + "/" + destName
- fmt.Println("文件名 :", destName)
- fmt.Println("文件路径:", destPath)
- //保存文件到服务器本地
- //SaveUploadedFile(文件头,保存路径)
- if _, err := os.Stat(destPath); err != nil {
- if err = os.MkdirAll(destPath, os.ModePerm); err != nil {
- fmt.Println(err)
- c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
- return
- }
- }
- if _, err := os.Stat(finalPath); err != nil {
- if _, err = os.Create(finalPath); err != nil {
- fmt.Println(err)
- c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
- return
- }
- }
- if err := c.SaveUploadedFile(file, finalPath); err != nil {
- c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
- return
- }
- path, err := saveMediaCache(uuid, fileName, finalPath)
- if err != nil {
- return
- }
- videoInfo.VideoTitle = fileName
- videoInfo.VideoName = fileName
- videoInfo.VideoPath = destName
- videoInfo.CoverPath = path
- videoInfo.Size = strconv.FormatInt(file.Size, 10)
- app.OK(c, videoInfo, "")
- }
- func saveMediaCache(uuid, fileName string, filePath string) (string, error) {
- mediaCache := busmodels.BusMediaCache{}
- coverPath := strings.Split(filePath, ".")[0] + ".jpg"
- err, _, _ := Shellout("ffmpeg -i " + filePath + " -y -f image2 -ss 1 -t 0.0001 -s 640x480 " + coverPath)
- //fmt.Println("outStr:", outStr)
- //fmt.Println("errStr:", errStr)
- if err != nil {
- return "", err
- }
- mediaCache.MediaName = fileName
- mediaCache.MediaPath = filePath
- mediaCache.AddCache()
- return uuid + ".jpg", nil
- }
- func UploadVideoFormInfo(c *gin.Context) {
- var data busmodels.BusVideo
- var cache busmodels.BusMediaCache
- err := c.BindWith(&data, binding.JSON)
- tools.HasError(err, "非法数据格式", 500)
- fmt.Println(data)
- fileName := data.VideoPath
- videoPath := "files/media" + "/" + data.VideoPath[0:2] + "/" + data.VideoPath[2:4] + "/" + fileName
- cache.MediaPath = videoPath
- cache.MediaName = fileName
- if err := cache.GetCache(); err != nil {
- fmt.Println("cache is not existed.")
- tools.HasError(err, "数据已过期.", 500)
- }
- currentTime := time.Now()
- data.UpdateBy = tools.GetUserIdStr(c)
- data.CreateBy = tools.GetUserIdStr(c)
- data.UpdatedAt = currentTime
- data.CreatedAt = currentTime
- if id, err := data.Insert(); err != nil {
- tools.HasError(err, "添加失败", 500)
- } else {
- cache.DeleteCache()
- app.OK(c, id, "添加成功")
- }
- }
- func DeleteVideo(c *gin.Context) {
- var data busmodels.BusVideo
- data.UpdateBy = tools.GetUserIdStr(c)
- IDS := tools.IdsStrToIdsIntGroup("videoId", c)
- fmt.Println(IDS)
- result, err := data.BatchDelete(IDS)
- tools.HasError(err, "删除失败,已在列表中", 500)
- app.OK(c, result, "删除成功")
- }
- func DownloadVideo(c *gin.Context) {
- /* var data busmodels.BusVideo
- data.VideoId, _ = tools.StringToInt(c.Param("videoId"))
- //todo download device log
- result, err := data.GetVideo()
- tools.HasError(err, "抱歉未找到相关信息", -1)
- var res app.Response
- res.Data = result
- c.JSON(http.StatusOK, res.ReturnOK()) */
- }
- // download video and get video info api handler
- func GetVideoHandler(c *gin.Context) {
- if c.Param("videoId") == "download" {
- DownloadVideo(c)
- } else {
- GetVideo(c)
- }
- }
- const ShellToUse = "bash"
- func Shellout(command string) (error, string, string) {
- var stdout bytes.Buffer
- var stderr bytes.Buffer
- cmd := exec.Command(ShellToUse, "-c", command)
- cmd.Stdout = &stdout
- cmd.Stderr = &stderr
- err := cmd.Run()
- return err, stdout.String(), stderr.String()
- }
|