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