column('id', 'ID')->sortable(); $grid->column('urs_user_id', '获得收益URS用户')->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('urs_promotion_member_id', '产生收益URS用户')->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('promotion_member_farm_user_id', '产生收益农场用户')->sortable()->display(function ($value) { if (!$value) return '未绑定'; // 添加到产生收益农场用户相关信息的链接 $mappingUrl = admin_url('urs-promotion/user-mappings?user_id=' . $value); $talentUrl = admin_url('urs-promotion/user-talents?user_id=' . $value); return $value . '
查看绑定关系 | 查看达人等级 '; }); $grid->column('farm_user_id', '农场用户ID')->sortable()->display(function ($value) { if (!$value) return '未绑定'; // 添加到农场用户相关信息的链接 $mappingUrl = admin_url('urs-promotion/user-mappings?user_id=' . $value); $talentUrl = admin_url('urs-promotion/user-talents?user_id=' . $value); return $value . '
查看绑定关系 | 查看达人等级 '; }); $grid->column('source_type', '收益来源类型'); $grid->column('source_id', '收益来源ID'); $grid->column('profit_type', '收益类型')->using([ 'promotion_reward' => '推广收益', 'planting_reward' => '种植收益', ])->label([ 'promotion_reward' => 'primary', 'planting_reward' => 'success', ]); $grid->column('relation_level', '推荐层级')->using([ 1 => '直推', 2 => '间推', 3 => '三推', ])->label([ 1 => 'success', 2 => 'info', 3 => 'warning', ]); $grid->column('original_amount', '原始金额')->display(function ($value) { return number_format($value, 4); }); $grid->column('profit_amount', '分成金额')->display(function ($value) { return number_format($value, 4); }); $grid->column('profit_rate', '分成比例')->display(function ($value) { return ($value * 100) . '%'; }); $grid->column('talent_level', '达人等级')->display(function ($value) { return UrsTalentLevel::getLevelName($value); }); $grid->column('status', '状态')->using([ UrsProfit::STATUS_CANCELLED => '取消', UrsProfit::STATUS_SKIPPED => '跳过', UrsProfit::STATUS_NORMAL => '正常', ])->label([ UrsProfit::STATUS_CANCELLED => 'danger', UrsProfit::STATUS_SKIPPED => 'warning', UrsProfit::STATUS_NORMAL => '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\ViewSourceDetailAction()); $actions->append(new \App\Module\UrsPromotion\AdminControllers\Actions\RecalculateProfitAction()); }); // 添加统计信息 $grid->tools(function (Grid\Tools $tools) { $tools->append($this->renderStats()); }); $grid->filter(function (Grid\Filter $filter) { UrsProfitFilterHelper::make($filter); }); }); } /** * 详情页面 */ protected function detail($id): Show { return Show::make($id, new UrsProfitRepository(), function (Show $show) { $show->field('id', 'ID'); $show->field('urs_user_id', '获得收益URS用户'); $show->field('urs_promotion_member_id', '产生收益URS用户'); $show->field('promotion_member_farm_user_id', '产生收益农场用户'); $show->field('farm_user_id', '获得收益农场用户'); $show->field('source_type', '收益来源类型'); $show->field('source_id', '收益来源ID'); $show->field('profit_type', '收益类型')->using([ 'promotion_reward' => '推广收益', 'planting_reward' => '种植收益', ]); $show->field('relation_level', '推荐层级')->using([ 1 => '直推', 2 => '间推', 3 => '三推', ]); $show->field('original_amount', '原始金额'); $show->field('profit_amount', '分成金额'); $show->field('profit_rate', '分成比例')->as(function ($value) { return ($value * 100) . '%'; }); $show->field('talent_level', '达人等级')->as(function ($value) { return UrsTalentLevel::getLevelName($value); }); $show->field('status', '状态')->using([ UrsProfit::STATUS_CANCELLED => '取消', UrsProfit::STATUS_NORMAL => '正常', ]); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); // 添加相关链接区域 $show->divider('相关信息'); $show->field('related_links', '相关链接')->unescape()->as(function ($value) { // 获取当前记录的ID,然后查询关联数据 $profit = UrsProfit::find($this->getKey()); if (!$profit) { return '记录不存在'; } $links = []; // 获得收益URS用户相关链接 if ($profit->urs_user_id) { $userMappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $profit->urs_user_id); $links[] = ' 收益用户绑定关系 '; $userTalentUrl = admin_url('urs-promotion/user-talents?urs_user_id=' . $profit->urs_user_id); $links[] = ' 收益用户达人等级 '; } // 产生收益URS用户相关链接 if ($profit->urs_promotion_member_id) { $memberMappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $profit->urs_promotion_member_id); $links[] = ' 产生收益用户绑定关系 '; $memberTalentUrl = admin_url('urs-promotion/user-talents?urs_user_id=' . $profit->urs_promotion_member_id); $links[] = ' 产生收益用户达人等级 '; } // 产生收益的农场用户相关链接 if ($profit->promotion_member_farm_user_id) { $promotionFarmMappingUrl = admin_url('urs-promotion/user-mappings?user_id=' . $profit->promotion_member_farm_user_id); $links[] = ' 产生收益农场用户绑定关系 '; $promotionFarmTalentUrl = admin_url('urs-promotion/user-talents?user_id=' . $profit->promotion_member_farm_user_id); $links[] = ' 产生收益农场用户达人等级 '; } // 获得收益的农场用户相关链接 if ($profit->farm_user_id) { $farmMappingUrl = admin_url('urs-promotion/user-mappings?user_id=' . $profit->farm_user_id); $links[] = ' 获得收益农场用户绑定关系 '; $farmTalentUrl = admin_url('urs-promotion/user-talents?user_id=' . $profit->farm_user_id); $links[] = ' 获得收益农场用户达人等级 '; } // 推荐关系链接(如果是推广收益) if ($profit->profit_type === 'promotion_reward' && $profit->urs_promotion_member_id) { $referralUrl = admin_url('urs-promotion/user-referrals?urs_user_id=' . $profit->urs_promotion_member_id); $links[] = ' 查看推荐关系 '; } return implode(' ', $links); }); }); } /** * 表单页面(禁用) */ protected function form(): Form { return Form::make(new UrsProfitRepository(), function (Form $form) { // 收益记录由系统自动生成,不提供手动创建表单 $form->display('message', '提示')->default('收益记录由系统自动生成,不支持手动添加或编辑'); }); } /** * 渲染统计信息 */ private function renderStats(): string { $totalCount = UrsProfit::where('status', UrsProfit::STATUS_NORMAL)->count(); $totalAmount = UrsProfit::where('status', UrsProfit::STATUS_NORMAL)->sum('profit_amount'); $promotionCount = UrsProfit::where('status', UrsProfit::STATUS_NORMAL) ->where('profit_type', 'promotion_reward')->count(); $promotionAmount = UrsProfit::where('status', UrsProfit::STATUS_NORMAL) ->where('profit_type', 'promotion_reward')->sum('profit_amount'); $plantingCount = UrsProfit::where('status', UrsProfit::STATUS_NORMAL) ->where('profit_type', 'planting_reward')->count(); $plantingAmount = UrsProfit::where('status', UrsProfit::STATUS_NORMAL) ->where('profit_type', 'planting_reward')->sum('profit_amount'); return '
总收益记录

' . $totalCount . ' 条

总金额: ' . number_format($totalAmount, 4) . '
推广收益

' . $promotionCount . ' 条

金额: ' . number_format($promotionAmount, 4) . '
种植收益

' . $plantingCount . ' 条

金额: ' . number_format($plantingAmount, 4) . '
'; } }