time()){ return 1; } //定时下架 if(!empty($params['unshelf_status']) && $params['unshelf_time'] > time()){ return 0; } return 0; } /** * 转换参数格式 * @param $params 参数 * @param $type 类型 编码encode 解码decode * @return array */ public function structrue($params,$type = 'encode'){ $groupBindModel = new GroupBind(); $data = []; foreach ($params as $key => $item){ if(in_array($key,$this->arrayField)){ if($type=='encode'){ $data[$key] = json_encode($item); }else{ $data[$key] = json_decode($item,true); } }elseif(in_array($key,$this->timeField)){ if($type=='decode'){ if($item){ $time = $item; }else{ $time = time(); } $data[$key] = date('Y-m-d H:i:s',$time); $data[$key.'_num'] = $time; }else{ $data[$key] = is_string($item) ? strtotime($item) : ceil($item / 1000); } }elseif($key=='group'){ if($type=='decode'){ $data[$key] = []; if(isset($params['id'])){ $data[$key] = $groupBindModel->getCourseBindGroup($params['id']); } }else{ $data[$key] = $item; } }else{ $data[$key] = $item; } } if($type=='encode'){ foreach ($this->timeField as $timeField){ unset($data[$timeField.'_num']); } if(isset($data['live_type']) && $data['live_type'] == 2){ $data['live_end_time'] = $data['live_start_time'] + $data['live_video_duration']; } } $data['uniacid'] = UNIACID; return $data; } public function getTypeList() { return ['article' => __('Article'), 'video' => __('Video'), 'audio' => __('Audio'), 'column' => __('Column')]; } public function getPayTypeList() { return ['free' => __('Free'), 'pay' => __('Pay'), 'password' => __('Password')]; } public function getValidityTypeList() { return ['diy' => __('Diy'), 'fix' => __('Fix'), 'long' => __('Long')]; } public function getTypeTextAttr($value, $data) { $value = $value ? $value : (isset($data['type']) ? $data['type'] : ''); $list = $this->getTypeList(); return isset($list[$value]) ? $list[$value] : ''; } public function getPayTypeTextAttr($value, $data) { $value = $value ? $value : (isset($data['pay_type']) ? $data['pay_type'] : ''); $list = $this->getPayTypeList(); return isset($list[$value]) ? $list[$value] : ''; } public function getValidityTypeTextAttr($value, $data) { $value = $value ? $value : (isset($data['validity_type']) ? $data['validity_type'] : ''); $list = $this->getValidityTypeList(); return isset($list[$value]) ? $list[$value] : ''; } public function getValidityDiyTimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['validity_diy_time']) ? $data['validity_diy_time'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } public function getValidityFixTimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['validity_fix_time']) ? $data['validity_fix_time'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } public function getShelfTimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['shelf_time']) ? $data['shelf_time'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } public function getUnshelfTimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['unshelf_time']) ? $data['unshelf_time'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } protected function setValidityDiyTimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } protected function setValidityFixTimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } protected function setShelfTimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } protected function setUnshelfTimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } public function agentGoods() { return $this->belongsTo('app\admin\model\app\agent\Goods', 'id', 'goods_id', [], 'left')->setEagerlyType(0); } public function study() { return $this->belongsTo('app\admin\model\data\Study', 'id','course_id', [], 'LEFT')->setEagerlyType(0); } /** * 获取直播课程 IDS * @return void */ public function getLiveCourseIds(){ return self::where([ 'type'=>'live' ])->order('id','desc')->column('id'); } }