GroupLevelController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. namespace addons\LuckyGroup\backend\controllers;
  3. use addons\LuckyGroup\common\enums\LuckyGroupEnum;
  4. use addons\LuckyGroup\common\models\LuckyGroupLevel;
  5. use addons\LuckyGroup\common\models\LuckyGroupUser;
  6. use common\enums\StatusEnum;
  7. use common\models\common\UpgradeCondition;
  8. use common\models\goods\Goods;
  9. class GroupLevelController extends BaseController
  10. {
  11. /**
  12. * @name:
  13. * @msg: 拼团等级首页
  14. * @param {*}
  15. * @return {*}
  16. */
  17. public function actionIndex()
  18. {
  19. if (\Yii::$app->request->isAjax) {
  20. if (\Yii::$app->request->isGet) {
  21. $page = \Yii::$app->request->get('page', 1);
  22. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  23. $keyword = \Yii::$app->request->get('keyword');
  24. $wheres[] = ['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED];
  25. if (!empty($keyword)) {
  26. $wheres[] = ['like', 'name', $keyword];
  27. }
  28. $params = [
  29. 'select' => 'id,level,name,team_commission,is_percent_team,equal_commission,is_percent_equal,over_commission,is_percent_over,created_at',
  30. 'where' => $wheres,
  31. 'order' => 'level asc,created_at desc',
  32. 'page' => $page,
  33. 'limit' => $limit,
  34. ];
  35. $list = LuckyGroupLevel::listPage($params);
  36. if (false === $list['list']) {
  37. return $this->error(LuckyGroupLevel::getStaticError());
  38. }
  39. foreach ($list['list'] as &$val) {
  40. if (1 == $val['is_percent_team']) {
  41. $val['team_commission'] .= '%';
  42. } else {
  43. $val['team_commission'] .= ' 元';
  44. }
  45. if (1 == $val['is_percent_equal']) {
  46. $val['equal_commission'] .= '%';
  47. } else {
  48. $val['equal_commission'] .= ' 元';
  49. }
  50. if (1 == $val['is_percent_over']) {
  51. $val['over_commission'] .= '%';
  52. } else {
  53. $val['over_commission'] .= ' 元';
  54. }
  55. }
  56. return $this->success('success', $list);
  57. } else {
  58. }
  59. } else {
  60. return $this->render('/level/index');
  61. }
  62. }
  63. /**
  64. * @name:
  65. * @msg: 拼团等级--编辑 or 添加
  66. * @param {*}
  67. * @return {*}
  68. */
  69. public function actionStorage()
  70. {
  71. if (\Yii::$app->request->isAjax) {
  72. if (\Yii::$app->request->isGet) {
  73. $id = \Yii::$app->request->get('id');
  74. $data['weights'] = LuckyGroupLevel::getLevelWeights($this->mall_id);
  75. if (!empty($id)) {
  76. // 编辑等级
  77. $level_info = LuckyGroupLevel::find()
  78. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $id])
  79. ->asArray()
  80. ->one();
  81. if (!empty($level_info['checked_condition_keys'])) {
  82. $level_info['checked_condition_keys'] = json_decode($level_info['checked_condition_keys'], true);
  83. } else {
  84. $level_info['checked_condition_keys'] = [];
  85. }
  86. if (!empty($level_info['checked_condition_values'])) {
  87. $level_info['checked_condition_values'] = json_decode($level_info['checked_condition_values'], true);
  88. } else {
  89. $update_conditions = UpgradeCondition::getData(UpgradeCondition::$lucky_group_condition_ids);
  90. $condition_values = [];
  91. foreach ($update_conditions as $key => $condition) {
  92. $condition_values[] = [
  93. 'key' => $condition['id'],
  94. 'value' => [],
  95. ];
  96. foreach($condition['setting'] as $val) {
  97. $condition_values[$key]['value'][$val['name']] = $val['default_val'];
  98. }
  99. }
  100. $level_info['checked_condition_values'] = $condition_values;
  101. }
  102. if (!empty($level_info['goods_ids'])) {
  103. $level_info['goods_ids'] = json_decode($level_info['goods_ids'], true);
  104. $level_info['goods_list'] = Goods::find()
  105. ->select('id,goods_name as name,cover_pic,price')
  106. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $level_info['goods_ids']])
  107. ->orderBy('id asc')
  108. ->asArray()
  109. ->all();
  110. } else {
  111. $level_info['goods_ids'] = [];
  112. $level_info['goods_list'] = [];
  113. }
  114. } else {
  115. $level_info = [];
  116. }
  117. $data['level_info'] = $level_info;
  118. return $this->success('success', $data);
  119. } else {
  120. $post = \Yii::$app->request->post();
  121. // dd($post);
  122. if ($post['is_auto_upgrade'] == 1 && $post['upgrade_type_condition'] == 1 && empty($post['checked_condition_values'])) {
  123. return $this->error('按照条件自动升级必须先设置升级条件');
  124. }
  125. $rules = [
  126. [['name', 'team_commission', 'equal_commission', 'over_commission', 'init_attend_times', 'is_auto_upgrade', 'upgrade_type_goods', 'upgrade_type_condition', 'buy_goods_type', 'condition_type'], 'required'],
  127. [['level', 'init_attend_times', 'is_auto_upgrade', 'upgrade_type_goods', 'upgrade_type_condition', 'buy_goods_type', 'condition_type'], 'integer'],
  128. [['team_commission', 'equal_commission', 'over_commission'], 'number'],
  129. [['desc'], 'string'],
  130. [['id', 'goods_ids', 'checked_condition_keys', 'goods_type', 'checked_condition_values'], 'safe'],
  131. ];
  132. $res = \Yii::$app->services->validate->validate($post, $rules);
  133. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  134. $res = LuckyGroupLevel::setData($this->mall_id, $post);
  135. if (false === $res) {
  136. return $this->error(LuckyGroupLevel::getStaticError());
  137. }
  138. return $this->success('保存成功');
  139. }
  140. } else {
  141. $lucky_group_upgrade_condition = \Yii::$app->services->setting->addons->get($this->mall_id, LuckyGroupEnum::ADDONS_NAME, 'upgrade_condition');
  142. $list = [];
  143. if (!empty($lucky_group_upgrade_condition['lucky_group_level_upgrade_condition'])) {
  144. $ids = json_decode($lucky_group_upgrade_condition['lucky_group_level_upgrade_condition'], true);
  145. if (!empty($ids)) {
  146. if(!empty($ids)) {
  147. $list = UpgradeCondition::getData($ids);
  148. }
  149. }
  150. }
  151. $upgrade_condition_data = UpgradeCondition::getUpgradeConditionData($this, $this->mall_id, $list);
  152. // dd(json_decode($upgrade_condition_data['source_list'], true));
  153. // dd(json_decode($upgrade_condition_data['key_arr'], true));
  154. return $this->render('/level/add-edit', $upgrade_condition_data);
  155. }
  156. }
  157. /**
  158. * @name:
  159. * @msg: 升级条件设置
  160. * @param {*}
  161. * @return {*}
  162. */
  163. public function actionCondition()
  164. {
  165. if (\Yii::$app->request->isAjax) {
  166. try {
  167. if (\Yii::$app->request->isGet) {
  168. $data['upgrade_condition'] = UpgradeCondition::getData(UpgradeCondition::$lucky_group_condition_ids);
  169. $lucky_group_upgrade_condition = \Yii::$app->services->setting->addons->get($this->mall_id, LuckyGroupEnum::ADDONS_NAME, 'upgrade_condition');
  170. $data['checked_condition_keys'] = !empty($lucky_group_upgrade_condition['lucky_group_level_upgrade_condition']) ? json_decode($lucky_group_upgrade_condition['lucky_group_level_upgrade_condition'], true) : [];
  171. return $this->success('操作成功', $data);
  172. } else {
  173. $postData = \Yii::$app->request->post();
  174. if (!isset($postData['checked_condition_keys'])) {
  175. $postData['checked_condition_keys'] = [];
  176. }
  177. $data['upgrade_condition'] = ['lucky_group_level_upgrade_condition' => json_encode($postData['checked_condition_keys'])];
  178. \Yii::$app->services->setting->addons->set($this->mall_id, LuckyGroupEnum::ADDONS_NAME, $data);
  179. UpgradeCondition::clear($postData['checked_condition_keys'], 'addons\LuckyGroup\common\models\LuckyGroupLevel', $this->mall_id);
  180. return $this->success('操作成功');
  181. }
  182. } catch (\Exception $e) {
  183. return $this->error($e->getMessage());
  184. }
  185. } else {
  186. return $this->render('/level/condition');
  187. }
  188. }
  189. /**
  190. * @name:
  191. * @msg: 删除等级
  192. * @param {*}
  193. * @return {*}
  194. */
  195. public function actionDelete()
  196. {
  197. if (!\Yii::$app->request->isPost) {
  198. return $this->error('请求方式错误');
  199. }
  200. $id = \Yii::$app->request->post('id');
  201. if (empty($id)) {
  202. return $this->error('参数错误');
  203. }
  204. $level = LuckyGroupLevel::findOne(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $id]);
  205. if (empty($level)) {
  206. return $this->error('等级不存在');
  207. }
  208. $lg_user = LuckyGroupUser::findOne(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'level' => $level->level]);
  209. if (!empty($lg_user)) {
  210. return $this->error('当前等级有拼团会员,不能删除');
  211. }
  212. $params = ['id' => $id, 'status' => StatusEnum::DELETE];
  213. $res = LuckyGroupLevel::setData($this->mall_id, $params);
  214. if (false === $res) {
  215. return $this->error(LuckyGroupLevel::getStaticError());
  216. }
  217. return $this->success('删除成功');
  218. }
  219. }