ActivityController.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace addons\Course\backend\controllers;
  3. use addons\Course\common\models\AddonsCourse;
  4. use addons\Course\common\models\AddonsCourseActivity;
  5. use addons\Course\common\models\AddonsCourseDiscuss;
  6. use addons\Course\common\models\CourseCategory;
  7. use common\enums\StatusEnum;
  8. use common\models\goods\Goods;
  9. use common\models\user\User;
  10. class ActivityController extends BaseController
  11. {
  12. public function actionIndex()
  13. {
  14. if (\Yii::$app->request->isAjax) {
  15. if (\Yii::$app->request->isGet) {
  16. $params = \Yii::$app->request->get();
  17. $where[] = ['mall_id' => $this->mall_id];
  18. $where[] = ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]];
  19. if (!empty($params['keyword'])) $where[] = ['like', 'name', $params['keyword'] . '%', false];
  20. $params = [
  21. 'where' => $where,
  22. ];
  23. $page_data = AddonsCourseActivity::listPage($params);
  24. if (!empty($page_data['list'])) {
  25. $goods_id = array_column($page_data['list'], 'goods_id');
  26. $goods_list = Goods::lists(['where' => [['id' => $goods_id]], 'index' => 'id', 'select' => 'id,goods_name,original_price,cover_pic']);
  27. foreach ($page_data['list'] as &$item) {
  28. $course_id = explode(',', $item['course_id']);
  29. $item['course_number'] = 0;
  30. if (!empty($course_id)) $item['course_number'] = count($course_id);
  31. $item['goods_name'] = $item['original_price'] = $item['cover_pic'] = '';
  32. if (isset($goods_list[$item['goods_id']])) {
  33. $item['goods_name'] = $goods_list[$item['goods_id']]['goods_name'];
  34. $item['original_price'] = $goods_list[$item['goods_id']]['original_price'];
  35. $item['cover_pic'] = $goods_list[$item['goods_id']]['cover_pic'];
  36. }
  37. }
  38. }
  39. return $this->success('success', $page_data);
  40. } else {
  41. return $this->error('请求方式错误');
  42. }
  43. } else {
  44. return $this->render('index');
  45. }
  46. }
  47. public function actionEdit()
  48. {
  49. if (\Yii::$app->request->isAjax) {
  50. if (\Yii::$app->request->isGet) {
  51. $params = \Yii::$app->request->get();
  52. $activity_info = $goods = '';
  53. if (!empty($params['id'])) {
  54. $activity_info = AddonsCourseActivity::getOne([['id' => $params['id'], 'mall_id' => $this->mall_id]], true);
  55. if (!empty($activity_info['banners'])) $activity_info['banners'] = json_decode($activity_info['banners'], true);
  56. if (!empty($activity_info['course_id'])) {
  57. $activity_info['course_id'] = explode(',', $activity_info['course_id']);
  58. $selected_course_info = AddonsCourse::lists(['where' => [['id' => $activity_info['course_id']]], 'select' => 'id,logo,name as course_name,introduce']);
  59. $activity_info['selected_course_info'] = $selected_course_info;
  60. }
  61. $goods = Goods::lists(['where' => [['id' => $activity_info['goods_id']]], 'select' => 'id,cover_pic,goods_name as name']);
  62. }
  63. $data['goods'] = $goods;
  64. $data['activity_info'] = $activity_info;
  65. return $this->success('success', $data);
  66. } else {
  67. $params = \Yii::$app->request->post();
  68. $res = \Yii::$app->services->validate->validate($params, [
  69. [['course_id','goods_id','name','banners','select_number'], 'required'],
  70. [['id'], 'integer'],
  71. [['logo'], 'string'],
  72. ]);
  73. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  74. $params['mall_id'] = $this->mall_id;
  75. if(!empty($params['course_id'])){
  76. $counts = count($params['course_id']);
  77. if($params['select_number']>$counts) return $this->error('任选课程的数量不能大于课程总数量"');
  78. $params['course_id'] = join(',',$params['course_id']);
  79. $params['course_number'] = $counts;
  80. }
  81. if (empty($params['logo'])) {
  82. //如果没有上传活动封面图,则用默认的封面图
  83. $static_url = \Yii::$app->services->setting->get('system.static_url') ?? '';
  84. $params['logo'] = $static_url . '/static/addons/course/activity_default_logo.png';
  85. }
  86. $res = AddonsCourseActivity::setData($params);
  87. if ($res === false) return $this->error(AddonsCourseActivity::getStaticError());
  88. return $this->success('操作成功');
  89. }
  90. } else {
  91. return $this->render('edit');
  92. }
  93. }
  94. public function actionDelete()
  95. {
  96. $post = \Yii::$app->request->post();
  97. $params['id'] = $post['id'];
  98. $params['mall_id'] = $this->mall_id;
  99. $params['status'] = StatusEnum::DELETE;
  100. $res = AddonsCourseActivity::setData($params);
  101. if ($res === false) return $this->error(AddonsCourseActivity::getStaticError());
  102. return $this->success('操作成功');
  103. }
  104. //不用验证权限
  105. public function actionCourseList()
  106. {
  107. $params = \Yii::$app->request->get();
  108. $where[] = ['mall_id' => $this->mall_id];
  109. $where[] = ['status' => StatusEnum::ENABLED];
  110. if (!empty($params['course_name'])) $where[] = ['like', 'name', '%' . $params['course_name'] . '%', false];
  111. $course_list = AddonsCourse::listPage([
  112. 'where' => $where,
  113. 'select' => 'id,logo,name as course_name,price,cat_id'
  114. ]);
  115. if (!empty($course_list['list'])) {
  116. $cat_ids = array_column($course_list['list'], 'cat_id');
  117. $cate_list = CourseCategory::lists(['where' => [['id' => $cat_ids]], 'index' => 'id', 'select' => 'id,cname']);
  118. foreach ($course_list['list'] as &$item) {
  119. $item['cate_name'] = '';
  120. if (!empty($cate_list[$item['cat_id']])) $item['cate_name'] = $cate_list[$item['cat_id']]['cname'];
  121. }
  122. }
  123. return $this->success('操作成功', $course_list);
  124. }
  125. public function actionEditStatus()
  126. {
  127. if (\Yii::$app->request->isAjax) {
  128. if (\Yii::$app->request->isPost) {
  129. $params = \Yii::$app->request->post();
  130. $res = \Yii::$app->services->validate->validate($params, [
  131. [['id','status'], 'required'],
  132. ]);
  133. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  134. $params['mall_id'] = $this->mall_id;
  135. $res = AddonsCourseActivity::setData($params);
  136. if ($res === false) return $this->error(AddonsCourseActivity::getStaticError());
  137. return $this->success('操作成功');
  138. }
  139. }
  140. }
  141. }