RewardPoolController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace addons\LuckyGroup\backend\controllers;
  3. use addons\LuckyGroup\common\enums\LuckyGroupEnum;
  4. use addons\LuckyGroup\common\models\LuckyGroupBonusPool;
  5. use addons\LuckyGroup\common\models\LuckyGroupFrozenLog;
  6. use addons\LuckyGroup\common\models\LuckyGroupLevel;
  7. use addons\LuckyGroup\common\models\LuckyGroupUser;
  8. use common\enums\StatusEnum;
  9. use common\enums\UserWalletEnum;
  10. use common\models\common\MallSetting;
  11. use common\models\user\User;
  12. class RewardPoolController extends BaseController
  13. {
  14. public function actionIndex()
  15. {
  16. if (\Yii::$app->request->isAjax) {
  17. if (\Yii::$app->request->isGet) {
  18. $params = \Yii::$app->request->get();
  19. $where = [];
  20. $where[] = ['mall_id' => $this->mall_id];
  21. $where[] = ['status' =>StatusEnum::ENABLED];
  22. if (!empty($params['bonus_log_id'])) $where[] = ['bonus_log_id' => trim($params['bonus_log_id'])];
  23. if (!empty($params['user_id'])) $where[] = ['user_id' => trim($params['user_id'])];
  24. if (!empty($params['level'])) $where[] = ['level' => trim($params['level'])];
  25. if (isset($params['is_send'])&&$params['is_send']!=='') $where[] = ['is_send' => trim($params['is_send'])];
  26. if (!empty($params['nickname'])) {
  27. $user_list = User::lists(['where' => [['like', 'nickname', trim($params['nickname']) . '%', false], ['mall_id' => $this->mall_id],], 'select' => 'id']);
  28. $user_id_arr = array_column($user_list, 'id');
  29. $where[] = ['user_id' => $user_id_arr];
  30. }
  31. $params['where'] = $where;
  32. $params['order'] = 'id desc';
  33. $list = LuckyGroupFrozenLog::listPage($params);
  34. $level_list = LuckyGroupLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]],
  35. 'select' => 'level,name', 'index' => 'level', 'order' => 'level asc']);
  36. $list['level_list'] = $level_list;
  37. if (!empty($list['list'])) {
  38. $user_id_arr = array_column($list['list'], 'user_id');
  39. $user_list = User::lists(['where' => [['id' => $user_id_arr], ['status' => StatusEnum::ENABLED]], 'index' => 'id', 'select' => 'id,nickname,username,avatar_url']);
  40. foreach ($list['list'] as &$item) {
  41. $item['nickname'] = $item['username'] = $item['avatar_url'] = $item['activity_title'] = $item['goods_name'] = $item['level_name'] = MallSetting::getDefaultLevelName($this->mall_id);
  42. if (isset($user_list[$item['user_id']])) {
  43. $item['nickname'] = $user_list[$item['user_id']]['nickname'];
  44. $item['username'] = $user_list[$item['user_id']]['username'];
  45. $item['avatar_url'] = $user_list[$item['user_id']]['avatar_url'] ?: \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
  46. }
  47. if (isset($level_list[$item['level']])) $item['level_name'] = $level_list[$item['level']]['name'] ?? MallSetting::getDefaultLevelName($this->mall_id);
  48. }
  49. }
  50. $page = \Yii::$app->request->get('page');
  51. if ($page == 1) {
  52. $params['group']='is_send';
  53. $params['select'] = 'sum(money) as money,is_send';
  54. $params['index'] = 'is_send';
  55. $static_list = LuckyGroupFrozenLog::lists($params);
  56. $total_money = array_sum(array_column($static_list,'money'));
  57. $static_arr =[
  58. 'total_money'=>$total_money,
  59. 'is_send0'=>$static_list[0]['money']??0,
  60. 'is_send1'=>$static_list[1]['money']??0,
  61. 'is_send2'=>$static_list[2]['money']??0,
  62. ];
  63. $list['static_arr'] = $static_arr;
  64. //首次请求统计
  65. $countPoolMoney = LuckyGroupFrozenLog::find()
  66. ->select('sum(money) as user_total_money,sum(has_money) as total_has_money')
  67. ->where(array('mall_id' => $this->mall_id))
  68. ->andWhere(array('in', 'prize_type', [UserWalletEnum::POOL_REWARD]))
  69. ->asArray()
  70. ->one(); //待发放金额(元)
  71. $user_total_money = $countPoolMoney['user_total_money'] ?? 0;
  72. $user_has_send_money = $countPoolMoney['total_has_money'] ?? 0;
  73. $BonusPool = LuckyGroupBonusPool::findOne(['mall_id' => $this->mall_id]);
  74. $table_data['pool_total_money'] = $BonusPool['total_money'] ?? 0; //奖金池总额(元)
  75. $table_data['pool_money'] = $BonusPool['money'] ?? 0; //奖金余额总计(元)
  76. $table_data['pool_total_send_money'] = $table_data['pool_total_money'] - $table_data['pool_money']; //累计发放奖金总计(元)
  77. $table_data['pool_virtual_send_money'] = $BonusPool['virtual_send_money']??0; //累计虚拟发放奖金总计(元)
  78. $table_data['user_total_money'] = $user_total_money; // 用户总金额
  79. $table_data['user_has_send_money'] = $user_has_send_money; //用户已发放金额
  80. $table_data['user_wait_send_money'] = $user_total_money - $user_has_send_money; // 用户待发放金额
  81. $frozen_log_list = LuckyGroupFrozenLog::lists(['where' => [
  82. ['<>', 'is_send', 1],
  83. ['=', 'prize_type', UserWalletEnum::POOL_REWARD],
  84. ['=', 'mall_id', $this->mall_id],
  85. ],
  86. 'order' => 'created_at asc'
  87. ], false);
  88. $bonus_pool_conf = \Yii::$app->services->setting->addons->get($this->mall_id, LuckyGroupEnum::ADDONS_NAME, 'bonus_pool');
  89. $pool_win_num = $bonus_pool_conf['cond_complete_num'] ?? 0; //奖金池分红拼中次数条件
  90. $user_id_arr = array_column($frozen_log_list, 'user_id');
  91. $group_user_list = LuckyGroupUser::lists(['where' => [['user_id' => $user_id_arr], ['>=', 'win_num', $pool_win_num]], 'index' => 'user_id'], false);
  92. $table_data['user_wait_send_num'] = count($group_user_list);
  93. $list['table_data'] = $table_data;
  94. }
  95. return $this->success('success', $list);
  96. }
  97. } else {
  98. return $this->render('index');
  99. }
  100. }
  101. }