Files
amb_wechatapp/application/admin/model/live/Config.php
T

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