121 lines
3.4 KiB
PHP
121 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace app\admin\model\live;
|
|
|
|
use think\Model;
|
|
use fast\Random;
|
|
use app\admin\model\live\Room;
|
|
class Config extends Model
|
|
{
|
|
|
|
/**
|
|
* 适用于单独调整的配置名称
|
|
* @var \string[][]
|
|
*/
|
|
protected $adjustConfigField = [
|
|
'play_back'=>['play_back','play_back_type','play_back_validity_time','play_back_save_type','play_back_record'],
|
|
'operate'=>['notice','views','bullet_screen','comment_audit','like','discuss_public','goods','bantalk','gift'],
|
|
];
|
|
|
|
|
|
/**
|
|
* 向新建的课程同步全局配置
|
|
* @param $courseId
|
|
* @return array 合并后的配置
|
|
*/
|
|
public function syncConfig($courseId){
|
|
|
|
$data = \app\common\model\app\Config::getConfig('live');
|
|
|
|
if(!$data){
|
|
return new \app\common\exception\Exception('请先进行通用设置');
|
|
}
|
|
|
|
$adjustConfigField = array_merge($this->adjustConfigField['play_back'],$this->adjustConfigField['operate']);
|
|
|
|
$config = [];
|
|
|
|
foreach ($data as $key => $item){
|
|
if(in_array($key,$adjustConfigField)){
|
|
$config[$key] = $item;
|
|
}
|
|
}
|
|
|
|
$parseConfig = json_encode($config,true);
|
|
|
|
Room::where([
|
|
'course_id'=>$courseId,
|
|
])->update([
|
|
'config'=>$parseConfig
|
|
]);
|
|
|
|
return $config;
|
|
|
|
}
|
|
|
|
/**
|
|
* 单独调整配置
|
|
* 用于课程的独立设置
|
|
* @return void
|
|
*/
|
|
public function adjustConfig($courseId,$config){
|
|
$courseConfig = $this->getCourseConfig($courseId);
|
|
if(isset($courseConfig['play_back_record']) && isset($config['play_back_record']) && $courseConfig['play_back_record'] != $config['play_back_record']){
|
|
if($config['play_back_record'] == 1){
|
|
(new \app\admin\model\live\Playback)->openLiveRecord($courseId,$config);
|
|
}else{
|
|
(new \app\admin\model\live\Playback)->closeLiveRecord($courseId);
|
|
}
|
|
}
|
|
|
|
if(isset($config['play_back_record']) && $config['play_back_record'] == 1){
|
|
if(isset($courseConfig['play_back_save_type']) && $courseConfig['play_back_save_type'] != $config['play_back_save_type']){
|
|
(new \app\admin\model\live\Playback)->closeLiveRecord($courseId);
|
|
(new \app\admin\model\live\Playback)->openLiveRecord($courseId,$config);
|
|
}
|
|
}
|
|
$courseConfig = array_merge($courseConfig,$config);
|
|
$config = json_encode($courseConfig);
|
|
|
|
Room::where([
|
|
'course_id'=>$courseId,
|
|
])->cache(\app\common\constant\cache\Keys::LIVE_ROOM_CONFIG.$courseId)->update([
|
|
'config'=>$config
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 获取指定课程的指定配置
|
|
* @param $courseId
|
|
* @param $type 配置类型
|
|
* @return void
|
|
*/
|
|
public function getCourseConfig($courseId,$type = null){
|
|
|
|
|
|
$row = Room::where([
|
|
'course_id'=>$courseId,
|
|
])->field('config')->find();
|
|
|
|
if(!$row){
|
|
return new \app\common\exception\Exception('获取失败');
|
|
}
|
|
|
|
$data = [];
|
|
|
|
$config = json_decode($row['config'],true);
|
|
|
|
if($type){
|
|
foreach ($config as $name => $val){
|
|
if(in_array($name,$this->adjustConfigField[$type])){
|
|
$data[$name] = $val;
|
|
}
|
|
}
|
|
}else{
|
|
$data = $config;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
}
|