|
|
@@ -0,0 +1,230 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Module\UrsPromotion\AdminControllers;
|
|
|
+
|
|
|
+use App\Module\UrsPromotion\Repositories\UrsTransferFeeConfigRepository;
|
|
|
+use App\Module\UrsPromotion\Models\UrsTransferFeeConfig;
|
|
|
+use App\Module\UrsPromotion\Services\UrsTransferFeeService;
|
|
|
+use UCore\DcatAdmin\AdminController;
|
|
|
+use Spatie\RouteAttributes\Attributes\Resource;
|
|
|
+use Dcat\Admin\Grid;
|
|
|
+use Dcat\Admin\Show;
|
|
|
+use Dcat\Admin\Form;
|
|
|
+use Dcat\Admin\Grid\Filter;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+
|
|
|
+/**
|
|
|
+ * URS转出手续费配置管理控制器
|
|
|
+ *
|
|
|
+ * @route /admin/urs-promotion/transfer-fee-config
|
|
|
+ */
|
|
|
+#[Resource('urs-promotion/transfer-fee-config', names: 'dcat.admin.urs-promotion.transfer-fee-config')]
|
|
|
+class UrsTransferFeeConfigController extends AdminController
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * 构建数据表格
|
|
|
+ *
|
|
|
+ * @return Grid
|
|
|
+ */
|
|
|
+ protected function grid()
|
|
|
+ {
|
|
|
+ return Grid::make(new UrsTransferFeeConfigRepository(), function (Grid $grid) {
|
|
|
+ $grid->column('id', 'ID')->sortable();
|
|
|
+
|
|
|
+ $grid->column('house_level', '房屋等级')->display(function ($value) {
|
|
|
+ return $value == 0 ? '所有等级' : $value . '级';
|
|
|
+ })->sortable();
|
|
|
+
|
|
|
+ $grid->column('talent_level', '达人等级')->display(function ($value) {
|
|
|
+ return $value == 0 ? '所有等级' : $value . '级';
|
|
|
+ })->sortable();
|
|
|
+
|
|
|
+ $grid->column('fee_rate', '手续费率')->display(function ($value) {
|
|
|
+ return number_format($value * 100, 2) . '%';
|
|
|
+ })->sortable();
|
|
|
+
|
|
|
+ $grid->column('description', '配置描述')->limit(50);
|
|
|
+
|
|
|
+ $grid->column('priority', '优先级')->sortable()->help('数值越大优先级越高');
|
|
|
+
|
|
|
+ $grid->column('status', '状态')->using([
|
|
|
+ UrsTransferFeeConfig::STATUS_DISABLED => '禁用',
|
|
|
+ UrsTransferFeeConfig::STATUS_ENABLED => '启用',
|
|
|
+ ])->dot([
|
|
|
+ UrsTransferFeeConfig::STATUS_DISABLED => 'danger',
|
|
|
+ UrsTransferFeeConfig::STATUS_ENABLED => 'success',
|
|
|
+ ])->sortable();
|
|
|
+
|
|
|
+ $grid->column('created_at', '创建时间')->sortable();
|
|
|
+ $grid->column('updated_at', '更新时间')->sortable();
|
|
|
+
|
|
|
+ // 筛选器
|
|
|
+ $grid->filter(function (Filter $filter) {
|
|
|
+
|
|
|
+ $filter->equal('house_level', '房屋等级')->select([
|
|
|
+ 0 => '所有等级',
|
|
|
+ 1 => '1级', 2 => '2级', 3 => '3级', 4 => '4级', 5 => '5级', 6 => '6级',
|
|
|
+ 7 => '7级', 8 => '8级', 9 => '9级', 10 => '10级', 11 => '11级', 12 => '12级',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $filter->equal('talent_level', '达人等级')->select([
|
|
|
+ 0 => '所有等级',
|
|
|
+ 1 => '初级达人', 2 => '中级达人', 3 => '高级达人', 4 => '资深达人', 5 => '顶级达人',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $filter->equal('status', '状态')->select([
|
|
|
+ UrsTransferFeeConfig::STATUS_DISABLED => '禁用',
|
|
|
+ UrsTransferFeeConfig::STATUS_ENABLED => '启用',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $filter->between('fee_rate', '手续费率');
|
|
|
+ $filter->between('priority', '优先级');
|
|
|
+ $filter->between('created_at', '创建时间');
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 排序
|
|
|
+ $grid->model()->orderBy('priority', 'desc')->orderBy('house_level')->orderBy('talent_level');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建详情页
|
|
|
+ *
|
|
|
+ * @return Show
|
|
|
+ */
|
|
|
+ protected function detail($id)
|
|
|
+ {
|
|
|
+ return Show::make($id, new UrsTransferFeeConfigRepository(), function (Show $show) {
|
|
|
+
|
|
|
+ $show->field('id', 'ID');
|
|
|
+
|
|
|
+ $show->field('house_level', '房屋等级')->as(function ($value) {
|
|
|
+ return $value == 0 ? '所有等级' : $value . '级';
|
|
|
+ });
|
|
|
+
|
|
|
+ $show->field('talent_level', '达人等级')->as(function ($value) {
|
|
|
+ return $value == 0 ? '所有等级' : $value . '级';
|
|
|
+ });
|
|
|
+
|
|
|
+ $show->field('fee_rate', '手续费率')->as(function ($value) {
|
|
|
+ return number_format($value * 100, 4) . '%';
|
|
|
+ });
|
|
|
+
|
|
|
+ $show->field('description', '配置描述');
|
|
|
+ $show->field('priority', '优先级');
|
|
|
+
|
|
|
+ $show->field('status', '状态')->using([
|
|
|
+ UrsTransferFeeConfig::STATUS_DISABLED => '禁用',
|
|
|
+ UrsTransferFeeConfig::STATUS_ENABLED => '启用',
|
|
|
+ ])->dot([
|
|
|
+ UrsTransferFeeConfig::STATUS_DISABLED => 'danger',
|
|
|
+ UrsTransferFeeConfig::STATUS_ENABLED => 'success',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $show->field('created_at', '创建时间');
|
|
|
+ $show->field('updated_at', '更新时间');
|
|
|
+
|
|
|
+ // 显示匹配条件描述
|
|
|
+ $show->field('match_condition', '匹配条件')->as(function () {
|
|
|
+ $conditions = [];
|
|
|
+
|
|
|
+ if ($this->house_level > 0) {
|
|
|
+ $conditions[] = "房屋等级{$this->house_level}级";
|
|
|
+ } else {
|
|
|
+ $conditions[] = "所有房屋等级";
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($this->talent_level > 0) {
|
|
|
+ $conditions[] = "达人等级{$this->talent_level}级";
|
|
|
+ } else {
|
|
|
+ $conditions[] = "所有达人等级";
|
|
|
+ }
|
|
|
+
|
|
|
+ return implode(' + ', $conditions);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建表单
|
|
|
+ *
|
|
|
+ * @return Form
|
|
|
+ */
|
|
|
+ protected function form()
|
|
|
+ {
|
|
|
+ return Form::make(new UrsTransferFeeConfigRepository(), function (Form $form) {
|
|
|
+
|
|
|
+ $form->display('id', 'ID');
|
|
|
+
|
|
|
+ $form->select('house_level', '房屋等级')->options([
|
|
|
+ 0 => '所有等级',
|
|
|
+ 1 => '1级', 2 => '2级', 3 => '3级', 4 => '4级', 5 => '5级', 6 => '6级',
|
|
|
+ 7 => '7级', 8 => '8级', 9 => '9级', 10 => '10级', 11 => '11级', 12 => '12级',
|
|
|
+ ])->default(0)->required()->help('选择0表示适用于所有房屋等级');
|
|
|
+
|
|
|
+ $form->select('talent_level', '达人等级')->options([
|
|
|
+ 0 => '所有等级',
|
|
|
+ 1 => '初级达人', 2 => '中级达人', 3 => '高级达人', 4 => '资深达人', 5 => '顶级达人',
|
|
|
+ ])->default(0)->required()->help('选择0表示适用于所有达人等级');
|
|
|
+
|
|
|
+ $form->decimal('fee_rate', '手续费率')->default(0.05)->required()
|
|
|
+ ->help('输入0-1之间的小数,如0.05表示5%的手续费率');
|
|
|
+
|
|
|
+ $form->text('description', '配置描述')->required()->help('描述此配置的用途和适用条件');
|
|
|
+
|
|
|
+ $form->number('priority', '优先级')->min(0)->default(0)->required()
|
|
|
+ ->help('数值越大优先级越高,系统会选择优先级最高且匹配的配置');
|
|
|
+
|
|
|
+ $form->switch('status', '状态')->default(UrsTransferFeeConfig::STATUS_ENABLED)
|
|
|
+ ->help('启用后此配置才会生效');
|
|
|
+
|
|
|
+ $form->display('created_at', '创建时间');
|
|
|
+ $form->display('updated_at', '更新时间');
|
|
|
+
|
|
|
+ // 保存后清除缓存
|
|
|
+ $form->saved(function () {
|
|
|
+ UrsTransferFeeService::clearAllFeeRateCache();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量启用
|
|
|
+ */
|
|
|
+ public function enable(Request $request)
|
|
|
+ {
|
|
|
+ $ids = $request->get('ids');
|
|
|
+ if (empty($ids)) {
|
|
|
+ return $this->response()->error('请选择要启用的配置');
|
|
|
+ }
|
|
|
+
|
|
|
+ $repository = new UrsTransferFeeConfigRepository();
|
|
|
+ $count = $repository->batchUpdateStatus($ids, UrsTransferFeeConfig::STATUS_ENABLED);
|
|
|
+
|
|
|
+ // 清除缓存
|
|
|
+ UrsTransferFeeService::clearAllFeeRateCache();
|
|
|
+
|
|
|
+ return $this->response()->success("已启用 {$count} 个配置");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量禁用
|
|
|
+ */
|
|
|
+ public function disable(Request $request)
|
|
|
+ {
|
|
|
+ $ids = $request->get('ids');
|
|
|
+ if (empty($ids)) {
|
|
|
+ return $this->response()->error('请选择要禁用的配置');
|
|
|
+ }
|
|
|
+
|
|
|
+ $repository = new UrsTransferFeeConfigRepository();
|
|
|
+ $count = $repository->batchUpdateStatus($ids, UrsTransferFeeConfig::STATUS_DISABLED);
|
|
|
+
|
|
|
+ // 清除缓存
|
|
|
+ UrsTransferFeeService::clearAllFeeRateCache();
|
|
|
+
|
|
|
+ return $this->response()->success("已禁用 {$count} 个配置");
|
|
|
+ }
|
|
|
+}
|