GroupTeamController.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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\user\User;
  8. class GroupTeamController extends BaseController
  9. {
  10. public function actionIndex()
  11. {
  12. if (\Yii::$app->request->isAjax) {
  13. if (\Yii::$app->request->isGet) {
  14. $page = \Yii::$app->request->get('page', 1);
  15. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  16. $user_id = \Yii::$app->request->get('user_id');
  17. $user_keyword = \Yii::$app->request->get('user_keyword');
  18. $start_time = \Yii::$app->request->get('start_time');
  19. $end_time = \Yii::$app->request->get('end_time');
  20. $wheres[] = ['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED];
  21. if (!empty($start_time)) {
  22. $wheres[] = ['>=', 'created_at', strtotime($start_time)];
  23. }
  24. if (!empty($end_time)) {
  25. $wheres[] = ['<=', 'created_at', strtotime($end_time . ' 23:59:59')];
  26. }
  27. if (!empty($user_id)) {
  28. $users = User::find()
  29. ->select('id,nickname,mobile,avatar_url,parent_id')
  30. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $user_id])
  31. ->asArray()
  32. ->indexBy('id')
  33. ->all();
  34. $wheres[] = ['user_id' => $user_id];
  35. }
  36. if (!empty($user_keyword)) {
  37. $users = User::find()
  38. ->select('id,nickname,mobile,avatar_url,parent_id')
  39. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  40. ->andWhere(['or', ['like', 'nickname', $user_keyword], ['like', 'mobile', $user_keyword]])
  41. ->asArray()
  42. ->indexBy('id')
  43. ->all();
  44. $wheres[] = ['user_id' => array_column($users, 'id')];
  45. }
  46. $params = [
  47. 'select' => 'id,user_id,level,attend_times,has_attend_times,win_num,created_at',
  48. 'where' => $wheres,
  49. 'order' => 'created_at desc',
  50. 'page' => $page,
  51. 'limit' => $limit,
  52. ];
  53. $lists = LuckyGroupUser::listPage($params);
  54. if (false === $lists['list']) {
  55. return $this->error(LuckyGroupUser::getStaticError());
  56. }
  57. if (empty($users)) {
  58. $user_ids = array_column($lists['list'], 'user_id');
  59. $users = User::find()
  60. ->select('id,nickname,mobile,avatar_url,parent_id')
  61. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $user_ids])
  62. ->asArray()
  63. ->indexBy('id')
  64. ->all();
  65. }
  66. $parent_ids = array_column($users, 'parent_id');
  67. $parents = User::find()
  68. ->select('id,nickname,mobile,avatar_url,parent_id')
  69. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $parent_ids])
  70. ->asArray()
  71. ->indexBy('id')
  72. ->all();
  73. $levels = LuckyGroupLevel::find()
  74. ->select('id,level,name')
  75. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  76. ->asArray()
  77. ->indexBy('level')
  78. ->all();
  79. foreach ($lists['list'] as &$list) {
  80. $user = $users[$list['user_id']] ?? [];
  81. $parent = $parents[$user['parent_id'] ?? 0] ?? [];
  82. $level = $levels[$list['level']] ?? [];
  83. $list['nickname'] = $user['nickname'] ?? '';
  84. $list['mobile'] = $user['mobile'] ?? '';
  85. $list['avatar_url'] = !empty($user['avatar_url']) ? $user['avatar_url'] : \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
  86. $list['parent_id'] = $parent['id'] ?? 0;
  87. $list['parent_nickname'] = $parent['nickname'] ?? '';
  88. $list['parent_avatar_url'] = !empty($parent['avatar_url']) ? $parent['avatar_url'] : \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
  89. $list['parent_mobile'] = $parent['mobile'] ?? '';
  90. $list['level_name'] = $level['name'] ?? '默认等级';
  91. }
  92. $lists['level_list'] = array_values($levels);
  93. return $this->success('success', $lists);
  94. } else {}
  95. } else {
  96. return $this->render('/group-user/index');
  97. }
  98. }
  99. /**
  100. * @name:
  101. * @msg: 给拼团会员增加参团次数
  102. * @param {*}
  103. * @return {*}
  104. */
  105. public function actionAddAttendTimes()
  106. {
  107. if (!\Yii::$app->request->isPost) {
  108. return $this->error('请求方式错误');
  109. }
  110. $post = \Yii::$app->request->post();
  111. $rules = [
  112. [['num', 'user_id'], 'required'],
  113. [['num', 'user_id'], 'integer'],
  114. ];
  115. $res = \Yii::$app->services->validate->validate($post, $rules);
  116. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  117. // dd($post);
  118. $res = LuckyGroupUser::saveAttendTimes($this->mall_id, $post['user_id'], $post['num'], LuckyGroupEnum::ADMIN_GRANT);
  119. if (false === $res) {
  120. return $this->error(LuckyGroupUser::getStaticError());
  121. }
  122. return $this->success('操作成功');
  123. }
  124. /**
  125. * @name:
  126. * @msg: 修改会员拼团等级
  127. * @param {*}
  128. * @return {*}
  129. */
  130. public function actionEditLevel()
  131. {
  132. if (!\Yii::$app->request->isPost) {
  133. return $this->error('请求方式错误');
  134. }
  135. $post = \Yii::$app->request->post();
  136. $rules = [
  137. [['id', 'level'], 'required'],
  138. [['id', 'level'], 'integer'],
  139. ];
  140. $res = \Yii::$app->services->validate->validate($post, $rules);
  141. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  142. $res = LuckyGroupUser::setData($this->mall_id, $post);
  143. if (false === $res) {
  144. return $this->error(LuckyGroupUser::getStaticError());
  145. }
  146. return $this->success('操作成功');
  147. }
  148. /**
  149. * @name:
  150. * @msg: 搜索拼团会员
  151. * @param {*}
  152. * @return {*}
  153. */
  154. public function actionSearchUser()
  155. {
  156. if (!\Yii::$app->request->isGet) {
  157. return $this->error('请求方式错误');
  158. }
  159. $keyword = \Yii::$app->request->get('keyword');
  160. $query = User::find()->select('id,nickname,mobile,avatar_url')->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'is_inviter' => 1]);
  161. if (!empty($keyword)) {
  162. $query->andWhere(['or', ['id' => $keyword], ['like', 'nickname', $keyword], ['like', 'mobile', $keyword]]);
  163. }
  164. $users = $query->asArray()->orderBy('created_at desc')->limit(100)->all();
  165. return $this->success('success', ['list' => $users]);
  166. }
  167. /**
  168. * @name:
  169. * @msg: 添加拼团会员
  170. * @param {*}
  171. * @return {*}
  172. */
  173. public function actionAddGroupUser()
  174. {
  175. if (!\Yii::$app->request->isPost) {
  176. return $this->error('请求方式错误');
  177. }
  178. $post = \Yii::$app->request->post();
  179. $rules = [
  180. [['user_id', 'level'], 'required'],
  181. [['user_id', 'level'], 'integer'],
  182. ];
  183. $res = \Yii::$app->services->validate->validate($post, $rules);
  184. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  185. $res = LuckyGroupUser::setData($this->mall_id, $post);
  186. if (false === $res) {
  187. return $this->error(LuckyGroupUser::getStaticError());
  188. }
  189. return $this->success('操作成功');
  190. }
  191. }