| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- namespace App\Module\Pet\AdminControllers;
- use App\Module\Pet\Models\PetSkillProcessLog;
- use UCore\DcatAdmin\AdminController;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Show;
- use Dcat\Admin\Form;
- use Spatie\RouteAttributes\Attributes\Resource;
- /**
- * 宠物技能处理日志管理
- */
- #[Resource('pet-skill-process-logs', names: 'dcat.admin.pet-skill-process-logs')]
- class PetSkillProcessLogController extends AdminController
- {
- /**
- * 标题
- *
- * @var string
- */
- protected $title = '宠物技能处理日志';
- /**
- * 列表页面
- *
- * @return Grid
- */
- protected function grid(): Grid
- {
- return Grid::make(PetSkillProcessLog::with(['activeSkill', 'pet']), function (Grid $grid) {
- $grid->column('id', 'ID')->sortable();
- $grid->column('active_skill_id', '激活技能ID')->display(function ($value) {
- return "<a href='/admin/pet/active-skills/{$value}' target='_blank'>{$value}</a>";
- });
- $grid->column('pet_id', '宠物ID')->display(function ($value) {
- return "<a href='/admin/pet/users/{$value}' target='_blank'>{$value}</a>";
- });
- $grid->column('user_id', '用户ID')->display(function ($value) {
- return "<a href='/admin/users/{$value}' target='_blank'>{$value}</a>";
- });
- $grid->column('skill_name', '技能名称')->label([
- '自动收菜' => 'success',
- '自动播种' => 'primary',
- '自动浇水' => 'info',
- '自动除草' => 'warning',
- '自动杀虫' => 'danger',
- '自动施肥' => 'success',
- ]);
- $grid->column('process_status', '处理状态')->using([
- 'success' => '成功',
- 'failed' => '失败',
- 'skipped' => '跳过',
- 'expired' => '过期'
- ])->label([
- 'success' => 'success',
- 'failed' => 'danger',
- 'skipped' => 'warning',
- 'expired' => 'secondary'
- ]);
- $grid->column('process_reason', '处理原因')->limit(50);
- $grid->column('execution_time', '执行耗时(秒)')->display(function ($value) {
- if ($value > 1) {
- return "<span class='text-danger'>{$value}</span>";
- } elseif ($value > 0.5) {
- return "<span class='text-warning'>{$value}</span>";
- } else {
- return "<span class='text-success'>{$value}</span>";
- }
- });
- $grid->column('processed_at', '处理时间')->sortable();
- // 筛选器
- $grid->filter(function (Grid\Filter $filter) {
- $filter->equal('user_id', '用户ID');
- $filter->equal('pet_id', '宠物ID');
- $filter->equal('skill_name', '技能名称')->select([
- '自动收菜' => '自动收菜',
- '自动播种' => '自动播种',
- '自动浇水' => '自动浇水',
- '自动除草' => '自动除草',
- '自动杀虫' => '自动杀虫',
- '自动施肥' => '自动施肥',
- ]);
- $filter->equal('process_status', '处理状态')->select([
- 'success' => '成功',
- 'failed' => '失败',
- 'skipped' => '跳过',
- 'expired' => '过期'
- ]);
- $filter->between('processed_at', '处理时间')->datetime();
- $filter->between('execution_time', '执行耗时(秒)');
- });
- // 默认排序
- $grid->model()->orderBy('processed_at', 'desc');
- // 禁用操作
- $grid->disableCreateButton();
- $grid->disableEditButton();
- $grid->disableDeleteButton();
- $grid->disableBatchDelete();
- // 行操作
- $grid->actions(function (Grid\Displayers\Actions $actions) {
- $actions->disableEdit();
- $actions->disableDelete();
- });
- // 工具栏
- $grid->tools(function (Grid\Tools $tools) {
- $tools->append('<a href="javascript:void(0)" class="btn btn-sm btn-outline-primary" onclick="location.reload()">刷新</a>');
- });
- });
- }
- /**
- * 详情页面
- *
- * @param mixed $id
- * @return Show
- */
- protected function detail($id): Show
- {
- return Show::make($id, PetSkillProcessLog::with(['activeSkill', 'pet']), function (Show $show) {
- $show->field('id', 'ID');
- $show->field('active_skill_id', '激活技能ID');
- $show->field('pet_id', '宠物ID');
- $show->field('user_id', '用户ID');
- $show->field('skill_name', '技能名称');
- $show->field('process_status', '处理状态')->using([
- 'success' => '成功',
- 'failed' => '失败',
- 'skipped' => '跳过',
- 'expired' => '过期'
- ]);
- $show->field('process_reason', '处理原因');
- $show->field('process_data', '处理数据')->json();
- $show->field('execution_time', '执行耗时(秒)');
- $show->field('processed_at', '处理时间');
- $show->field('created_at', '创建时间');
- $show->field('updated_at', '更新时间');
- // 关联信息
- $show->divider();
- if ($show->model()->activeSkill) {
- $show->field('activeSkill.skill_name', '关联技能名称');
- $show->field('activeSkill.start_time', '技能开始时间');
- $show->field('activeSkill.end_time', '技能结束时间');
- $show->field('activeSkill.status', '技能状态');
- }
- if ($show->model()->pet) {
- $show->field('pet.name', '宠物名称');
- $show->field('pet.level', '宠物等级');
- }
- });
- }
- /**
- * 表单页面(禁用)
- *
- * @return Form
- */
- protected function form(): Form
- {
- return Form::make(new PetSkillProcessLog(), function (Form $form) {
- $form->display('id', 'ID');
- $form->display('active_skill_id', '激活技能ID');
- $form->display('pet_id', '宠物ID');
- $form->display('user_id', '用户ID');
- $form->display('skill_name', '技能名称');
- $form->display('process_status', '处理状态');
- $form->display('process_reason', '处理原因');
- $form->display('process_data', '处理数据');
- $form->display('execution_time', '执行耗时(秒)');
- $form->display('processed_at', '处理时间');
- $form->display('created_at', '创建时间');
- $form->display('updated_at', '更新时间');
- $form->disableCreatingCheck();
- $form->disableEditingCheck();
- $form->disableViewCheck();
- });
- }
- }
|