| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- <?php
- /**
- * Created by PhpStorm.
- * User: wniu
- * Date: 2022/3/31
- * Time: 9:54 上午
- */
- namespace addons\LuckyGroup\api\modules\v1\controllers;
- use addons\LuckyGroup\common\enums\LuckyGroupEnum;
- use addons\LuckyGroup\common\models\LuckyGroupBonusLog;
- use addons\LuckyGroup\common\models\LuckyGroupBonusPool;
- use addons\LuckyGroup\common\models\LuckyGroupFrozenLog;
- use addons\LuckyGroup\common\models\LuckyGroupUser;
- use api\controllers\OnAuthController;
- use common\enums\AddonsEnum;
- use common\enums\AssetsType;
- use common\enums\StatusEnum;
- use common\enums\UserWalletEnum;
- use common\models\common\CapitalLog;
- use common\models\user\User;
- use common\models\user\UserPartitionRelationship;
- class AwardController extends OnAuthController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = ['index'];
- /**
- * 奖金池
- * 1,奖金池:虚拟奖金池+实际奖金。瓜分人数:虚拟人数+实际瓜分人数
- * @Author pin
- * @DateTime 2021-04-20 14:48:47
- * @return void
- * @copyright: Copyright (c) 2020 广东七件事集团
- */
- public function actionBonusPool()
- {
- $res = [
- 'total_bonus' => 0,
- 'my_bonus' => 0,
- 'already_give' => 0,
- 'wait_give' => 0,
- 'in_user_num' => 0,
- ];
- $frozen_log_list = LuckyGroupFrozenLog::lists(['where' => [
- ['<>', 'is_send', 1],
- ['=', 'prize_type', UserWalletEnum::POOL_REWARD],
- ['=', 'mall_id', $this->mall_id],
- ],
- 'order' => 'created_at asc'
- ], false);
- $bonus_pool_conf = \Yii::$app->services->setting->addons->get($this->mall_id, LuckyGroupEnum::ADDONS_NAME, 'bonus_pool');
- $pool_win_num = $bonus_pool_conf['cond_complete_num'] ?? 0; //奖金池分红拼中次数条件
- $user_id_arr = array_column($frozen_log_list, 'user_id');
- $data = LuckyGroupBonusPool::getOne([['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]]);
- $group_user_list = LuckyGroupUser::lists(['where' => [['user_id' => $user_id_arr], ['>=', 'win_num', $pool_win_num]], 'index' => 'user_id'], false);
- $user_wait_send_num = count($group_user_list);
- $res['in_user_num'] = $user_wait_send_num;
- //获取拼团用户
- $group_user = LuckyGroupUser::getGroupUser($this->mall_id, $this->user_id);
- if ($group_user === false) return $this->error(LuckyGroupUser::getStaticError());
- if ($data) {
- $res['total_bonus'] = $data->money;
- $res['my_bonus'] = $group_user->pool_commission;
- $res['wait_give'] = $group_user->frozen_commission;
- $res['already_give'] = bcsub($group_user->pool_commission, $group_user->frozen_commission, 2);
- }
- return $this->success('success', $res);
- }
- public function actionGetExpandNum()
- {
- $count1 = UserPartitionRelationship::getChildCounts($this->user_id, 1);
- $count2 = UserPartitionRelationship::getChildCounts($this->user_id, 2);
- return $this->success('success', ['level_one' => $count1, 'level_two' => $count2, 'all' => $count1 + $count2]);
- }
- /**
- * 我的推广
- * User: wniu
- * Date: 2022/3/31
- * Time: 3:36 下午
- *
- */
- public function actionExpand()
- {
- $get = \Yii::$app->request->get();
- $res = \Yii::$app->services->validate->validate($get, [
- [['level'], 'required'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- $params['where'][] = ['=', 'status', StatusEnum::ENABLED];
- $params['select'] = 'id,nickname,avatar_url,created_at';
- if ($get['level'] == 1) {
- $children_id_arr = UserPartitionRelationship::getChildIdArr($this->user_id, 1);
- } else {
- $children_id_arr = UserPartitionRelationship::getChildIdArr($this->user_id, 2);
- }
- $params['where'][] = ['in', 'id', $children_id_arr];
- $user_list = User::listPage($params);
- $group_list = [];
- if ($user_list['list']) {
- $group_ids = array_column($user_list['list'], 'id');
- $group_list = LuckyGroupUser::lists(['where' => [['in', 'user_id', $group_ids]], 'select' => 'user_id,attend_money', 'index' => 'user_id']);
- foreach ($user_list['list'] as $k => &$v) {
- $v['attend_money'] = 0;
- if (isset($group_list[$v['id']])) {
- $v['attend_money'] = $group_list[$v['id']]['attend_money'];
- }
- }
- }
- return $this->success('success', $user_list);
- }
- /**
- * 分红池排行榜
- * User: wniu
- * Date: 2022/3/31
- * Time: 3:36 下午
- *
- */
- public function actionRankList()
- {
- $params = \Yii::$app->request->get();
- $params['where'] = [
- ['mall_id' => $this->mall_id]
- ];
- $params['order'] = 'win_num desc ,user_id desc';
- $params['select'] = 'pool_commission ,user_id,win_num';
- $params['with'] = ['user'];
- $list = LuckyGroupUser::listPage($params);
- if ($list['list']) {
- $n = ($list['page'] - 1) * $list['page_size'] + 1;
- foreach ($list['list'] as $k => &$v) {
- $v['rank'] = $n;
- $n++;
- }
- }
- return $this->success('success', $list);
- }
- /**
- * 往期奖金列表
- * User: wniu
- * Date: 2022/3/31
- * Time: 3:37 下午
- *
- */
- public function actionHistoryList()
- {
- $params['where'] = [
- ['mall_id' => $this->mall_id]
- ];
- $params['order'] = 'created_at desc';
- $params['select'] = 'created_at,user_num,money,user_price';
- $list = LuckyGroupBonusLog::listPage($params);
- if(!empty($list['list'])){
- foreach ($list['list'] as &$item){
- if(empty($item['user_num'])) $item['user_price'] = 0;
- }
- }
- return $this->success('success', $list);
- }
- /**
- * 我的收益
- * User: wniu
- * Date: 2022/3/31
- * Time: 4:25 下午
- *
- */
- public function actionMyList()
- {
- $get = \Yii::$app->request->get();
- $res = \Yii::$app->services->validate->validate($get, [
- [['send_type', 'money_type'], 'required'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- $params['where'] = [
- ['mall_id' => $this->mall_id],
- ['change_type' => 'add'],
- ['user_id' => $this->user_id],
- ['from_type' => AddonsEnum::ADDONS_NAME_LUCKY_GROUP]
- ];
- $params['select'] = 'desc,capital_type,change_num,created_at';
- $params['order'] = 'created_at desc';
- $award = AssetsType::REWARD_MAP;
- $frozen = '';
- if ($get['send_type'] == 'wait') {//待结算
- $frozen = '_frozen';
- }
- if ($get['money_type'] == 'balance') {
- $capital_type = [
- UserWalletEnum::FIRST,
- UserWalletEnum::SECOND,
- UserWalletEnum::ATTEND_REWARD,
- UserWalletEnum::WIN_REWARD,
- UserWalletEnum::POOL_REWARD,
- UserWalletEnum::INVITE_REWARD,
- ];
- $params['where'][] = ['in','capital_type',$capital_type];
- $wallet_type = 'balance' . $frozen;
- } elseif ($get['money_type'] == 'score') {
- $wallet_type = 'score' . $frozen;
- } elseif ($get['money_type'] == 'commission') {
- $wallet_type = 'commission' . $frozen;
- }
- CapitalLog::$capitalType = "{$wallet_type}";
- $list = CapitalLog::listPage($params);
- if ($list['list']) {
- foreach ($list['list'] as $k => &$v) {
- $v['text'] = isset($award[$v['capital_type']]) ? $award[$v['capital_type']] : '';
- $v['created_at'] = date('Y-m-d H:i:s', $v['created_at']);
- }
- }
- return $this->success('success', $list);
- }
- }
|