function($query) { $query->where('status', UrsUserMapping::STATUS_VALID) ->with('user.info'); }, 'referrerMapping' => function($query) { $query->where('status', UrsUserMapping::STATUS_VALID) ->with('user.info'); } ]); return Grid::make($repository, function (Grid $grid) { $grid->column('id', 'ID')->sortable(); $grid->column('urs_user_id', 'URS用户ID')->sortable()->display(function ($value) { // 添加到用户绑定和达人等级的链接 $mappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $value); $talentUrl = admin_url('urs-promotion/user-talents?urs_user_id=' . $value); return $value . '
查看绑定关系 | 查看达人等级 '; }); // 农场用户ID字段 $grid->column('user_id', '农场用户ID')->sortable()->display(function ($value) { if ($value == 0) { return '未进入农场'; } // 添加到用户详情的链接 $userUrl = admin_url('users/' . $value); return '' . $value . ''; }); $grid->column('referrer_id', '推荐人农场用户ID')->sortable()->display(function ($value) { if ($value == 0) { return '未进入农场'; } // 添加到用户详情的链接 $userUrl = admin_url('users/' . $value); return '' . $value . ''; }); $grid->column('urs_referrer_id', 'URS推荐人ID')->sortable()->display(function ($value) { // 添加到推荐人信息的链接 $mappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $value); $talentUrl = admin_url('urs-promotion/user-talents?urs_user_id=' . $value); return $value . '
推荐人绑定 | 推荐人等级 '; }); // 农场用户信息列 $grid->column('userMapping.user.username', '农场用户名')->display(function ($value) { return $value ?: '未进入农场'; }); $grid->column('userMapping.user.info.nickname', '农场用户昵称')->display(function ($value) { return $value ?: '无昵称'; }); // 推荐人农场用户信息列 $grid->column('referrerMapping.user.username', '推荐人农场用户名')->display(function ($value) { return $value ?: '未进入农场'; }); $grid->column('referrerMapping.user.info.nickname', '推荐人农场昵称')->display(function ($value) { return $value ?: '无昵称'; }); $grid->column('referral_time', '推荐时间')->sortable(); $grid->column('status', '状态')->using([ UrsUserReferral::STATUS_INVALID => '无效', UrsUserReferral::STATUS_VALID => '有效', ])->label([ UrsUserReferral::STATUS_INVALID => 'danger', UrsUserReferral::STATUS_VALID => 'success', ]); $grid->column('created_at', '创建时间')->sortable(); // 禁用创建按钮(推荐关系由系统自动创建) $grid->disableCreateButton(); // 只允许查看详情 $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableEdit(); $actions->disableDelete(); // 添加自定义操作 $actions->append(new \App\Module\UrsPromotion\AdminControllers\Actions\ViewReferralTreeAction()); $actions->append(new \App\Module\UrsPromotion\AdminControllers\Actions\ViewReferralChainAction()); $actions->append(new \App\Module\UrsPromotion\AdminControllers\Actions\ValidateReferralAction()); }); $grid->filter(function (Grid\Filter $filter) { $filter->equal('urs_user_id', 'URS用户ID'); $filter->equal('urs_referrer_id', 'URS推荐人ID'); $filter->equal('user_id', '农场用户ID'); $filter->equal('referrer_id', '推荐人农场用户ID'); $filter->equal('status', '状态')->select([ UrsUserReferral::STATUS_INVALID => '无效', UrsUserReferral::STATUS_VALID => '有效', ]); $filter->between('created_at', '创建时间')->datetime(); }); }); } /** * 详情页面 */ protected function detail($id): Show { // 实例化仓库时传入with数组 $repository = new UrsUserReferralRepository([ 'user.info', 'referrer.info', 'userMapping' => function($query) { $query->where('status', UrsUserMapping::STATUS_VALID) ->with('user.info'); }, 'referrerMapping' => function($query) { $query->where('status', UrsUserMapping::STATUS_VALID) ->with('user.info'); } ]); return Show::make($id, $repository, function (Show $show) { $show->field('id', 'ID'); $show->field('urs_user_id', 'URS用户ID'); $show->field('urs_referrer_id', 'URS推荐人ID'); // 农场用户ID字段 $show->field('user_id', '农场用户ID')->as(function ($value) { if ($value == 0) { return '未进入农场'; } return $value; }); $show->field('referrer_id', '推荐人农场用户ID')->as(function ($value) { if ($value == 0) { return '未进入农场'; } return $value; }); // 农场用户信息 $show->divider('农场用户信息'); $show->field('farm_username', '农场用户名')->as(function ($value) { // 获取当前记录 $referral = UrsUserReferral::with('user')->find($this->getKey()); if (!$referral || $referral->user_id == 0) { return '未进入农场'; } // 优先使用直接关联的农场用户信息 if ($referral->user) { return $referral->user->username; } // 如果直接关联没有数据,回退到映射关系查询 $userMapping = UrsUserMapping::where('urs_user_id', $referral->urs_user_id) ->where('status', UrsUserMapping::STATUS_VALID) ->with('user') ->first(); if ($userMapping && $userMapping->user) { return $userMapping->user->username; } return '未进入农场'; }); $show->field('farm_nickname', '农场用户昵称')->as(function ($value) { // 获取当前记录 $referral = UrsUserReferral::with('user.info')->find($this->getKey()); if (!$referral || $referral->user_id == 0) { return '无昵称'; } // 优先使用直接关联的农场用户信息 if ($referral->user && $referral->user->info) { return $referral->user->info->nickname ?: '无昵称'; } // 如果直接关联没有数据,回退到映射关系查询 $userMapping = UrsUserMapping::where('urs_user_id', $referral->urs_user_id) ->where('status', UrsUserMapping::STATUS_VALID) ->with('user.info') ->first(); if ($userMapping && $userMapping->user && $userMapping->user->info) { return $userMapping->user->info->nickname ?: '无昵称'; } return '无昵称'; }); // 推荐人农场用户信息 $show->divider('推荐人农场用户信息'); $show->field('referrer_farm_username', '推荐人农场用户名')->as(function ($value) { // 获取当前记录 $referral = UrsUserReferral::with('referrer')->find($this->getKey()); if (!$referral || $referral->referrer_id == 0) { return '未进入农场'; } // 优先使用直接关联的农场用户信息 if ($referral->referrer) { return $referral->referrer->username; } // 如果直接关联没有数据,回退到映射关系查询 $referrerMapping = UrsUserMapping::where('urs_user_id', $referral->urs_referrer_id) ->where('status', UrsUserMapping::STATUS_VALID) ->with('user') ->first(); if ($referrerMapping && $referrerMapping->user) { return $referrerMapping->user->username; } return '未进入农场'; }); $show->field('referrer_farm_nickname', '推荐人农场用户昵称')->as(function ($value) { // 获取当前记录 $referral = UrsUserReferral::with('referrer.info')->find($this->getKey()); if (!$referral || $referral->referrer_id == 0) { return '无昵称'; } // 优先使用直接关联的农场用户信息 if ($referral->referrer && $referral->referrer->info) { return $referral->referrer->info->nickname ?: '无昵称'; } // 如果直接关联没有数据,回退到映射关系查询 $referrerMapping = UrsUserMapping::where('urs_user_id', $referral->urs_referrer_id) ->where('status', UrsUserMapping::STATUS_VALID) ->with('user.info') ->first(); if ($referrerMapping && $referrerMapping->user && $referrerMapping->user->info) { return $referrerMapping->user->info->nickname ?: '无昵称'; } return '无昵称'; }); $show->divider('基本信息'); $show->field('referral_time', '推荐时间'); $show->field('status', '状态')->using([ UrsUserReferral::STATUS_INVALID => '无效', UrsUserReferral::STATUS_VALID => '有效', ]); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); // 添加相关链接区域 $show->divider('相关信息'); $show->field('related_links', '相关链接')->unescape()->as(function ($value) use ($show) { $model = $show->model(); $links = []; // 用户绑定关系链接 $userMappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $model->urs_user_id); $links[] = ' 用户绑定关系 '; // 推荐人绑定关系链接 $referrerMappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $model->urs_referrer_id); $links[] = ' 推荐人绑定关系 '; // 用户达人等级链接 $userTalentUrl = admin_url('urs-promotion/user-talents?urs_user_id=' . $model->urs_user_id); $links[] = ' 用户达人等级 '; // 推荐人达人等级链接 $referrerTalentUrl = admin_url('urs-promotion/user-talents?urs_user_id=' . $model->urs_referrer_id); $links[] = ' 推荐人达人等级 '; return implode(' ', $links); }); }); } /** * 表单页面(禁用) */ protected function form(): Form { return Form::make(new UrsUserReferralRepository([]), function (Form $form) { // 推荐关系由系统自动创建,不提供手动创建表单 $form->display('message', '提示')->default('推荐关系由系统自动创建,不支持手动添加或编辑'); }); } }