审查视图

application/admin/controller/auth/Rule.php 3.7 KB
Karson authored
1 2 3 4
<?php

namespace app\admin\controller\auth;
5
use app\admin\model\AdminLog;
Karson authored
6 7
use app\common\controller\Backend;
use fast\Tree;
8
use think\Cache;
Karson authored
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

/**
 * 规则管理
 *
 * @icon fa fa-list
 * @remark 规则通常对应一个控制器的方法,同时左侧的菜单栏数据也从规则中体现,通常建议通过控制台进行生成规则节点
 */
class Rule extends Backend
{

    protected $model = null;
    protected $rulelist = [];

    public function _initialize()
    {
        parent::_initialize();
        $this->model = model('AuthRule');
        // 必须将结果集转换为数组
        Tree::instance()->init(collection($this->model->order('weigh', 'desc')->select())->toArray());
        $this->rulelist = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'title');
29
        $ruledata = [0 => __('None')];
Karson authored
30 31
        foreach ($this->rulelist as $k => $v)
        {
32 33
            if (!$v['ismenu'])
                continue;
Karson authored
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 60 61 62 63 64 65 66
            $ruledata[$v['id']] = $v['title'];
        }
        $this->view->assign('ruledata', $ruledata);
    }

    /**
     * 查看
     */
    public function index()
    {
        if ($this->request->isAjax())
        {
            $list = $this->rulelist;
            $total = count($this->rulelist);

            $result = array("total" => $total, "rows" => $list);

            return json($result);
        }
        return $this->view->fetch();
    }

    /**
     * 添加
     */
    public function add()
    {
        if ($this->request->isPost())
        {
            $this->code = -1;
            $params = $this->request->post("row/a");
            if ($params)
            {
67 68 69 70 71
                if (!$params['ismenu'] && !$params['pid'])
                {
                    $this->msg = __('The non-menu rule must have parent');
                    return;
                }
Karson authored
72
                $this->model->create($params);
73 74
                AdminLog::record(__('Add'), $this->model->getLastInsID());
                Cache::rm('__menu__');
Karson authored
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
                $this->code = 1;
            }

            return;
        }
        return $this->view->fetch();
    }

    /**
     * 编辑
     */
    public function edit($ids = NULL)
    {
        $row = $this->model->get(['id' => $ids]);
        if (!$row)
            $this->error(__('No Results were found'));
        if ($this->request->isPost())
        {
            $this->code = -1;
            $params = $this->request->post("row/a");
            if ($params)
            {
97 98 99 100 101
                if (!$params['ismenu'] && !$params['pid'])
                {
                    $this->msg = __('The non-menu rule must have parent');
                    return;
                }
Karson authored
102
                $row->save($params);
103 104
                AdminLog::record(__('Edit'), $ids);
                Cache::rm('__menu__');
Karson authored
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
                $this->code = 1;
            }

            return;
        }
        $this->view->assign("row", $row);
        return $this->view->fetch();
    }

    /**
     * 删除
     */
    public function del($ids = "")
    {
        $this->code = -1;
        if ($ids)
        {
122 123 124 125 126 127 128
            $delIds = [];
            foreach (explode(',', $ids) as $k => $v)
            {
                $delIds = array_merge($delIds, Tree::instance()->getChildrenIds($v, TRUE));
            }
            $delIds = array_unique($delIds);
            $count = $this->model->where('id', 'in', $delIds)->delete();
Karson authored
129 130
            if ($count)
            {
131 132
                AdminLog::record(__('Del'), $ids);
                Cache::rm('__menu__');
Karson authored
133 134 135 136 137 138 139
                $this->code = 1;
            }
        }

        return;
    }
140 141 142 143 144 145 146 147 148 149
    /**
     * 批量更新
     * @internal
     */
    public function multi($ids = "")
    {
        // 节点禁止批量操作
        $this->code = -1;
    }
Karson authored
150
}