setWorkingDirectory(base_path()); $process->run(); if (!$process->isSuccessful()) { return response()->json([ 'status' => 'error', 'message' => 'JSON生成失败: ' . $process->getErrorOutput() ]); } return response()->json([ 'status' => 'success', 'message' => 'JSON生成成功' ]); } catch (\Exception $e) { return response()->json([ 'status' => 'error', 'message' => 'JSON生成失败: ' . $e->getMessage() ]); } } /** * 列表页 * * @return Grid */ protected function grid() { return Grid::make(new FundCurrencyRepository(), function (Grid $grid) { $helper = new GridHelper($grid, $this); // 检查配置表状态 $status = SyncFundCurrencyJsonTool::shouldDisplay(); if ($status) { admin_warning('JSON配置表状态', '货币配置表需要更新'); } else { admin_success('JSON配置表状态', '货币配置表已是最新'); } // 添加工具按钮 $grid->tools([ new SyncFundCurrencyJsonTool() ]); $helper->columnId(); $grid->column('identification', '货币标识')->sortable(); $grid->column('name', '货币名称')->sortable(); $grid->column('icon', '图标')->image('', 40, 40); $grid->column('data1', '额外数据')->display(function ($value) { if (empty($value)) { return '-'; } $data = json_decode($value, true); return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); }); $grid->column('create_time', '创建时间')->display(function ($value) { return date('Y-m-d H:i:s', $value); })->sortable(); $grid->column('update_time', '更新时间')->display(function ($value) { return date('Y-m-d H:i:s', $value); })->sortable(); // 筛选器 $grid->filter(function (Grid\Filter $filter) { $filter->equal('id', 'ID'); $filter->like('identification', '货币标识'); $filter->like('name', '货币名称'); }); }); } /** * 详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new FundCurrencyRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); $show->field('id', 'ID'); $show->field('identification', '货币标识'); $show->field('name', '货币名称'); $show->field('icon', '图标')->image(); $show->field('data1', '额外数据')->json(); $show->field('create_time', '创建时间')->as(function ($value) { return date('Y-m-d H:i:s', $value); }); $show->field('update_time', '更新时间')->as(function ($value) { return date('Y-m-d H:i:s', $value); }); }); } /** * 表单 * * @return Form */ protected function form() { return Form::make(new FundCurrencyRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $form->text('identification', '货币标识') ->required() ->maxLength(10) ->help('货币的唯一标识符,最多10个字符'); $form->text('name', '货币名称') ->required() ->maxLength(30) ->help('货币的显示名称,最多30个字符'); $form->image('icon', '图标') ->required() ->autoUpload() ->uniqueName() ->help('货币的图标,建议尺寸64x64像素'); $form->textarea('data1', '额外数据') ->help('额外的货币属性,JSON格式'); // 保存前处理 $form->saving(function (Form $form) { // 设置时间戳 if ($form->isCreating()) { $form->create_time = time(); } $form->update_time = time(); // 验证额外数据是否为有效的JSON if (!empty($form->data1)) { $data = json_decode($form->data1, true); if (json_last_error() !== JSON_ERROR_NONE) { return $form->response()->error('额外数据必须是有效的JSON格式'); } $form->data1 = json_encode($data); } }); // 保存后处理 $form->saved(function (Form $form) { // 提示用户更新JSON配置 admin_toastr('货币配置已保存,请点击"生成JSON"按钮更新配置文件', 'info'); }); }); } }