www_fpvone_cn/application/shopro/app/mplive/Room.php

202 lines
6.3 KiB
PHP
Raw Permalink Normal View History

2024-12-20 12:29:51 +08:00
<?php
namespace app\admin\controller\shopro\app\mplive;
use app\admin\model\shopro\app\mplive\Room as MpliveRoomModel;
/**
* 小程序直播
*/
class Room extends Index
{
protected $noNeedRight = ['select'];
// 直播间列表
public function index()
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$list = (new MpliveRoomModel)->sheepFilter()->select();
$this->success('', null, $list);
}
// 直播间详情
public function detail($id)
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$room = (new MpliveRoomModel)->where('roomid', $id)->findOrFail();
$this->success('', null, $room);
}
// 同步直播间列表
public function sync()
{
$res = $this->wechat->broadcast->getRooms();
$data = [];
$this->catchLiveError($res);
MpliveRoomModel::where('roomid', '>', 0)->delete();
foreach ($res['room_info'] as $room) {
$room['status'] = $room['live_status'];
$room['type'] = $room['live_type'];
$data[] = $room;
}
MpliveRoomModel::strict(false)->insertAll($data);
$list = MpliveRoomModel::select();
$this->success('', null, $list);
}
// 创建直播间
public function add()
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$params = $this->request->param();
$data = [
'name' => $params['name'], // 房间名字
'coverImg' => $this->uploadMedia($params['cover_img']), // 通过 uploadfile 上传,填写 mediaID
'shareImg' => $this->uploadMedia($params['share_img']), //通过 uploadfile 上传,填写 mediaID
'feedsImg' => $this->uploadMedia($params['feeds_img']), //通过 uploadfile 上传,填写 mediaID
'startTime' => $params['start_time'], // 开始时间
'endTime' => $params['end_time'], // 结束时间
'anchorName' => $params['anchor_name'], // 主播昵称
'anchorWechat' => $params['anchor_wechat'], // 主播微信号
'subAnchorWechat' => $params['sub_anchor_wechat'], // 主播副号微信号
'isFeedsPublic' => $params['is_feeds_public'], // 是否开启官方收录1 开启0 关闭
'type' => $params['type'], // 直播类型1 推流 0 手机直播
'closeLike' => $params['close_like'], // 是否关闭点赞 1关闭
'closeGoods' => $params['close_goods'], // 是否关闭商品货架1关闭
'closeComment' => $params['close_comment'], // 是否开启评论1关闭
'closeReplay' => $params['close_replay'], // 是否关闭回放 1 关闭
'closeKf' => $params['close_kf'], // 是否关闭客服1 关闭
];
$res = $this->wechat->broadcast->createLiveRoom($data);
$this->catchLiveError($res);
return $this->sync();
}
// 更新直播间
public function edit($id = null)
{
if (!$this->request->isAjax()) {
return $this->view->fetch('add');
}
$params = $this->request->param();
$data = [
'id' => $id,
'name' => $params['name'], // 房间名字
'coverImg' => $this->uploadMedia($params['cover_img']), // 通过 uploadfile 上传,填写 mediaID
'shareImg' => $this->uploadMedia($params['share_img']), //通过 uploadfile 上传,填写 mediaID
'feedsImg' => $this->uploadMedia($params['feeds_img']), //通过 uploadfile 上传,填写 mediaID
'startTime' => $params['start_time'], // 开始时间
'endTime' => $params['end_time'], // 结束时间
'anchorName' => $params['anchor_name'], // 主播昵称
'anchorWechat' => $params['anchor_wechat'], // 主播昵称
'isFeedsPublic' => $params['is_feeds_public'], // 是否开启官方收录1 开启0 关闭
'type' => $params['type'], // 直播类型1 推流 0 手机直播
'closeLike' => $params['close_like'], // 是否关闭点赞 1关闭
'closeGoods' => $params['close_goods'], // 是否关闭商品货架1关闭
'closeComment' => $params['close_comment'], // 是否开启评论1关闭
'closeReplay' => $params['close_replay'], // 是否关闭回放 1 关闭
'closeKf' => $params['close_kf'], // 是否关闭客服1 关闭
];
$res = $this->wechat->broadcast->updateLiveRoom($data);
$this->catchLiveError($res);
return $this->sync();
}
// 删除直播间
public function delete($id)
{
$res = $this->wechat->broadcast->deleteLiveRoom([
'id' => $id,
]);
$this->catchLiveError($res);
MpliveRoomModel::where('roomid', $id)->delete();
$this->success('操作成功');
}
// 推流地址
public function pushUrl($id)
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$res = $this->wechat->broadcast->getPushUrl([
'roomId' => $id
]);
$this->catchLiveError($res);
$this->success('', null, ['pushAddr' => $res['pushAddr']]);
}
// 分享二维码
public function qrcode($id)
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$res = $this->wechat->broadcast->getShareQrcode([
'roomId' => $id
]);
$this->catchLiveError($res);
$this->success('', null, ['pagePath' => $res['pagePath'], 'cdnUrl' => $res['cdnUrl']]);
}
// 查看回放
public function playback($id)
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$res = $this->wechat->broadcast->getPlaybacks((int)$id, (int)$start = 0, (int)$limit = 10);
$this->catchLiveError($res);
$data = $res['live_replay'];
$this->success('', null, $data);
}
public function select()
{
if (!$this->request->isAjax()) {
return $this->view->fetch();
}
$list = (new MpliveRoomModel)->sheepFilter()->select();
$this->success('', null, $list);
}
}