低空智控平台 后端go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

133 lines
3.5 KiB

package handler
import (
"github.com/gin-gonic/gin"
"laic-backend/common"
"laic-backend/service"
"laic-backend/vo"
)
// GetLivePage 直播会话分页列表
func GetLivePage(c *gin.Context) {
var req vo.LivePageReq
_ = c.ShouldBindQuery(&req)
if req.PageNum <= 0 {
req.PageNum = 1
}
if req.PageSize <= 0 {
req.PageSize = 10
}
page, busiErr := service.DefaultLiveService.GetPage(common.GetUserId(c), common.IsAdmin(c), &req)
if busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OKWithData(c, page)
}
// CreateLiveSession 创建或加入机巢的唯一活动直播会话,并创建观看租约。
func CreateLiveSession(c *gin.Context) {
dockID := c.Param("dockId")
if dockID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
var req vo.LiveSessionCreateReq
_ = c.ShouldBindJSON(&req)
result, busiErr := service.DefaultLiveService.Join(common.GetUserId(c), common.IsAdmin(c), dockID, &req)
if busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OKWithData(c, result)
}
// GetLiveSession 获取指定直播会话。
func GetLiveSession(c *gin.Context) {
dockID, sessionID := c.Param("dockId"), c.Param("streamSessionId")
if dockID == "" || sessionID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
session, busiErr := service.DefaultLiveService.GetSession(common.GetUserId(c), common.IsAdmin(c), dockID, sessionID)
if busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OKWithData(c, session)
}
// HeartbeatLiveSession 续期当前用户的观看租约。
func HeartbeatLiveSession(c *gin.Context) {
dockID, sessionID := c.Param("dockId"), c.Param("streamSessionId")
if dockID == "" || sessionID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
result, busiErr := service.DefaultLiveService.Heartbeat(common.GetUserId(c), common.IsAdmin(c), dockID, sessionID)
if busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OKWithData(c, result)
}
// LeaveLiveSession 释放当前用户的观看租约。
func LeaveLiveSession(c *gin.Context) {
dockID, sessionID := c.Param("dockId"), c.Param("streamSessionId")
if dockID == "" || sessionID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
if busiErr := service.DefaultLiveService.Leave(common.GetUserId(c), common.IsAdmin(c), dockID, sessionID); busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OK(c)
}
// StartLive 启动直播推流
func StartLive(c *gin.Context) {
dockID := c.Param("dockId")
if dockID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
var req vo.LiveStartReq
_ = c.ShouldBindJSON(&req)
session, busiErr := service.DefaultLiveService.Start(common.GetUserId(c), common.IsAdmin(c), dockID, &req)
if busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OKWithData(c, session)
}
func StopLive(c *gin.Context) {
dockID := c.Param("dockId")
if dockID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
if busiErr := service.DefaultLiveService.Stop(common.GetUserId(c), common.IsAdmin(c), dockID); busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OK(c)
}
// GetLivePlayURL 获取直播播放地址
func GetLivePlayURL(c *gin.Context) {
dockID := c.Param("dockId")
if dockID == "" {
common.FailWithBusiError(c, common.ErrParam)
return
}
play, busiErr := service.DefaultLiveService.GetPlayURL(common.GetUserId(c), common.IsAdmin(c), dockID)
if busiErr != nil {
common.FailWithBusiError(c, busiErr)
return
}
common.OKWithData(c, play)
}