package api

import (
	"github.com/gin-gonic/gin"
	"github.com/goWxHook/goWxHook/core"
	"github.com/goWxHook/goWxHook/utils"
)

// liveEnter
//
//	@Summary		进入直播间
//	@Description	进入直播间接口
//	@Tags			直播
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.LiveEnterRequest	true	"直播间信息"
//	@Response		200		{object}	CommonStringResponse	"{\"code\":0, ....}
//	@Router			/api/v1/live/enter [post]
func (w *WebApi) liveEnter(c *gin.Context) {
	var form core.LiveEnterRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	err = w.WxApi.LiveEnter(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", nil)
	return
}

// liveGetOnlineUser
//
//	@Summary		获取直播间在线用户
//	@Description	获取直播间在线用户接口
//	@Tags			直播
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.LiveGetOnlineUserRequest			true	"直播间信息"
//	@Response		200		{object}	CommonStringResponse{Data=interface{}}	"{\"code\":0, ....}
//	@Router			/api/v1/live/get/online/user [post]
func (w *WebApi) liveGetOnlineUser(c *gin.Context) {
	var form core.LiveGetOnlineUserRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.LiveGetOnlineUser(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// liveGetChangeInfo
//
//	@Summary		获取直播间变动信息(人气，实时发言等))
//	@Description	获取直播间变动信息(人气，实时发言等))接口
//	@Tags			直播
//	@Accept			json
//	@Produce		json
//	@Response		200	{object}	CommonStringResponse{Data=interface{}}	"{\"code\":0, ....}
//	@Router			/api/v1/live/get/change/info [post]
func (w *WebApi) liveGetChangeInfo(c *gin.Context) {
	info, err := w.WxApi.LiveGetChangeInfo()
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// liveSendMsg
//
//	@Summary		发送直播间消息
//	@Description	发送直播间消息接口
//	@Tags			直播
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.LiveSendMsgRequest	true	"直播间信息"
//	@Response		200		{object}	CommonStringResponse	"{\"code\":0, ....}
//	@Router			/api/v1/live/send/msg [post]
func (w *WebApi) liveSendMsg(c *gin.Context) {
	var form core.LiveSendMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	err = w.WxApi.LiveSendMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", nil)
	return
}

// liveGetShelf
//
//	@Summary		获取直播间货架
//	@Description	获取直播间货架接口
//	@Tags			直播
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.LiveGetShelfRequest				true	"直播间信息"
//	@Response		200		{object}	CommonStringResponse{Data=interface{}}	"{\"code\":0, ....}
//	@Router			/api/v1/live/get/shelf [post]
func (w *WebApi) liveGetShelf(c *gin.Context) {
	var form core.LiveGetShelfRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.LiveGetShelf(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}
