You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
4.6 KiB
173 lines
4.6 KiB
<?php
|
|
|
|
namespace app\admin\logic;
|
|
|
|
use \think\Model;
|
|
use app\common\CommonConstant;
|
|
use app\common\util\TreeUtil;
|
|
|
|
/**
|
|
* 权限操作
|
|
*/
|
|
class AuthRule extends Model
|
|
{
|
|
|
|
/**
|
|
* 获取权限组权限
|
|
* @param $groupId 分组id
|
|
* @return array
|
|
*/
|
|
public function getAuthByGroupId($groupId)
|
|
{
|
|
$group = my_model('AuthGroup', 'model', 'admin')->getGroupById($groupId);
|
|
if ($group['status'] != 1 || empty($group['rules'])) {
|
|
return [];
|
|
}
|
|
$ruleIds = explode(',', $group['rules']);
|
|
return my_model('AuthRule', 'model', 'admin')->getRuleByIds($ruleIds);
|
|
}
|
|
|
|
/**
|
|
* 获取权限组权限 格式化成树状
|
|
* @param $groupId 分组id
|
|
* @return array
|
|
*/
|
|
public function getAuthByGroupIdToTree($groupId)
|
|
{
|
|
$group = my_model('AuthGroup', 'model', 'admin')->getGroupById($groupId);
|
|
if ($group['status'] != 1 || empty($group['rules'])) {
|
|
return [];
|
|
}
|
|
$ruleIds = explode(',', $group['rules']);
|
|
$rules = my_model('AuthRule', 'model', 'admin')->getRuleByIds($ruleIds);
|
|
$rules = TreeUtil::listToTreeMulti($rules, 0, 'id', 'pid', 'children');
|
|
return $rules;
|
|
}
|
|
|
|
/** 根据名称获取权限
|
|
* @param $name 权限标识
|
|
* @param $groupId 分组id
|
|
* @return bool
|
|
*/
|
|
public function hasAccessByName($name, $groupId)
|
|
{
|
|
$rule = my_model('AuthRule', 'model', 'admin')->getRuleByName($name);
|
|
if (empty($rule)) {
|
|
return true;
|
|
}
|
|
if ($rule['status'] === 0) {
|
|
return false;
|
|
}
|
|
$group = my_model('AuthGroup', 'model', 'admin')->getGroupById($groupId);
|
|
if ($group['status'] != 1 || empty($group['rules'])) {
|
|
return false;
|
|
}
|
|
$myRuleIds = explode(',', $group['rules']);
|
|
if (in_array($rule['id'], $myRuleIds)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/** 通过ID获取信息
|
|
* @param $id
|
|
*/
|
|
public function getRuleById($id)
|
|
{
|
|
return my_model('AuthRule', 'model', 'admin')->getRuleById($id);
|
|
}
|
|
|
|
/** 通过标识获取信息
|
|
* @param $name
|
|
* @return mixed
|
|
*/
|
|
public function getRuleByName($name)
|
|
{
|
|
return my_model('AuthRule', 'model', 'admin')->getRuleByName($name);
|
|
}
|
|
|
|
/**
|
|
* 获取列表
|
|
*/
|
|
public function getLists($title = '', $status = -1, $myorder = 'a.id desc')
|
|
{
|
|
return my_model('AuthRule', 'model', 'admin')->getLists($title, $status, $myorder);
|
|
}
|
|
|
|
/**
|
|
* 获取所有的列表,不分页
|
|
*/
|
|
public function getListsAll($status = -1, $myorder = 'a.id desc')
|
|
{
|
|
return my_model('AuthRule', 'model', 'admin')->getListsAll($status, $myorder);
|
|
}
|
|
|
|
/**
|
|
* 获取数量
|
|
*/
|
|
public function getTotal($title = '', $status = -1)
|
|
{
|
|
return my_model('AuthRule', 'model', 'admin')->getTotal($title, $status);
|
|
}
|
|
|
|
/** 保存
|
|
* @param $id
|
|
* @param $data
|
|
*/
|
|
public function modify($id, $data)
|
|
{
|
|
$data['updateTime'] = time();
|
|
if ($id) {
|
|
if (my_model('AuthRule', 'model', 'admin')->check($data['name']) && $id != my_model('AuthRule', 'model', 'admin')->check($data['name'])) {
|
|
ajax_return_error('该标识已存在!');
|
|
}
|
|
return my_model('AuthRule', 'model', 'admin')->modify($id, $data);
|
|
} else {
|
|
if (my_model('AuthRule', 'model', 'admin')->check($data['name'])) {
|
|
ajax_return_error('该标识已存在!');
|
|
}
|
|
return my_model('AuthRule', 'model', 'admin')->add($data);
|
|
}
|
|
}
|
|
|
|
/** 删除
|
|
* @param $id
|
|
* @return int
|
|
*/
|
|
public function del($id)
|
|
{
|
|
$info = my_model('AuthRule', 'model', 'admin')->getRuleByPid($id);
|
|
if ($info) {
|
|
ajax_return_error('请先删除下级!');
|
|
}
|
|
return my_model('AuthRule', 'model', 'admin')->del($id);
|
|
}
|
|
|
|
/**
|
|
* @param $val id 值
|
|
* @param $field 修改字段
|
|
* @param $value 字段值
|
|
*/
|
|
public function change($val, $field, $value)
|
|
{
|
|
$table = 'auth_rule';
|
|
$id = 'id';
|
|
return model('Admin')->change($table, $id, $val, $field, $value);
|
|
}
|
|
|
|
public function sort($listOrder)
|
|
{
|
|
if (empty($listOrder)) {
|
|
ajax_return_error('没有数据!');
|
|
} else {
|
|
|
|
foreach ($listOrder as $id => $sorts) {
|
|
my_model('AuthRule', 'model', 'admin')->sort($id, $sorts);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
}
|