UrsPartnerDividendController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace App\Module\UrsPromotion\AdminControllers;
  3. use UCore\DcatAdmin\AdminController;
  4. use Spatie\RouteAttributes\Attributes\Resource;
  5. use App\Module\UrsPromotion\Models\UrsPartnerDividendRecord;
  6. use App\Module\UrsPromotion\Models\UrsPartnerDividendDetail;
  7. use App\Module\UrsPromotion\Repositories\UrsPartnerDividendRepository;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Show;
  10. /**
  11. * URS合伙人分红管理控制器
  12. *
  13. * @route /admin/urs-promotion/partner-dividend
  14. */
  15. #[Resource('urs-promotion/partner-dividend')]
  16. class UrsPartnerDividendController extends AdminController
  17. {
  18. /**
  19. * 页面标题
  20. */
  21. protected $title = '合伙人分红管理';
  22. /**
  23. * 模型类
  24. */
  25. protected $model = UrsPartnerDividendRecord::class;
  26. /**
  27. * 仓库类
  28. */
  29. protected $repository = UrsPartnerDividendRepository::class;
  30. /**
  31. * 列表页面
  32. */
  33. protected function grid(): Grid
  34. {
  35. return Grid::make(new UrsPartnerDividendRepository(), function (Grid $grid) {
  36. // 基础列配置
  37. $grid->column('id', 'ID')->sortable();
  38. $grid->column('dividend_date', '分红日期')->sortable();
  39. $grid->column('total_fee_amount', '总手续费')->sortable()->display(function ($value) {
  40. return number_format($value, 4) . ' 钻石';
  41. });
  42. $grid->column('dividend_amount', '分红金额')->sortable()->display(function ($value) {
  43. return number_format($value, 4) . ' 钻石';
  44. });
  45. $grid->column('partner_count', '合伙人数')->sortable();
  46. $grid->column('per_partner_amount', '人均分红')->sortable()->display(function ($value) {
  47. return number_format($value, 4) . ' 钻石';
  48. });
  49. $grid->column('status', '状态')->using([
  50. 'pending' => '待处理',
  51. 'processing' => '处理中',
  52. 'completed' => '已完成',
  53. 'failed' => '失败'
  54. ])->label([
  55. 'pending' => 'warning',
  56. 'processing' => 'info',
  57. 'completed' => 'success',
  58. 'failed' => 'danger'
  59. ]);
  60. $grid->column('created_at', '创建时间')->sortable();
  61. // 操作配置
  62. $grid->actions(function (Grid\Displayers\Actions $actions) {
  63. $actions->disableEdit();
  64. $actions->disableDelete();
  65. });
  66. $grid->disableCreateButton();
  67. $grid->disableBatchActions();
  68. // 默认排序
  69. $grid->model()->orderBy('dividend_date', 'desc');
  70. });
  71. }
  72. /**
  73. * 详情页面
  74. */
  75. protected function detail($id): Show
  76. {
  77. return Show::make($id, new UrsPartnerDividendRepository(), function (Show $show) {
  78. // 基础信息
  79. $show->field('id', 'ID');
  80. $show->field('dividend_date', '分红日期');
  81. $show->field('total_fee_amount', '总手续费')->as(function ($value) {
  82. return number_format($value, 4) . ' 钻石';
  83. });
  84. $show->field('dividend_amount', '分红金额')->as(function ($value) {
  85. return number_format($value, 4) . ' 钻石';
  86. });
  87. $show->field('partner_count', '合伙人数');
  88. $show->field('per_partner_amount', '人均分红')->as(function ($value) {
  89. return number_format($value, 4) . ' 钻石';
  90. });
  91. $show->field('status', '状态')->as(function ($status) {
  92. $statuses = [
  93. 'pending' => '待处理',
  94. 'processing' => '处理中',
  95. 'completed' => '已完成',
  96. 'failed' => '失败'
  97. ];
  98. return $statuses[$status] ?? '未知';
  99. });
  100. $show->field('error_message', '错误信息');
  101. $show->field('created_at', '创建时间');
  102. $show->field('updated_at', '更新时间');
  103. });
  104. }
  105. }