$v['binding']]); $order = Order::find()->where(['store_id' => $v['store_id'], 'is_pay' => 1, 'trade_status' => Order::ORDER_FLOW_CONFIRM, 'is_delete' => 0, 'user_id' => $v['id']]); $parent_user = User::findOne($v['parent_id']); $parent_saas_user = SaasUser::findOne(['mobile' => $parent_user->binding]); $level_name = '普通用户'; $share_holder = ShareHolder::findOne(['store_id' => $v['store_id'], 'user_id' => $v['id'], 'status' => 1, 'is_delete' => 0]); if ($share_holder) { $level_name = ShareHolderLevel::findOne($share_holder->level_id)->name; } $format_data[] = [ 'id' => $v['id'], 'parent_id' => $v['parent_id'], 'avatar' => $saas_user ? $saas_user->avatar : $v['avatar_url'], 'name' => $saas_user ? $saas_user->name : $v['nickname'], 'order_count' => count($order->asArray()->all()), 'order_price' => $order->sum('pay_price') ?: 0, 'recommend_man' => $parent_saas_user ? $parent_saas_user->name : $parent_user->nickname, 'level_name' => $level_name ]; } self::$team_num = Option::get('team_num', get_store_id(), 'bonus_pool', 0)['value']; $new_data = self::getChildrenTree($format_data, $user_id); return $new_data; } public static function getChildrenTree(array $data, $pid = 0, $num = 0) { $tree = []; if ($num + 1 >= self::$team_num) { return $tree; } if ($num < self::$team_num) { foreach ($data as $value) { if ($value['parent_id'] == $pid) { self::$team_count += 1; $value['children'] = self::getChildrenTree($data, $value['id'], ++$num); $tree[] = $value; } } } return $tree; } }