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('推荐关系由系统自动创建,不支持手动添加或编辑');
});
}
}