column('id', 'ID')->sortable(); $grid->column('transfer_type', '转账类型')->display(function ($value) { $typeMap = ['in' => '转入', 'out' => '转出']; return $typeMap[$value] ?? $value; })->label([ 'in' => 'success', 'out' => 'primary', ])->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('transfer_type', '转账类型')->select([ 'out' => '转出', 'in' => '转入', ]); $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('transfer_type', '转账类型')->as(function ($value) { $typeMap = ['in' => '转入', 'out' => '转出']; return $typeMap[$value] ?? $value; }); $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 = []; // 转账类型 $typeMap = ['in' => '转入', 'out' => '转出']; $conditions[] = $typeMap[$this->transfer_type] ?? $this->transfer_type; 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('transfer_type', '转账类型')->options([ 'out' => '转出', 'in' => '转入', ])->default('out')->required()->help('选择转账类型:转出或转入'); $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', '更新时间'); }); } /** * 批量启用 */ 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); 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} 个配置"); } }