| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <?php
- namespace App\Module\UrsPromotion\AdminControllers;
- use UCore\DcatAdmin\AdminController;
- use Spatie\RouteAttributes\Attributes\Resource;
- use App\Module\UrsPromotion\Models\UrsPartnerDividendDetail;
- use App\Module\UrsPromotion\Repositories\UrsPartnerDividendDetailRepository;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Show;
- /**
- * URS合伙人分红详情管理控制器
- *
- * @route /admin/urs-promotion/partner-dividend-details
- */
- #[Resource('urs-promotion/partner-dividend-details')]
- class UrsPartnerDividendDetailController extends AdminController
- {
- /**
- * 页面标题
- */
- protected $title = '合伙人分红详情管理';
- /**
- * 模型类
- */
- protected $model = UrsPartnerDividendDetail::class;
- /**
- * 仓库类
- */
- protected $repository = UrsPartnerDividendDetailRepository::class;
- /**
- * 列表页面
- */
- protected function grid(): Grid
- {
- return Grid::make(new UrsPartnerDividendDetailRepository(['dividendRecord', 'user', 'transferOrder']), function (Grid $grid) {
- // 基础列配置
- $grid->column('id', 'ID')->sortable();
- $grid->column('dividend_record_id', '分红记录ID')->sortable()->display(function ($value) {
- return $value;
- })->link(function ($value) {
- return admin_url('urs-promotion/partner-dividend/' . $value);
- });
- $grid->column('dividendRecord.dividend_date', '分红日期')->sortable()->display(function ($value) {
- return $value ? date('Y-m-d', strtotime($value)) : '-';
- });
- $grid->column('user_id', '用户ID')->sortable()->display(function ($value) {
- return $value;
- })->link(function ($value) {
- return admin_url('user/users/' . $value);
- });
- $grid->column('urs_user_id', 'URS用户ID')->sortable();
- $grid->column('user.username', '用户名')->display(function ($value) {
- return $value ?: '未知用户';
- });
- $grid->column('talent_level', '达人等级')->sortable()->display(function ($value) {
- $levels = [
- 0 => '青铜',
- 1 => '白银',
- 2 => '黄金',
- 3 => '钻石',
- 4 => '至尊',
- 5 => '合伙人'
- ];
- return $levels[$value] ?? '未知';
- });
- $grid->column('dividend_amount', '分红金额')->sortable()->display(function ($value) {
- return number_format($value, 4) . ' 钻石';
- });
- $grid->column('status', '状态')->using([
- 'pending' => '待处理',
- 'completed' => '已完成',
- 'failed' => '失败'
- ])->label([
- 'pending' => 'warning',
- 'completed' => 'success',
- 'failed' => 'danger'
- ]);
- $grid->column('transfer_order_id', '转账订单ID')->display(function ($value) {
- if ($value) {
- return '<a href="' . admin_url('transfer/orders/' . $value) . '" target="_blank">' . $value . '</a>';
- }
- return '-';
- });
- $grid->column('error_message', '错误信息')->limit(50);
- $grid->column('created_at', '创建时间')->sortable()->display(function ($value) {
- return $value ? date('Y-m-d H:i:s', strtotime($value)) : '-';
- });
- // 筛选器
- $grid->filter(function (Grid\Filter $filter) {
- $filter->equal('dividend_record_id', '分红记录ID');
- $filter->equal('user_id', '用户ID');
- $filter->equal('urs_user_id', 'URS用户ID');
- $filter->equal('talent_level', '达人等级')->select([
- 0 => '青铜',
- 1 => '白银',
- 2 => '黄金',
- 3 => '钻石',
- 4 => '至尊',
- 5 => '合伙人'
- ]);
- $filter->equal('status', '状态')->select([
- 'pending' => '待处理',
- 'completed' => '已完成',
- 'failed' => '失败'
- ]);
- $filter->between('dividend_amount', '分红金额');
- $filter->between('created_at', '创建时间')->datetime();
- });
- // 操作配置
- $grid->actions(function (Grid\Displayers\Actions $actions) {
- $actions->disableEdit();
- $actions->disableDelete();
- });
- $grid->disableCreateButton();
- $grid->disableBatchActions();
- // 默认排序
- $grid->model()->orderBy('created_at', 'desc');
- });
- }
- /**
- * 详情页面
- */
- protected function detail($id): Show
- {
- return Show::make($id, new UrsPartnerDividendDetailRepository(['dividendRecord', 'user', 'transferOrder']), function (Show $show) {
- // 基础信息
- $show->field('id', 'ID');
- $show->field('dividend_record_id', '分红记录ID')->link(admin_url('urs-promotion/partner-dividend/{dividend_record_id}'), '_blank');
- $show->field('dividendRecord.dividend_date', '分红日期')->as(function ($value) {
- return $value ? date('Y-m-d', strtotime($value)) : '-';
- });
- $show->field('user_id', '用户ID')->link(admin_url('user/users/{user_id}'), '_blank');
- $show->field('urs_user_id', 'URS用户ID');
- $show->field('user.username', '用户名')->as(function ($value) {
- return $value ?: '未知用户';
- });
- $show->field('talent_level_name', '达人等级');
- $show->field('dividend_amount', '分红金额')->as(function ($value) {
- return number_format($value, 4) . ' 钻石';
- });
- $show->field('status', '状态')->as(function ($status) {
- $statuses = [
- 'pending' => '待处理',
- 'completed' => '已完成',
- 'failed' => '失败'
- ];
- return $statuses[$status] ?? '未知';
- });
- $show->field('error_message', '错误信息');
- $show->field('transfer_order_id', '转账订单ID')->as(function ($value) {
- if ($value) {
- return '<a href="' . admin_url('transfer/orders/' . $value) . '" target="_blank">' . $value . '</a>';
- }
- return '-';
- })->unescape();
- $show->field('created_at', '创建时间');
- $show->field('updated_at', '更新时间');
- // 显示关联的分红记录信息
- $show->divider('分红记录信息');
- $show->field('dividendRecord.total_fee_amount', '当日总手续费')->as(function ($value) {
- return number_format($value, 4) . ' 钻石';
- });
- $show->field('dividendRecord.dividend_amount', '分红总金额')->as(function ($value) {
- return number_format($value, 4) . ' 钻石';
- });
- $show->field('dividendRecord.partner_count', '合伙人数量');
- $show->field('dividendRecord.per_partner_amount', '人均分红')->as(function ($value) {
- return number_format($value, 4) . ' 钻石';
- });
- $show->field('dividendRecord.status', '分红记录状态')->as(function ($status) {
- $statuses = [
- 'pending' => '待处理',
- 'processing' => '处理中',
- 'completed' => '已完成',
- 'failed' => '失败'
- ];
- return $statuses[$status] ?? '未知';
- });
- // 显示转账订单信息
- if ($show->model()->transfer_order_id) {
- $show->divider('转账订单信息');
- $show->field('transferOrder.order_no', '订单号');
- $show->field('transferOrder.amount', '转账金额')->as(function ($value) {
- return number_format($value, 4) . ' 钻石';
- });
- $show->field('transferOrder.status', '转账状态');
- $show->field('transferOrder.created_at', '转账创建时间');
- $show->field('transferOrder.updated_at', '转账更新时间');
- }
- });
- }
- }
|