MexPriceAdjustmentController.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace App\Module\Mex\AdminControllers;
  3. use App\Module\Mex\AdminControllers\Helper\GridHelper;
  4. use App\Module\Mex\Repositories\MexPriceAdjustmentRepository;
  5. use App\Module\Mex\Enums\PriceAdjustmentType;
  6. use Spatie\RouteAttributes\Attributes\Resource;
  7. use UCore\DcatAdmin\AdminController;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Show;
  10. /**
  11. * 农贸市场价格调整记录管理
  12. *
  13. * 路由:/admin/mex-price-adjustments
  14. */
  15. #[Resource('mex-price-adjustments', names: 'dcat.admin.mex-price-adjustments')]
  16. class MexPriceAdjustmentController extends AdminController
  17. {
  18. /**
  19. * 页面标题
  20. */
  21. protected $title = '农贸市场价格调整记录';
  22. /**
  23. * 列表页面
  24. */
  25. protected function grid()
  26. {
  27. return Grid::make(new MexPriceAdjustmentRepository(['priceConfig', 'item']), function (Grid $grid) {
  28. $helper = new GridHelper($grid, $this);
  29. $grid->column('id', 'ID')->sortable();
  30. $grid->column('item_id', '商品ID')->link(function ($value) {
  31. return admin_url("game-items/{$value}");
  32. });
  33. $grid->column('item.name', '商品名称');
  34. $grid->column('admin_user_id', '操作管理员');
  35. $grid->column('adjustment_type', '调整类型')->display(function ($value) {
  36. return $value->getDescription();
  37. })->label([
  38. 'MIN_PRICE' => 'primary',
  39. 'MAX_PRICE' => 'success',
  40. 'PROTECTION_THRESHOLD' => 'warning',
  41. 'STATUS' => 'info',
  42. 'BATCH' => 'danger',
  43. ]);
  44. // 价格变化摘要
  45. $grid->column('price_change_summary', '价格变化')->display(function () {
  46. return $this->price_change_summary;
  47. });
  48. $grid->column('adjustment_reason', '调整原因')->limit(50);
  49. $helper->columnCreatedAt();
  50. // 筛选器
  51. $grid->filter(function (Grid\Filter $filter) {
  52. $filter->equal('id', 'ID');
  53. $filter->equal('item_id', '商品ID');
  54. $filter->equal('admin_user_id', '操作管理员');
  55. $filter->equal('adjustment_type', '调整类型')->select(PriceAdjustmentType::getOptions());
  56. $filter->like('adjustment_reason', '调整原因');
  57. $filter->between('created_at', '调整时间')->datetime();
  58. });
  59. // 默认排序
  60. $grid->model()->orderBy('created_at', 'desc');
  61. // 禁用新增、编辑、删除操作
  62. $grid->disableCreateButton();
  63. $grid->disableActions();
  64. $grid->disableBatchActions();
  65. });
  66. }
  67. /**
  68. * 详情页面
  69. */
  70. protected function detail($id)
  71. {
  72. return Show::make($id, new MexPriceAdjustmentRepository(['priceConfig', 'item']), function (Show $show) {
  73. $show->field('id', 'ID');
  74. $show->field('price_config_id', '价格配置ID');
  75. $show->field('item_id', '商品ID');
  76. $show->field('item.name', '商品名称');
  77. $show->field('admin_user_id', '操作管理员');
  78. $show->field('adjustment_type', '调整类型')->as(function ($value) {
  79. if (is_string($value)) {
  80. return PriceAdjustmentType::from($value)->getDescription();
  81. }
  82. return $value->getDescription();
  83. });
  84. $show->divider('价格调整详情');
  85. $show->field('old_min_price', '调整前最低价')->as(function ($value) {
  86. return $value ? number_format($value, 5) : '-';
  87. });
  88. $show->field('new_min_price', '调整后最低价')->as(function ($value) {
  89. return $value ? number_format($value, 5) : '-';
  90. });
  91. $show->field('old_max_price', '调整前最高价')->as(function ($value) {
  92. return $value ? number_format($value, 5) : '-';
  93. });
  94. $show->field('new_max_price', '调整后最高价')->as(function ($value) {
  95. return $value ? number_format($value, 5) : '-';
  96. });
  97. $show->field('old_protection_threshold', '调整前保护阈值');
  98. $show->field('new_protection_threshold', '调整后保护阈值');
  99. $show->field('old_is_enabled', '调整前启用状态')->using([0 => '禁用', 1 => '启用']);
  100. $show->field('new_is_enabled', '调整后启用状态')->using([0 => '禁用', 1 => '启用']);
  101. $show->divider('调整说明');
  102. $show->field('adjustment_reason', '调整原因');
  103. $show->field('market_impact_note', '市场影响说明');
  104. $show->field('created_at', '调整时间');
  105. // 禁用编辑和删除按钮
  106. $show->disableEditButton();
  107. $show->disableDeleteButton();
  108. });
  109. }
  110. }