农贸市场管理 -> 📊 撮合日志
*/
#[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();
});
}
}