Repository navigation
Expand file tree
/
Copy pathMenuController.php
More file actions
59 lines (50 loc) · 1.75 KB
/
Copy pathMenuController.php
File metadata and controls
59 lines (50 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
namespace app\adminapi\controller;
use app\adminapi\vo\CreatedVo;
use app\adminapi\vo\MenuVo;
use app\common\config\ConfigRepository;
use app\common\response\ApiResponseFactory;
use app\common\router\DeleteMapping;
use app\common\router\GetMapping;
use app\common\router\PostMapping;
use app\common\router\PutMapping;
use app\common\router\RestController;
use app\common\service\system\MenuService;
/**
* 菜单管理控制器。
* Author: qiufeng
*/
#[RestController('/adminapi/system/menus', tag: '菜单')]
final class MenuController extends BaseController
{
public function __construct(
ApiResponseFactory $responseFactory,
ConfigRepository $config,
private readonly MenuService $service
) {
parent::__construct($responseFactory, $config);
}
/** @return MenuVo[] */
#[GetMapping(permission: 'system:menu:list', summary: '菜单树', listOf: MenuVo::class)]
public function tree(): array
{
return MenuVo::list($this->service->tree());
}
#[PostMapping(permission: 'system:menu:create', summary: '新增菜单/权限节点', message: '创建成功')]
public function store(): CreatedVo
{
return CreatedVo::from(['id' => $this->service->create($this->request->all())]);
}
#[PutMapping('/{id}', permission: 'system:menu:update', summary: '编辑菜单', message: '更新成功')]
public function update(): array
{
$this->service->update((int) $this->param('id'), $this->request->all());
return [];
}
#[DeleteMapping('/{id}', permission: 'system:menu:delete', summary: '删除菜单', message: '删除成功')]
public function destroy(): array
{
$this->service->delete((int) $this->param('id'));
return [];
}
}