MexAdminToolController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. namespace App\Module\Mex\AdminControllers;
  3. use App\Module\Mex\Forms\InjectItemForm;
  4. use App\Module\Mex\Forms\RecycleItemForm;
  5. use App\Module\Mex\Forms\InitializeWarehouseForm;
  6. use Spatie\RouteAttributes\Attributes\Get;
  7. use UCore\DcatAdmin\AdminController;
  8. use Dcat\Admin\Layout\Content;
  9. use Dcat\Admin\Widgets\Card;
  10. /**
  11. * 农贸市场管理员工具
  12. *
  13. * 提供物品注入、回收等管理员操作功能
  14. *
  15. * @menu 游戏运营管理/农贸市场管理/🛠 管理工具
  16. */
  17. class MexAdminToolController extends AdminController
  18. {
  19. /**
  20. * 页面标题
  21. *
  22. * @var string
  23. */
  24. protected $title = '农贸市场管理工具';
  25. /**
  26. * 工具页面
  27. */
  28. #[Get('mex-admin-tools', name: 'dcat.admin.mex-admin-tools.index')]
  29. public function index(Content $content)
  30. {
  31. return $content
  32. ->title($this->title)
  33. ->description('管理员操作工具')
  34. ->body($this->buildToolsPage());
  35. }
  36. /**
  37. * 物品注入页面
  38. */
  39. #[Get('mex-admin-tools/inject', name: 'dcat.admin.mex-admin-tools.inject')]
  40. public function inject(Content $content)
  41. {
  42. return $content
  43. ->title('物品注入')
  44. ->description('向市场注入物品,增加供应量')
  45. ->body(new Card(new InjectItemForm()));
  46. }
  47. /**
  48. * 物品回收页面
  49. */
  50. #[Get('mex-admin-tools/recycle', name: 'dcat.admin.mex-admin-tools.recycle')]
  51. public function recycle(Content $content)
  52. {
  53. return $content
  54. ->title('物品回收')
  55. ->description('从市场回收物品,减少供应量')
  56. ->body(new Card(new RecycleItemForm()));
  57. }
  58. /**
  59. * 初始化库存页面
  60. */
  61. #[Get('mex-admin-tools/initialize', name: 'dcat.admin.mex-admin-tools.initialize')]
  62. public function initialize(Content $content)
  63. {
  64. return $content
  65. ->title('初始化库存')
  66. ->description('为所有已定价的商品创建库存记录')
  67. ->body(new Card(new InitializeWarehouseForm()));
  68. }
  69. /**
  70. * 构建工具页面
  71. */
  72. private function buildToolsPage()
  73. {
  74. $card = new Card('农贸市场管理工具', '
  75. <div class="row">
  76. <div class="col-md-4">
  77. <div class="card">
  78. <div class="card-body text-center">
  79. <i class="fa fa-plus-circle fa-3x text-success mb-3"></i>
  80. <h5>物品注入</h5>
  81. <p class="text-muted">向市场投放商品,增加供应量</p>
  82. <a href="' . route('dcat.admin.mex-admin-tools.inject') . '" class="btn btn-success">
  83. <i class="fa fa-plus"></i> 开始注入
  84. </a>
  85. </div>
  86. </div>
  87. </div>
  88. <div class="col-md-4">
  89. <div class="card">
  90. <div class="card-body text-center">
  91. <i class="fa fa-minus-circle fa-3x text-warning mb-3"></i>
  92. <h5>物品回收</h5>
  93. <p class="text-muted">从市场回收商品,减少供应量</p>
  94. <a href="' . route('dcat.admin.mex-admin-tools.recycle') . '" class="btn btn-warning">
  95. <i class="fa fa-minus"></i> 开始回收
  96. </a>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="col-md-4">
  101. <div class="card">
  102. <div class="card-body text-center">
  103. <i class="fa fa-database fa-3x text-info mb-3"></i>
  104. <h5>初始化库存</h5>
  105. <p class="text-muted">为已定价商品创建库存记录</p>
  106. <a href="' . route('dcat.admin.mex-admin-tools.initialize') . '" class="btn btn-info">
  107. <i class="fa fa-database"></i> 开始初始化
  108. </a>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="row mt-4">
  114. <div class="col-md-12">
  115. <div class="alert alert-info">
  116. <h6><i class="fa fa-info-circle"></i> 使用说明</h6>
  117. <ul class="mb-0">
  118. <li><strong>物品注入</strong>:相当于系统向仓库"卖出"物品,增加仓库库存,系统获得资金</li>
  119. <li><strong>物品回收</strong>:相当于系统从仓库"买入"物品,减少仓库库存,系统支出资金</li>
  120. <li>所有操作都会记录在管理员操作记录中,并生成对应的成交记录</li>
  121. <li>操作前请确认商品ID、数量和价格的准确性</li>
  122. </ul>
  123. </div>
  124. </div>
  125. </div>
  126. ');
  127. return $card;
  128. }
  129. }