农贸市场管理 -> 📊 撮合日志 */ #[Resource('mex-match-logs', names: 'dcat.admin.mex-match-logs')] class MexMatchLogController extends AdminController { /** * 页面标题 * * @var string */ protected $title = '农贸市场撮合日志'; /** * 禁用创建按钮 * * @var bool */ protected $showCreateButton = false; /** * 禁用编辑按钮 * * @var bool */ protected $showEditButton = false; /** * 禁用删除按钮 * * @var bool */ protected $showDeleteButton = false; /** * 获取数据仓库 * * @return string */ protected function repository(): string { return MexMatchLogRepository::class; } /** * 列表页面 * * @return Grid */ protected function grid() { return Grid::make(new MexMatchLogRepository(), function (Grid $grid) { $helper = new GridHelper($grid, $this); // 基础字段 $grid->column('id', 'ID')->sortable(); // 撮合类型 $grid->column('match_type', '撮合类型')->display(function ($value) { $labels = [ MatchType::USER_BUY->value => '用户买入', MatchType::USER_SELL->value => '用户卖出', ]; $valueKey = $value instanceof MatchType ? $value->value : $value; return $labels[$valueKey] ?? $valueKey; }); // 商品信息 $grid->column('item_id', '商品ID')->link(function ($value) { return admin_url("game-items/{$value}"); }); $grid->column('item.name', '商品名称'); // 撮合参数 $grid->column('batch_size', '批处理大小'); $grid->column('matched_orders', '撮合订单数'); $grid->column('total_amount', '撮合金额')->display(function ($value) { return number_format($value, 5); }); // 执行结果 $grid->column('success', '执行结果')->display(function ($value) { return $value ? '成功' : '失败'; }); $grid->column('execution_time_ms', '执行时间')->display(function ($value) { return $value ? $value . 'ms' : '-'; }); // 消息 $grid->column('message', '结果消息')->display(function ($value) { return \Illuminate\Support\Str::limit($value, 50); }); // 错误消息 $grid->column('error_message', '错误消息')->display(function ($value) { return $value ? '' . \Illuminate\Support\Str::limit($value, 30) . '' : '-'; }); // 创建时间 $helper->columnDatetime('created_at', '创建时间'); // 排序 $grid->model()->orderBy('id', 'desc'); // 筛选器 $grid->filter(function (Grid\Filter $filter) { $helper = new FilterHelper($filter); $filter->equal('match_type', '撮合类型')->select([ MatchType::USER_BUY->value => '用户买入', MatchType::USER_SELL->value => '用户卖出', ]); $filter->equal('item_id', '商品ID'); $filter->like('item.name', '商品名称'); $filter->equal('success', '执行结果')->select([ 1 => '成功', 0 => '失败', ]); $helper->betweenCreatedAt(); }); // 禁用新增、编辑、删除和批量操作 $grid->disableCreateButton(); $grid->disableEditButton(); $grid->disableDeleteButton(); $grid->disableBatchActions(); // 禁用行选择器 $grid->disableRowSelector(); // 设置每页显示数量 $grid->paginate(20); }); } /** * 详情页面 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new MexMatchLogRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); $show->field('id', 'ID'); // 撮合信息 $show->field('match_type', '撮合类型')->as(function ($value) { $labels = [ MatchType::USER_BUY->value => '用户买入撮合', MatchType::USER_SELL->value => '用户卖出撮合', ]; $valueKey = $value instanceof MatchType ? $value->value : $value; return $labels[$valueKey] ?? $valueKey; }); $show->field('item_id', '商品ID'); $show->field('item.name', '商品名称'); // 撮合参数 $show->field('batch_size', '批处理大小'); // 撮合结果 $show->field('matched_orders', '撮合订单数'); $show->field('total_amount', '撮合金额')->as(function ($value) { return number_format($value, 5); }); $show->field('success', '执行结果')->as(function ($value) { return $value ? '成功' : '失败'; }); $show->field('execution_time_ms', '执行时间')->as(function ($value) { return $value ? $value . ' 毫秒' : '未记录'; }); // 消息信息 $show->field('message', '结果消息'); $show->field('error_message', '错误消息')->as(function ($value) { return $value ?: '无'; }); // 时间信息 $show->field('created_at', '创建时间'); // 禁用编辑和删除按钮 $show->disableEditButton(); $show->disableDeleteButton(); }); } }