join('yz_team_dividend_agency', 'yz_member_children.child_id', 'yz_team_dividend_agency.uid') ->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid]) ->whereNull('yz_team_dividend_agency.deleted_at') ->pluck('child_id'); $child_all = MemberChild::uniacid() ->where('member_id', \YunShop::app()->getMemberId()) ->count(); $customer_count = $child_all - $child_uids->count(); $columns[] = [ 'id' => '0', 'level_name' => $level_name ?: '顾客', 'count' => $customer_count ]; $levels = TeamDividendLevelModel::select(['id', 'level_name']) ->uniacid() ->orderBy('level_weight', 'desc') ->get(); if (!$levels->isEmpty()) { foreach ($levels as $level) { $level->count = TeamDividendAgencyModel::select(['id', 'level']) ->whereIn('uid', $child_uids->toArray()) ->where('level', $level->id) ->uniacid() ->count(); $columns[] = $level->toArray(); } } return $this->successJson('成功', [ 'columns' => $columns ]); } /** * @name 获取下级总人数 * @return \Illuminate\Http\JsonResponse * @author */ public function getTeamChildCount() { // plugin.team-dividend.api.team.getTeamChildCount // $child_count = MemberChild::select(['child_id', 'member_id']) // ->whereHas('hasOneTeam') // ->where('member_id', \YunShop::app()->getMemberId()) // ->uniacid() // ->count(); $child_count = DB::table('yz_member_children') ->join('yz_team_dividend_agency', 'yz_member_children.child_id', 'yz_team_dividend_agency.uid') ->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid]) ->count('yz_member_children.child_id'); return $this->successJson('成功', [ 'child_count' => $child_count ]); } /** * @name 获取下线列表通过level_id * @return \Illuminate\Http\JsonResponse * @author */ public function getList() { $page_size = 20; $level_id = intval(request()->id); $member_info = request()->member_info; if ($level_id == 0) { $child_uids = DB::table('yz_member_children') ->join('yz_team_dividend_agency', 'yz_member_children.child_id', 'yz_team_dividend_agency.uid') ->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid]) ->whereNull('yz_team_dividend_agency.deleted_at') ->pluck('child_id'); $list = MemberChild::whereNotIn('child_id', $child_uids->toArray()); } else { $child_uids_level = DB::table('yz_member_children') ->join('yz_team_dividend_agency', function ($q) use ($level_id) { $q->on('yz_member_children.child_id', 'yz_team_dividend_agency.uid') ->where('yz_team_dividend_agency.level', $level_id) ->where('yz_team_dividend_agency.deleted_at', null); }) ->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid]) ->whereNull('yz_team_dividend_agency.deleted_at') ->pluck('child_id'); $list = MemberChild::whereIn('child_id', $child_uids_level->toArray()); } if (!empty($member_info)) { $list = $list->whereHas('hasOneMember', function ($query) use ($member_info) { $query->where('nickname', 'like', "%{$member_info}%") ->orWhere('mobile','like',"%{$member_info}%"); }); } $list = $list->with([ 'hasOneMember' => function ($q) { $q->select(['uid', 'avatar', 'nickname']); } ]) ->where('member_id', \YunShop::app()->getMemberId()) ->uniacid() ->orderBy('child_id', 'desc') ->paginate($page_size); return $this->successJson('成功', [ 'list' => $list ]); } /** * @name 获取下线信息 * @return \Illuminate\Http\JsonResponse * @author */ public function getInfo() { $uid = intval(request()->uid); if (!$uid) { return $this->errorJson('UID参数错误'); } // 粉丝数量 $child_count = MemberChild::select(['child_id', 'member_id']) ->whereHas('hasOneTeam') ->where('member_id', $uid) ->uniacid() ->count(); // 自购订单金额 $self_buy_price = Order::select(['uid', 'status', 'price']) ->where('uid', $uid) ->where('status','>=',SettingService::getIncludingOrderStatus()) ->uniacid() ->sum('price'); // 推广角色 $role = '普通会员'; $team_agent = TeamDividendAgencyModel::select(['uid', 'level']) ->with([ 'hasOneLevel' => function ($level) { $level->select(['id', 'level_name'])->uniacid(); } ]) ->where('uid', $uid) ->uniacid() ->first(); if ($team_agent && $team_agent->hasOneLevel) { $role = $team_agent->hasOneLevel->level_name; } return $this->successJson('成功', [ 'child_count' => $child_count, 'self_buy_price' => $self_buy_price, 'role' => $role ]); } }