LevelController.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace addons\Rebate\backend\controllers;
  3. use addons\Rebate\common\models\RebateUser;
  4. use addons\Rebate\common\models\RebateUserLevel;
  5. use common\enums\StatusEnum;
  6. use common\models\goods\Goods;
  7. use Exception;
  8. use Yii;
  9. class LevelController extends BaseController
  10. {
  11. public $enableCsrfValidation = false;
  12. public function actionIndex()
  13. {
  14. $request = Yii::$app->request;
  15. if ($request->isAjax) {
  16. // 查询参数
  17. $get = \Yii::$app->request->get();
  18. $where[] = ['=', 'mall_id', $this->mall_id];
  19. $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
  20. $where[] = ['or', ['like', 'name', $get['keyword']], ['like', 'level', $get['keyword']]];
  21. $params = array('where' => $where, 'order' => 'id desc', 'limit' => $request->get('limit', 12));
  22. $params['order'] = 'level asc';
  23. $page_data = RebateUserLevel::listPage($params, false);
  24. return $this->success('操作成功', $page_data);
  25. }
  26. return $this->render($this->action->id);
  27. }
  28. public function actionSwitchStatus()
  29. {
  30. if (\Yii::$app->request->isAjax) {
  31. if (\Yii::$app->request->isPost) {
  32. $params = \Yii::$app->request->post();
  33. $res = Yii::$app->services->validate->validate($params, [
  34. [['id'], 'required'],
  35. [['status'], 'integer']
  36. ]);
  37. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  38. $params['mall_id'] = $this->mall_id;
  39. $res = RebateUserLevel::setData($params);
  40. if ($res === false) return $this->error(RebateUserLevel::getStaticError());
  41. return $this->success('操作成功');
  42. }
  43. }
  44. return $this->error();
  45. }
  46. public function actionDelete()
  47. {
  48. if (\Yii::$app->request->isAjax) {
  49. if (\Yii::$app->request->isPost) {
  50. $params = \Yii::$app->request->post();
  51. $res = Yii::$app->services->validate->validate($params, [
  52. [['id'], 'required'],
  53. ]);
  54. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  55. $params['mall_id'] = $this->mall_id;
  56. $params['status'] = StatusEnum::DELETE;
  57. $res = RebateUserLevel::del($params);
  58. if ($res === false) return $this->error(RebateUserLevel::getStaticError());
  59. return $this->success('操作成功');
  60. }
  61. }
  62. return $this->error();
  63. }
  64. public function actionEdit()
  65. {
  66. try {
  67. $request = Yii::$app->request;
  68. if ($request->isAjax) {
  69. if ($request->isGet) {
  70. $id = Yii::$app->request->get('id', '');
  71. $mall_id = $this->mall_id;
  72. $data = [];
  73. if (!empty($id)) {
  74. $model = RebateUserLevel::getOne([['id' => $id]], true);
  75. $model['checked_condition_values'] = json_decode($model['checked_condition_values'], true) ?? [];
  76. if (empty($model['checked_condition_values'])) unset($model['checked_condition_values']);
  77. $model['checked_condition_keys'] = json_decode($model['checked_condition_keys'], true) ?? [];
  78. $model['goods_ids'] = json_decode($model['goods_ids'], true) ?? [];
  79. $model['goods_list'] = json_decode($model['goods_list'], true) ?? [];
  80. if (!empty($model['goods_list'])) {
  81. $goods_ids = array_column($model['goods_list'], 'id');
  82. $goods_list = Goods::lists(['where' => [['id' => $goods_ids]], 'select' => 'id,cover_pic,goods_name,price,stock', 'index' => 'id']);
  83. foreach ($model['goods_list'] as &$item) {
  84. if (isset($goods_list[$item['id']])) {
  85. $item['cover_pic'] = $goods_list[$item['id']]['cover_pic'];
  86. $item['name'] = $goods_list[$item['id']]['goods_name'];
  87. }
  88. }
  89. }
  90. unset($model['updated_at'], $model['created_at']);
  91. $data['detail'] = $model;
  92. }
  93. $data['weights'] = RebateUserLevel::getLevelWeights($this->mall_id);
  94. $source_list = RebateUserLevel::find()->select('level,name')->where(['status' => StatusEnum::ENABLED, 'mall_id' => $mall_id])->asArray()->all();
  95. $data['source_list']=$source_list;
  96. return $this->success('操作成功', $data);
  97. }
  98. if ($request->isPost) {
  99. $params = Yii::$app->request->post()['form'];
  100. $res = Yii::$app->services->validate->validate($params, [
  101. [['level', 'name'], 'required'],
  102. [['id', 'is_auto_upgrade', 'checked_condition_values',
  103. 'checked_condition_keys', 'condition_type', 'upgrade_type_goods', 'goods_list', 'upgrade_type_condition', 'goods_ids', 'goods_type',
  104. 'buy_goods_type', 'explain', 'status'], 'safe']
  105. ]);
  106. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  107. if (!empty($params['id'])) {
  108. $rebate_user_level = RebateUserLevel::findOne(['id' => $params['id'], 'mall_id' => $this->mall_id, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]);
  109. if ($rebate_user_level && $rebate_user_level->level != $params['level']) {
  110. $res = RebateUser::findOne(['mall_id' => $this->mall_id, 'level' => $rebate_user_level->level, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]);
  111. if ($res) return $this->error('该等级关联了用户,等级不能修改');
  112. }
  113. }
  114. $params['mall_id'] = $this->mall_id;
  115. $res = RebateUserLevel::setData($params);
  116. if ($res === false) throw new Exception(RebateUserLevel::getStaticCodeError()['error']);
  117. return $this->success('操作成功');
  118. }
  119. }
  120. } catch (\Exception $e) {
  121. return $this->error($e->getMessage(), []);
  122. }
  123. return $this->render('edit');
  124. }
  125. }