PoolPrizeController.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. namespace addons\Boss\backend\controllers;
  3. use addons\Boss\common\models\AddonsBoss;
  4. use addons\Boss\common\models\AddonsBossLevel;
  5. use addons\Boss\common\models\BossPoolPrizeCommissionLog;
  6. use addons\Boss\common\models\BossPoolPrizeJob;
  7. use addons\Boss\common\models\BossPoolPrizeOrderLog;
  8. use Yii;
  9. use common\controllers\AddonsController;
  10. use common\enums\StatusEnum;
  11. use common\models\order\OrderDetail;
  12. use common\models\user\User;
  13. /**
  14. *
  15. * Class PoolPrizeController
  16. * @package addons\Boss\backend\controllers
  17. */
  18. class PoolPrizeController extends AddonsController
  19. {
  20. /**
  21. * @var string
  22. */
  23. public $enableCsrfValidation = false;
  24. public function actionIndex()
  25. {
  26. if (Yii::$app->request->isAjax) {
  27. if (Yii::$app->request->isGet) {
  28. $get = Yii::$app->request->get();
  29. $where = $list = [];
  30. $where[] = ['=', 'status', StatusEnum::ENABLED];
  31. $where[] = ['=', 'mall_id', $this->mall_id];
  32. $with = ['user'];
  33. $order = 'created_at desc';
  34. $params = array('where' => $where, 'order' => $order, 'with' => $with, 'limit' => $get['limit'] ?? 15);
  35. $list = BossPoolPrizeOrderLog::listPage($params, false, true);
  36. if ($list === false) return $this->error(BossPoolPrizeOrderLog::getStaticError());
  37. $order_detail = OrderDetail::lists([
  38. 'where' => [
  39. ['order_id' => array_column($list['list'], 'order_id')]
  40. ],
  41. 'select' => 'order_id, goods_name',
  42. 'index' => 'order_id'
  43. ]);
  44. foreach ($list['list'] as &$v) {
  45. $v['goods_name'] = isset($order_detail[$v['order_id']]) ? $order_detail[$v['order_id']]['goods_name'] : '--';
  46. }
  47. unset($v);
  48. return $this->success('获取成功', compact('list'));
  49. }
  50. }
  51. return $this->render($this->action->id);
  52. }
  53. public function actionUser()
  54. {
  55. if (Yii::$app->request->isAjax) {
  56. $get = Yii::$app->request->get();
  57. // 检查提交的参数
  58. $res = Yii::$app->services->validate->validate($get, [
  59. [['id', 'level', 'user_id'], 'integer'],
  60. [['id', 'keyword'], 'safe'],
  61. ]);
  62. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  63. // 获取股东等级
  64. $level_list = AddonsBossLevel::getBossLevel([['mall_id' => $this->mall_id]], [], true, 'level,name');
  65. $where = $list = [];
  66. $where[] = ['=', 'status', StatusEnum::ENABLED];
  67. $where[] = ['=', 'mall_id', $this->mall_id];
  68. $where[] = ['>', 'bonus_pool_commission', 0];
  69. !empty($get['user_id']) && $where[] = ['=', 'user_id', $get['user_id']];
  70. // 根据搜索手机号查询用户id
  71. if (!empty($get['keyword'])) {
  72. $user_ids = User::find()->select("id")->where(['mall_id' => $this->mall_id])->andWhere(['like', 'mobile', $get['keyword'] . '%', false])->asArray()->column();
  73. if (empty($user_ids)) $this->success('获取成功', compact('list', 'level_list', 'upgrade_type', 'parents'));
  74. $where[] = ['in', 'user_id', $user_ids];
  75. }
  76. $with = ['user'];
  77. $order = 'created_at desc';
  78. $params = array('where' => $where, 'order' => $order, 'with' => $with, 'limit' => $get['limit']);
  79. $list = AddonsBoss::listPage($params, false, true);
  80. if ($list === false) return $this->error(AddonsBoss::getStaticError());
  81. return $this->success('获取成功', compact('list', 'level_list'));
  82. }
  83. return $this->render($this->action->id);
  84. }
  85. public function actionCommissionLog()
  86. {
  87. if (Yii::$app->request->isAjax) {
  88. $get = Yii::$app->request->get();
  89. $where = $list = [];
  90. $where[] = ['=', 'status', StatusEnum::ENABLED];
  91. $where[] = ['=', 'mall_id', $this->mall_id];
  92. $where[] = ['=', 'boss_id', $get['boss_id']];
  93. $with = [];
  94. $order = 'created_at desc';
  95. $params = array('where' => $where, 'order' => $order, 'with' => $with, 'limit' => $get['limit'] ?? 15);
  96. $list = BossPoolPrizeCommissionLog::listPage($params, false, true);
  97. if ($list === false) return $this->error(BossPoolPrizeCommissionLog::getStaticError());
  98. $user = User::getOne([['id' => $get['user_id']]], true, [], false, 'id, nickname, avatar_url, mobile');
  99. foreach ($list['list'] as &$v) {
  100. $v['created_at'] = date('Y-m-d H:i:s', $v['created_at']);
  101. $v['start_at'] = date('Y-m-d', strtotime($v['start_at']));
  102. $v['end_at'] = date('Y-m-d', strtotime($v['end_at']));
  103. $v['billing_cycle'] = $v['billing_cycle'] == 1 ? '天' : ($v['billing_cycle'] == 2 ? '周' : '月');
  104. }
  105. return $this->success('获取成功', compact('list', 'user'));
  106. }
  107. }
  108. public function actionSettlementList()
  109. {
  110. if (Yii::$app->request->isAjax) {
  111. if (Yii::$app->request->isGet) {
  112. $get = Yii::$app->request->get();
  113. $where = $list = [];
  114. $where[] = ['=', 'status', StatusEnum::ENABLED];
  115. $where[] = ['=', 'mall_id', $this->mall_id];
  116. if (isset($get['start_at']) && !empty($get['start_at'])) {
  117. $where[] = ['>=', 'created_at', strtotime($get['start_at'])];
  118. }
  119. if (isset($get['end_at']) && !empty($get['end_at'])) {
  120. $where[] = ['<=', 'created_at', strtotime($get['end_at'])];
  121. }
  122. $order = 'created_at desc';
  123. $params = array('where' => $where, 'order' => $order, 'limit' => $get['limit'] ?? 15);
  124. $list = BossPoolPrizeJob::listPage($params, false, true);
  125. if ($list === false) return $this->error(BossPoolPrizeJob::getStaticError());
  126. foreach ($list['list'] as &$val) {
  127. $date_limit = explode('-', $val['date_limit']);
  128. $val['date_limit'] = date('Y-m-d', strtotime($date_limit[0])) . '至' . date('Y-m-d', strtotime($date_limit[1]));
  129. }
  130. unset($val);
  131. return $this->success('获取成功', compact('list'));
  132. }
  133. }
  134. return $this->render($this->action->id);
  135. }
  136. public function actionSettlementDetail()
  137. {
  138. if (Yii::$app->request->isAjax) {
  139. $get = Yii::$app->request->get();
  140. $where = $list = [];
  141. $where[] = ['=', 'status', StatusEnum::ENABLED];
  142. $where[] = ['=', 'mall_id', $this->mall_id];
  143. $where[] = ['=', 'job_id', $get['job_id']];
  144. if (isset($get['user_id']) && !empty($get['user_id'])) {
  145. $where[] = ['user_id' => $get['user_id']];
  146. }
  147. if (isset($get['keyword']) && !empty($get['keyword'])) {
  148. $user_list = User::lists([
  149. 'where' => [
  150. ['mall_id' => $this->mall_id],
  151. ['like', 'nickname', $get['keyword']]
  152. ],
  153. 'select' => 'id'
  154. ]);
  155. $where[] = ['user_id' => array_column($user_list, 'id') ?? []];
  156. }
  157. $with = [
  158. 'user' => function ($query) {
  159. return $query->select('id, nickname, avatar_url, mobile');
  160. }
  161. ];
  162. $order = 'id desc';
  163. $params = array('where' => $where, 'order' => $order, 'with' => $with, 'limit' => $get['limit'] ?? 15);
  164. $list = BossPoolPrizeCommissionLog::listPage($params, false, true);
  165. if ($list === false) return $this->error(BossPoolPrizeCommissionLog::getStaticError());
  166. return $this->success('获取成功', compact('list'));
  167. }
  168. return $this->render($this->action->id);
  169. }
  170. public function actionGetTopData()
  171. {
  172. if (Yii::$app->request->isAjax) {
  173. if (Yii::$app->request->isGet) {
  174. $prize_pool_amount = BossPoolPrizeOrderLog::find()
  175. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'settlement_status' => StatusEnum::DISABLED])
  176. ->sum('amount');
  177. $prize_pool_amount = $prize_pool_amount ? $prize_pool_amount : 0;
  178. $data = [
  179. 'prize_pool_amount' => $prize_pool_amount,
  180. ];
  181. return $this->success('获取成功', $data);
  182. }
  183. }
  184. }
  185. }