| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- <?php
- namespace addons\Course\backend\controllers;
- use addons\Agent\common\models\AgentCommissionItemSetting;
- use addons\Agent\common\models\AgentLevel;
- use addons\Course\common\enums\CourseEnum;
- use addons\Course\common\models\AddonsCourse;
- use addons\Course\common\models\AddonsCourseChapter;
- use addons\Course\common\models\AddonsCourseDirectorys;
- use addons\Course\common\models\CourseCategory;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use common\helpers\ArrayHelper;
- use common\models\mall\MallAddons;
- use common\models\user\UserLevel;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\Course\backend\controllers
- */
- class CourseController extends BaseController
- {
- /**
- * @name:
- * @msg: 编辑/添加课程
- * @param {*}
- * @return {*}
- */
- public function actionCourseEdit()
- {
- if (\Yii::$app->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('操作成功');
- }
- }
|