request->isAjax) { if (\Yii::$app->request->isGet) { $course_id = \Yii::$app->request->get('id'); if (!empty($course_id)) { // 编辑课程 $course = AddonsCourse::getDetail($course_id, $this->mall_id, '*', true, [StatusEnum::DISABLED,StatusEnum::ENABLED]); if (false === $course) { return $this->error(AddonsCourse::getStaticError()); } } else { $course_id = 0; $course = []; } //分类列表 $categorys = CourseCategory::find() ->select('id,cname') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]) ->asArray() ->indexBy('id') ->all(); $member_levels = UserLevel::find() ->select('id,name as level_name,level') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]) ->asArray() ->indexBy('level') ->orderBy(['level' => SORT_ASC]) ->all(); // dd($member_level_list); if (!empty($member_levels)) { foreach ($member_levels as &$mv) { $mv['discount_price'] = 0; } } // 经销配置 $agent_config = AddonsCourse::getAgentConfig($this->mall_id, $course_id); // 分销配置 $distribution_config = AddonsCourse::getDistributionConfig($this->mall_id, $course_id); // $agent_config = $distribution_config = null; // dd($distribution_config); return $this->success("成功", [ 'cate_list' => $categorys, 'member_level_list' => array_values($member_levels), 'detail' => $course, 'agent_config' => ['item_setting' => $agent_config['item_setting']], 'agent_details' => $agent_config['agent_details'], 'agent_levels' => $agent_config['agent_levels'], 'agent_enable' => $agent_config['agent_enable'], 'distribution_config' => ['item_setting' => $distribution_config['item_setting'], 'level_names' => $distribution_config['level_names']], 'distribution_levels' => $distribution_config['distribution_levels'], 'distribution_details' => $distribution_config['distribution_details'], 'distribution_enable' => $distribution_config['distribution_enable'], ]); } else { $post = \Yii::$app->request->post(); $rules = [ [['name', 'cat_id', 'introduce', 'logo', 'introduce', 'price', 'line_off_price', 'sell_type'], 'required'], [['id', 'vm_likes', 'vm_shares', 'vm_downloads', 'vm_views', 'can_comment', 'is_open_vm', 'can_download', 'relays', 'relay_customize_text', 'detail','sort'], 'safe'], [['cat_id', 'price', 'line_off_price', 'sell_type'], 'number'], [['name', 'introduce', 'logo'], 'string'], ['price', 'required', 'when' => function ($model) { return CourseEnum::COURSE_SELL_TYPE_1 == $model->sell_type; }], ['line_off_price', 'required', 'when' => function ($model) { return CourseEnum::COURSE_SELL_TYPE_1 == $model->sell_type; }], ['allow_member_levels', 'required', 'when' => function ($model) { return CourseEnum::COURSE_SELL_TYPE_2 == $model->sell_type; }], ]; $res = \Yii::$app->services->validate->validate($post, $rules); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); if (CourseEnum::COURSE_SELL_TYPE_4 == $post['sell_type']) { if (empty($post['relays'])) { $post['relays'] = 1; } if (empty($post['relay_customize_text'])) { $post['relay_customize_text'] = '转发视频可免费观看'; } } if ($post['price'] > $post['line_off_price']) { return $this->error('售价不能大于划线价'); } // dd($post); $res = AddonsCourse::setData($this->mall_id, $post); // dd(AddonsCourse::getStaticError()); if (false === $res) { return $this->error('添加失败'); } else { return $this->success('添加成功'); } } } else { return $this->render('/course/edit'); } } /** * @Author: guyu * @Date:2021-03-19 * @Note:课程状态切换 * @return Yii\web\Response */ public function actionSwitchStatus() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $id = \Yii::$app->request->post('id'); $status = \Yii::$app->request->post("status"); if (empty($id) || !isset($status)) { return $this->error('参数错误'); } $course = AddonsCourse::findOne(['mall_id' => $this->mall_id, 'id' => $id]); if (empty($course)) { return $this->error('该课程不存在或者已被删除'); } if ($status == $course->status) { return $this->success('操作成功'); } $params = [ 'id' => $id, 'status' => $status, ]; $res = AddonsCourse::setData($this->mall_id, $params); if (false === $res) return $this->error('操作失败'); return $this->success('操作成功'); } /** * @name: * @msg: 课程删除 * @param {*} * @return {*} */ public function actionDelete() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $id = \Yii::$app->request->post("id"); $course = AddonsCourse::findOne(['id' => $id, 'mall_id' => $this->mall_id]); if (empty($course)) { return $this->error('课程不存在或者已被删除'); } $count = AddonsCourseChapter::find()->where(["course_id" => $id, "status" => StatusEnum::ENABLED])->count(); if ($count > 0) { return $this->error('此课程下还有章节未删除'); } $params = [ 'id' => $id, 'status' => StatusEnum::DELETE, ]; $res = AddonsCourse::setData($this->mall_id, $params); if (false === $res) { return $this->error(AddonsCourse::getStaticError()); } return $this->success('删除成功'); } /** * @name: * @msg: 获取某一课程下的章节列表 * @param {*} * @return {*} */ public function actionChapterList() { if (!\Yii::$app->request->isAjax) { return $this->render('/course/chapter-list'); } if (!\Yii::$app->request->isGet) { return $this->error('请求方式错误'); } $limit = \Yii::$app->request->get('limit', $this->pageSize); $page = \Yii::$app->request->get('page', 1); $course_id = \Yii::$app->request->get('course_id'); $course_name = \Yii::$app->request->get('course_name'); if (empty($course_id)) { return $this->error('参数错误'); } $wheres[] = ['course_id' => $course_id, 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]; if (!empty($course_name)) { $wheres[] = ['like', 'name', $course_name]; } $params = [ 'select' => 'id,course_id,dir_id,name as chapter_name,goods_list,views,can_see,sort,dir.name as dir_name', 'where' => $wheres, 'order' => 'sort asc,created_at desc', 'page' => $page, 'limit' => $limit, ]; $list = AddonsCourseChapter::listPage($params); if (false === $list['list']) return $this->error(AddonsCourseChapter::getStaticError()); // dd($list); $dir_ids = array_column($list['list'], 'dir_id'); $directorys = AddonsCourseDirectorys::find() ->select('id,name as dir_name') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $dir_ids]) ->asArray() ->indexBy('id') ->all(); foreach ($list['list'] as $list) { $directory = $directorys[$list['dir_id']] ?? ''; $list['dir_name'] = $directory['dir_name'] ?? '未分类'; } // 获取课程相关信息 $course_info = AddonsCourse::getDetail($course_id, 'id,price,logo,introduce,name,sales', true); $list['course_info'] = $course_info; // 获取该课程下的所有的目录列表 $directory_info = AddonsCourseDirectorys::getDirTreeList($this->mall_id, $course_id, 'id,course_id,parent_id,level,name,sort'); $list['directory_list'] = $directory_info['tree']; return $this->success('success', $list); } /** * @name: * @msg: 课程经销独立设置 * @param {*} * @return {*} */ public function actionAgentSetting() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $addons_name = AddonsEnum::ADDONS_NAME_AGENT; $is_install = MallAddons::isInstall($this->mall_id, $addons_name); if (!$is_install) { return $this->error('应用 ' . AddonsEnum::getAddonsNameMap(AddonsEnum::ADDONS_NAME_AGENT) . ' 未安装'); } $course_id = \Yii::$app->request->get('course_id'); if (empty($course_id)) { return $this->error('参数错误'); } $course = AddonsCourse::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $course_id])->one(); if (empty($course)) { return $this->error('课程不存在'); } $post = \Yii::$app->request->post(); $post['course_id'] = $course_id; // dd($post); $res = AddonsCourse::AgentSetting($this->mall_id, $post); if (false === $res) { return $this->error(AddonsCourse::getStaticError()); } return $this->success('保存成功'); } /** * @name: * @msg: 课程分销独立设置 * @param {*} * @return {*} */ public function actionDistributionSetting() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $addons_name = AddonsEnum::ADDONS_NAME_DISTRIBUTION; $is_install = MallAddons::isInstall($this->mall_id, $addons_name); if (!$is_install) { return $this->error('应用 ' . AddonsEnum::getAddonsNameMap(AddonsEnum::ADDONS_NAME_DISTRIBUTION) . ' 未安装'); } $course_id = \Yii::$app->request->get('course_id'); if (empty($course_id)) { return $this->error('参数错误'); } $course = AddonsCourse::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $course_id])->one(); if (empty($course)) { return $this->error('课程不存在'); } $post = \Yii::$app->request->post(); $post['course_id'] = $course_id; // dd($post); $res = AddonsCourse::distributionSetting($this->mall_id, $post); if (false === $res) { return $this->error(AddonsCourse::getStaticError()); } return $this->success('保存成功'); } public function actionUpdateSort() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $id = \Yii::$app->request->post('id'); $sort = \Yii::$app->request->post("sort"); if (empty($id) || !isset($sort)) { return $this->error('参数错误'); } $course = AddonsCourse::findOne(['mall_id' => $this->mall_id, 'id' => $id]); if (empty($course)) { return $this->error('该课程不存在或者已被删除'); } $params = [ 'id' => $id, 'sort' => $sort, ]; $res = AddonsCourse::setData($this->mall_id, $params); if (false === $res) return $this->error('操作失败'); return $this->success('操作成功'); } }