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

202 lines
6.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
}
}