|
|
@@ -0,0 +1,204 @@
|
|
|
+<?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', '转账更新时间');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|