webman_admin/src/plugin/admin/app/controller/auth/AdminRuleController.php
2022-08-16 08:59:23 +08:00

84 lines
2.1 KiB
PHP

<?php
namespace plugin\admin\app\controller\auth;
use plugin\admin\app\controller\Base;
use plugin\admin\app\controller\Crud;
use plugin\admin\app\model\AdminRule;
use support\Request;
class AdminRuleController extends Base
{
/**
* @var AdminRule
*/
protected $model = null;
use Crud;
public function __construct()
{
$this->model = new AdminRule;
}
/**
* @param Request $request
* @return \support\Response
*/
public function tree(Request $request)
{
$items = $this->model->where('status', 'normal')->get();
$items_map = [];
foreach ($items as $item) {
if ($item->hide_menu) {
continue;
}
$items_map[$item->id] = [
'title' => $item->title,
'value' => $item->id,
'key' => $item->id,
'pid' => $item->pid,
];
}
$formatted_items = [];
foreach ($items_map as $index => $item) {
if ($item['pid'] && isset($items_map[$item['pid']])) {
$items_map[$item['pid']]['children'][] = &$items_map[$index];
}
}
foreach ($items_map as $item) {
if (!$item['pid']) {
$formatted_items[] = $item;
}
}
return $this->json(0, 'ok', $formatted_items);
}
/**
* 删除
* @param Request $request
* @return \support\Response
* @throws \support\exception\BusinessException
*/
public function delete(Request $request)
{
$column = $request->post('column');
$value = $request->post('value');
$item = $this->model->where($column, $value)->first();
if (!$item) {
return $this->json(1, '记录不存在');
}
$delete_ids = $children_ids = [$item['id']];
while($children_ids) {
$children_ids = $this->model->whereIn('pid', $children_ids)->pluck('id')->toArray();
$delete_ids = array_merge($delete_ids, $children_ids);
}
$this->model->whereIn('id', $delete_ids)->delete();
return $this->json(0);
}
}