2019-12-09 16:22:00 +08:00
|
|
|
|
<?php
|
|
|
|
|
namespace catchAdmin\permissions\model;
|
|
|
|
|
|
2019-12-11 21:00:14 +08:00
|
|
|
|
use catcher\base\CatchModel;
|
2019-12-09 16:22:00 +08:00
|
|
|
|
|
2019-12-11 21:00:14 +08:00
|
|
|
|
class Permissions extends CatchModel
|
2019-12-09 16:22:00 +08:00
|
|
|
|
{
|
|
|
|
|
protected $name = 'permissions';
|
|
|
|
|
|
|
|
|
|
protected $field = [
|
|
|
|
|
'id', //
|
2019-12-11 21:00:14 +08:00
|
|
|
|
'permission_name', // 菜单名称
|
2019-12-09 16:22:00 +08:00
|
|
|
|
'parent_id', // 父级ID
|
2019-12-12 18:52:33 +08:00
|
|
|
|
'module', // 模块
|
2019-12-09 16:22:00 +08:00
|
|
|
|
'route', // 路由
|
2019-12-11 21:00:14 +08:00
|
|
|
|
'method', // 请求方法
|
2019-12-09 16:22:00 +08:00
|
|
|
|
'permission_mark', // 权限标识
|
|
|
|
|
'type', // 1 菜单 2 按钮
|
|
|
|
|
'sort', // 排序字段
|
|
|
|
|
'created_at', // 创建时间
|
|
|
|
|
'updated_at', // 更新时间
|
|
|
|
|
'deleted_at', // 删除状态,null 未删除 timestamp 已删除
|
|
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
2019-12-11 21:00:14 +08:00
|
|
|
|
public const MENU_TYPE = 1;
|
|
|
|
|
public const BTN_TYPE = 2;
|
|
|
|
|
|
|
|
|
|
public const GET = 'get';
|
|
|
|
|
public const POST = 'post';
|
|
|
|
|
public const PUT = 'put';
|
|
|
|
|
public const DELETE = 'delete';
|
|
|
|
|
|
2019-12-12 09:13:29 +08:00
|
|
|
|
public function getList($search = [])
|
2019-12-11 21:00:14 +08:00
|
|
|
|
{
|
|
|
|
|
return $this->when($search['name'] ?? false, function ($query) use ($search){
|
|
|
|
|
$query->whereLike('name', $search['name']);
|
|
|
|
|
})
|
|
|
|
|
->when($search['id'] ?? false, function ($query) use ($search){
|
|
|
|
|
$query->where('parent_id', $search['id'])
|
|
|
|
|
->whereOr('id', $search['id']);
|
|
|
|
|
})
|
2019-12-27 09:52:03 +08:00
|
|
|
|
->when($search['role_id'] ?? false, function ($query) use ($search){
|
|
|
|
|
$permissionIds = [];
|
|
|
|
|
$permissions = Roles::where('id', $search['role_id'])->find()->getPermissions();
|
|
|
|
|
foreach ($permissions as $_permission) {
|
|
|
|
|
$permissionIds[] = $_permission->pivot->permission_id;
|
|
|
|
|
}
|
|
|
|
|
if(!empty($permissionIds)) {
|
|
|
|
|
$query->whereIn('id', $permissionIds);
|
|
|
|
|
}
|
2019-12-12 18:52:33 +08:00
|
|
|
|
})
|
2019-12-11 21:00:14 +08:00
|
|
|
|
->order('sort', 'desc')
|
|
|
|
|
->order('id', 'desc')
|
|
|
|
|
->select()
|
|
|
|
|
->toArray();
|
|
|
|
|
}
|
|
|
|
|
|
2019-12-09 16:22:00 +08:00
|
|
|
|
public function roles(): \think\model\relation\BelongsToMany
|
|
|
|
|
{
|
2019-12-12 09:13:29 +08:00
|
|
|
|
return $this->belongsToMany(Roles::class, 'role_has_permissions', 'role_id', 'permission_id');
|
2019-12-09 16:22:00 +08:00
|
|
|
|
}
|
2019-12-27 09:52:03 +08:00
|
|
|
|
}
|