request->isPost) { $data['user_id'] = $this->user_id; $data['nickname'] = $this->user->nickname ?? ''; $data['avatar_url'] = $this->user->avatar_url ?? ''; $addons = Addons::findOne(['name' => AddonsEnum::ADDONS_NAME_DOUBLE_COPY]); $addons_title = $addons ? $addons->title : '二二复制'; $data['addons_title'] = $addons_title; // 查询用户信息 $select = 'user_id,level,commission,frozen_commission,frozen_fund,is_thaw,thaw_percent'; $user = DoubleCopyUser::find()->select($select)->where(['user_id' => $this->user_id])->asArray()->one(); if (empty($user)) return $this->error('您并无参与该应用活动', compact('addons_title')); // 获取为结算佣金 CapitalLog::$capitalType = 'commission_frozen'; $frozen_commission = CapitalLog::find()->where(['user_id' => $this->user_id, 'from_type' => DoubleCopyEnum::ADDONS_NAME, 'status' => StatusEnum::DISABLED])->sum("change_num"); if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_DOUBLE_COPY_COMMITMENT_AWARD)) { $frozen_commission = CapitalLog::find()->where([ 'user_id' => $this->user_id, 'from_type' => [ 'or', DoubleCopyEnum::ADDONS_NAME, AddonsEnum::ADDONS_NAME_DOUBLE_COPY_COMMITMENT_AWARD ], 'status' => StatusEnum::DISABLED ])->sum("change_num"); } // 头部数据 $data['level'] = $user['level'];// 用户等级 $data['commission'] = $user['commission'];// 已结算佣金 $data['frozen_commission'] = $frozen_commission ?: 0;// 未结算佣金 $data['frozen_fund'] = $user['frozen_fund'];// 冻结基金 $data['is_thaw'] = $user['is_thaw'];// 是否已达标[0:否,1:是] $data['is_show_target'] = $user['level'] == DoubleCopyEnum::LEVEL_AGENT ? 0 : 1;// 是否显示已达标[0:否,1:是] // 获取等级名称 $level_arr = DoubleCopyLevel::find()->where(['mall_id' => $this->mall_id,'status' => StatusEnum::ENABLED])->indexBy('level')->asArray()->all(); $data['level_name'] = $level_arr[$user['level']]['name'] ?: '默认等级';// 等级名称 $data['open_ladder'] = $level_arr[$user['level']]['open_ladder'] ?? 0; // 获取资金分类 $capital_arr = DoubleCopyEnum::getApiCapitalMap($this->mall_id); //需要安装二二复制贡献补贴奖插件 if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_DOUBLE_COPY_COMMITMENT_AWARD)) { $is_enable = Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_DOUBLE_COPY_COMMITMENT_AWARD, 'basic.is_enable'); if (!empty($is_enable)) { $capital_arr['capital_type'][] = [ 'name' => 'contribution_price', 'title' => '贡献补贴奖', ]; } } $data['capital_type'] = $capital_arr['capital_type']; $data['freeze_fund_name'] = $capital_arr['freeze_fund_name'] ?? '冻结基金'; $agent_name = $level_arr[DoubleCopyEnum::LEVEL_AGENT]['name'];// 代理等级名称 $boss_name = $level_arr[DoubleCopyEnum::LEVEL_BOSS]['name'];// 老板等级名称 // 解冻条件 $checked_condition_values = Json::decode($level_arr[DoubleCopyEnum::LEVEL_BOSS]['checked_condition_values'], true); $help_num = $checked_condition_values[0]['value']['val0'] ?? 0;// 缺多少个升级 $help_num = intval($help_num); $level = DoubleCopyLevelSetting::find()->select("freeze_fund_prize,freeze_fund_num,is_thaw,first_level,push_num,second_level")->where(['mall_id' => $this->mall_id, 'level' => DoubleCopyEnum::LEVEL_BOSS, 'status' => StatusEnum::ENABLED])->asArray()->one(); $text = "团队收益冻结".floatval($level['freeze_fund_prize'])."%,助力升级{$help_num}个{$agent_name}成为{$boss_name}并且团队{$agent_name}达到{$level['freeze_fund_num']}个"; $user_level = DoubleCopyLevelSetting::find()->select("freeze_fund_prize,freeze_fund_num,is_thaw,first_level,push_num,second_level")->where(['mall_id' => $this->mall_id, 'level' => $user['level'], 'status' => StatusEnum::ENABLED])->asArray()->one(); // 检查达标数据 $title = ''; $thaw_num = $help_count = 0; $extra = [ 'is_thaw' => false, 'first_num' => false, 'second_num' => false, 'count' => 0, 'title' => '', 'text' => '1号,2号晋升大于等于'.$level_arr[$user_level['first_level']]['name'].',并且直接推荐了'.$user_level['push_num'].'个大于等于'.$level_arr[$user_level['second_level']]['name'].'即可解冻全部', ]; if ($user['level'] > DoubleCopyEnum::LEVEL_AGENT) { $thaw_num = DoubleCopyLevelSetting::find()->select('freeze_fund_num')->where(['mall_id' => $this->mall_id, 'level' => $user['level'], 'status' => StatusEnum::ENABLED])->scalar(); if ($thaw_num) { $thaw_data = DoubleCopyUser::getForzenUser($this->user_id, $thaw_num); if ($thaw_data['has_data']) { $title = '差'.$thaw_data['boss_num'].'个'.$boss_name.'差'.$thaw_data['agent_num'].'个'.$agent_name.'解冻'; $help_count = $thaw_data['help_count']; } else { $title = '差'.$help_num.'个'.$boss_name.'差'.$level['freeze_fund_num'].'个'.$agent_name.'解冻'; } } //是否勾选额外解冻资金条件 if ($level['is_thaw'] == 1) { $extra['is_thaw'] = true; //获取直推用户数据 $children_info = DoubleCopyUser::lists([ 'where' => [ ['mall_id' => $this->mall_id], ['pid' => $this->user_id], ['status' => StatusEnum::ENABLED], // ['>=', 'level', $level['first_level']], // ['pos' => [1,2]] ], 'select' => 'id,pos,status,level', ]); foreach ($children_info as $ck => $cv) { switch ($cv['pos']) {//判断一二号位是否符合达标 case 1: if ($cv['level'] >= $user_level['first_level']) $extra['first_num'] = true; break; case 2: if ($cv['level'] >= $user_level['first_level']) $extra['second_num'] = true; break; } //累计直推符合条件人数 if ($cv['level'] >= $user_level['second_level']) { $extra['count'] += 1; } } $num = $user_level['push_num'] - $extra['count']; if ($num < 0) $num = 0; $extra['count'] = $num; $extra['title'] = '还需数量'.$num.'个'; } } // 基础配置 $config = Yii::$app->services->setting->addons->get($this->mall_id, DoubleCopyEnum::ADDONS_NAME, 'basic'); $data['is_send_second'] = empty($config['is_send_second']) ? 1 : $config['is_send_second'];// 是否显示平台补贴1=显示,2=隐藏 $data['show_achievement'] = $config['show_achievement'] ?? 0;// 是否显示业绩0=不显示,1=显示 $data['pool_name'] = $config['pool_name'] ?? '分红池';// 分红池名称设置 // 获取1、2市场业绩 $market = DoubleCopyUser::find()->select('pos,achievement')->where(['pid' => $this->user_id, 'status' => StatusEnum::ENABLED])->andWhere(['<=','pos',2])->indexBy('pos')->asArray()->all(); $data['market1'] = $market[1]['achievement'] ?? 0;// 第一市场业绩 $data['market2'] = $market[2]['achievement'] ?? 0;// 第二市场业绩 if (!empty($level_arr[$user['level']]['open_ladder']) && $level_arr[$user['level']]['ladder_setting']) { $ladder_setting = ArrayHelper::arraySort(json_decode($level_arr[$user['level']]['ladder_setting'], true), 'thaw_percent', 'desc'); foreach ($ladder_setting as $item) { if ($user['thaw_percent'] >= $item['thaw_percent']) { $thaw_show_contents = $item['show_contents']; break; } } } $data['thaw_show_contents'] = $thaw_show_contents ?? '';// 显示的内容 $total_num = $thaw_num + $help_num; $data['frozen_info'] = [ 'count' => $help_count,// 已助力总数 'freeze_fund_num' => $total_num,// 需解冻数量 'explain' => $text,// 说明 'title' => $title, 'extra' => $extra, ]; //冻结资金清零时间是否显示 $data['frozen_fund_clear_time_show'] = $config['frozen_fund_clear_time_show'] ?? 0; $data['frozen_fund_clear_time'] = ''; if($data['frozen_fund_clear_time_show'] == 1){ $frozen_fund_clear_date = $config['frozen_fund_clear_date'] ?? 0; $frozen_fund_clear_time = $config['frozen_fund_clear_time'] ?? ''; if($frozen_fund_clear_date && $frozen_fund_clear_time){ $data['frozen_fund_clear_time'] = '每月'.$frozen_fund_clear_date.'日'.$frozen_fund_clear_time; } } return $this->success('获取成功', $data); } } /** * 获取分佣列表 * @Author: lun * @DateTime: 2022/5/16 0016 17:09 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionCommission() { if (Yii::$app->request->isGet) { $post = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($post,[ [['page','limit'], 'integer'], [['capital_type'], 'required'], [['capital_type'], 'string'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); // 查询推荐内容 $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['=', 'user_id', $this->user_id]; $where[] = ['=', 'capital_type', $post['capital_type']]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $order = 'id desc,created_at desc'; $select = 'user_id,buy_uid,goods_name,pic_url,price,order_no,money,capital_type,settlement_type,created_at,reward_currency'; $with = ['buyuser']; $params = array('where' => $where, 'order' => $order, 'select' => $select, 'with' => $with); $list = DoubleCopyCommission::listPage($params); $configs = Yii::$app->services->setting->addons->get($this->mall_id, DoubleCopyEnum::ADDONS_NAME, 'basic'); $is_hidden_mobile = $configs['is_hidden_mobile'] ?? 0; // 根据配置是否隐藏手机号 $is_hidden_mobile && $list['list'] = array_map(function ($item) { $mobile = $item['buyuser']['mobile'] ?? ''; $item['buyuser']['mobile'] = substr_replace($mobile, '****', 3, 4); return $item; }, $list['list']); $score_name = \Yii::$app->services->setting->mall->get($this->mall_id, 'score.score_name') ?? '积分'; $money_msg = [ 'commission' => '元', 'score' => $score_name ]; foreach($list['list'] as $key => $value){ $value['money_msg'] = $money_msg[$value['reward_currency']] ?? '元'; $list['list'][$key] = $value; } return $this->success('获取成功', $list); } } /** * 我的客户 * @Author: lun * @DateTime: 2022/5/16 0016 17:42 * @Copyright: copyright (c) 2021 广东七件事集团 */ public function actionMyClient(){ if (Yii::$app->request->isPost) { $post = Yii::$app->request->post(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($post,[ [['page','limit'], 'integer'], [['deep'], 'integer'], [['deep'], 'default', 'value' => 1], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); // 获取用户信息 $user = []; if ($this->user->parent_id) { $user = User::find()->where(['id' => $this->user->parent_id])->asArray()->one(); // 获取用户等级 $dcuser = DoubleCopyUser::find()->select('level')->where(['user_id' => $user['id'], 'status' => StatusEnum::ENABLED])->asArray()->one(); // 获取等级名称 $level_name = DoubleCopyLevel::getLevelNameByLevel($this->mall_id, $dcuser['level']); } $data['user_id'] = !empty($user['id']) ? $user['id'] : 0; $data['nickname'] = !empty($user['nickname']) ? $user['nickname'] : '平台'; $data['avatar_url'] = !empty($user['avatar_url']) ? $user['avatar_url'] : ''; $data['level_name'] = !empty($level_name) ? $level_name : '-'; $list = []; // 获取关系链用户 list($tree, $parent_deep) = UserPartitionRelationship::getTree($this->user_id); $where[] = ['deep' => $post['deep'] + $parent_deep]; $select = 'user_id'; $limit = empty($post['limit']) ? 11 : $post['limit'] + 1; $relation = DoubleCopyUser::batchGetTeamData($post['page'], $limit, $tree, compact('where', 'select')); if (!empty($relation)) { $user_ids = array_slice(array_column($relation, 'user_id'), 0 , $limit - 1);// 获取用户id // 是否隐藏手机号码 $configs = Yii::$app->services->setting->addons->get($this->mall_id, DoubleCopyEnum::ADDONS_NAME, 'basic'); $is_hidden_mobile = $configs['is_hidden_mobile'] ?? 0; // 根据用户id批量获取用户信息 $users = User::find()->select("id,nickname,mobile,avatar_url")->where(['id' => $user_ids])->indexBy('id')->asArray()->all(); // 根据配置是否隐藏手机号 $is_hidden_mobile && $users = array_map(function ($user) { $user['mobile'] = substr_replace($user['mobile'], '****', 3, 4); return $user; }, $users); // 获取用户等级 $dcuser = DoubleCopyUser::find()->select('user_id,level')->where(['user_id' => $user_ids, 'status' => StatusEnum::ENABLED])->indexBy('user_id')->asArray()->all(); // 获取等级 $level = DoubleCopyLevel::getLevelMap($this->mall_id, 2); // 获取推荐用户数据 $team = UserTeamStatistics::find()->select('user_id,user_direct_total,user_indirect_total')->where(['user_id' => $user_ids, 'status' => StatusEnum::ENABLED])->indexBy('user_id')->asArray()->all(); foreach ($user_ids as $uid) { $list[] = [ 'user' => $users[$uid], 'level_name' => empty($dcuser[$uid]) ? '-' : $level[$dcuser[$uid]['level']],// 等级名称 'direct_num' => $team[$uid]['user_direct_total'] ?: 0,// 我的客户 'indirect_num' => $team[$uid]['user_indirect_total'] ?: 0,// 我的粉丝 ]; } } $data['list'] = $list; $data['page'] = $post['page']; $data['page_count'] = count($relation) > ($limit - 1) ? $post['page'] + 1 : $post['page']; return $this->success('获取成功', $data); } } /** * 等级权益 * @Author: lun * @DateTime: 2022/5/16 0016 17:35 * @Copyright: copyright (c) 2021 广东七件事集团 */ public function actionRights() { if (Yii::$app->request->isGet) { // 获取用户信息 $data = $this->getUserInfo($this->mall_id, $this->user); // 获取等级 $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $order = 'level asc'; $select = 'level,name,explain'; $params = compact('where','order','select'); $list = DoubleCopyLevel::lists($params); $data['list'] = $list; $this->success('获取成功', $data); } } /** * 获取用户基本信息 * @Author: lun * @DateTime: 2022/5/16 0016 17:49 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $mall_id * @param $user * @return mixed */ private function getUserInfo($mall_id, $user) { $data['user_id'] = $user->id ?: 0; $data['nickname'] = $user->nickname ?: '平台'; $data['avatar_url'] = $user->avatar_url ?: ''; $data['parent_id'] = $user->parent_id ?: 0; if (!empty($user->id)) { // 获取用户等级 $dcuser = DoubleCopyUser::find()->select('level')->where(['user_id' => $user->id])->asArray()->one(); // 获取等级名称 $level_name = DoubleCopyLevel::getLevelNameByLevel($mall_id, $dcuser['level']); } $data['level_name'] = $level_name ?: '默认等级';// 等级名称 return $data; } public function actionUpgradeGoodsList(){ $params = \Yii::$app->request->get(); $res = \Yii::$app->services->validate->validate($params, [ [['limit', 'page','keyword'], 'safe'] ]); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $where[] = ['g.mall_id' => $this->mall_id]; $where[] = ['g.status' => [StatusEnum::ENABLED]]; $where[] = ['g.is_on_sale' => 1]; $where[] = ['g.is_show' => 1]; if (isset($params['keyword'])) { $where[] = ['like', 'g.goods_name', trim($params['keyword'])]; } $goods_ids = []; $level_list = DoubleCopyLevel::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED],['is_auto_upgrade'=>1],['upgrade_type_goods'=>1]]]); if(!empty($level_list)){ foreach($level_list as $level){ $goods_list = json_decode($level['goods_list'], true); if(!empty($goods_list)){ $goods_ids = array_column($goods_list,'id'); } } } $where[] = ['g.id'=>$goods_ids]; $params['where'] = $where; $params['alias'] = 'g'; $params['select'] = 'g.id,g.goods_name,g.cover_pic,g.price,g.original_price'; $goods_list = Goods::listPage($params); return $this->success('操作成功', $goods_list); } /** * 获取用户 * @Author: lun * @DateTime: 2022/5/16 0016 17:49 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $mall_id * @param $user * @return mixed */ public function actionGetUser() { // 基础配置 $config = Yii::$app->services->setting->addons->get($this->mall_id, DoubleCopyEnum::ADDONS_NAME, 'basic'); $data['is_enable_login'] = $config['is_enable_login'] ?? 0; $data['is_dcuser'] = 0; if(!empty($data['is_enable_login']) && !empty($this->user_id)){ $dcuser = DoubleCopyUser::find()->where(['user_id' => $this->user_id])->select('id')->one(); if(!empty($dcuser)){ $data['is_dcuser'] = 1; } } return $this->success('操作成功', $data); } }