新增搜索器

This commit is contained in:
wuyanwen 2020-01-13 21:23:24 +08:00
parent 3b67f3fb5f
commit be02170697
13 changed files with 115 additions and 59 deletions

View File

@ -24,9 +24,9 @@ class Department extends CatchController
* @return \think\response\Json
* @throws \think\db\exception\DbException
*/
public function index(CatchRequest $request): \think\response\Json
public function index(): \think\response\Json
{
return CatchResponse::success(Tree::done($this->department->getList($request->param())));
return CatchResponse::success(Tree::done($this->department->getList()));
}
/**

View File

@ -22,9 +22,9 @@ class Job extends CatchController
* @param CatchRequest $request
* @return \think\response\Json
*/
public function index(CatchRequest $request): \think\response\Json
public function index(): \think\response\Json
{
return CatchResponse::paginate($this->job->getList($request->param()));
return CatchResponse::paginate($this->job->getList());
}
/**

View File

@ -24,9 +24,9 @@ class Permission extends CatchController
* @param Request $request
* @return \think\response\Json
*/
public function index(Request $request)
public function index()
{
return CatchResponse::success(Tree::done($this->permissions->getList($request->param())));
return CatchResponse::success(Tree::done($this->permissions->getList()));
}
/**

View File

@ -23,9 +23,9 @@ class Role extends CatchController
* @param Request $request
* @return string
*/
public function index(Request $request)
public function index()
{
return CatchResponse::success(Tree::done($this->role->getList($request->param())));
return CatchResponse::success(Tree::done($this->role->getList()));
}
/**

View File

@ -1,10 +1,13 @@
<?php
namespace catchAdmin\permissions\model;
use catchAdmin\permissions\model\search\DepartmentSearch;
use catcher\base\CatchModel;
class Department extends CatchModel
{
use DepartmentSearch;
protected $name = 'departments';
protected $field = [
@ -29,19 +32,14 @@ class Department extends CatchModel
* @param $params
* @throws \think\db\exception\DbException
*/
public function getList($params)
public function getList(): array
{
return $this->field([
'id',
'department_name as title', 'parent_id', 'principal', 'mobile', 'email', 'creator_id', 'status', 'sort',
'created_at', 'updated_at'
])
->when($params['department_name'] ?? false, function ($query) use ($params){
$query->whereLike('department_name', '%' . $params['department_name'] . '%');
})
->when($params['status'] ?? false, function ($query) use ($params){
$query->where('status', $params['status']);
})
->catchSearch()
->select()->toArray();
}
}

View File

@ -28,17 +28,9 @@ class Job extends CatchModel
* @throws \think\db\exception\DbException
* @return \think\Paginator
*/
public function getList($params)
public function getList()
{
return $this->when($params['job_name'] ?? false, function ($query) use ($params){
$query->whereLike('job_name', '%' . $params['job_name'] . '%');
})
->when($params['status'] ?? false, function ($query) use ($params){
$query->where('status', $params['status']);
})
->when($params['coding'] ?? false, function ($query) use ($params){
$query->whereLike('coding', '%' . $params['coding'] . '%');
})
return $this->catchSearch()
->paginate($parmas['limit'] ?? $this->limit);
}
}

View File

@ -1,10 +1,13 @@
<?php
namespace catchAdmin\permissions\model;
use catchAdmin\permissions\model\search\PermissionsSearch;
use catcher\base\CatchModel;
class Permissions extends CatchModel
{
use PermissionsSearch;
protected $name = 'permissions';
protected $field = [
@ -33,25 +36,9 @@ class Permissions extends CatchModel
public const PUT = 'put';
public const DELETE = 'delete';
public function getList($search = [])
public function getList()
{
return $this->when($search['permission_name'] ?? false, function ($query) use ($search){
$query->whereLike('permission_name', '%'.$search['permission_name'].'%');
})
->when($search['id'] ?? false, function ($query) use ($search){
$query->where('parent_id', $search['id'])
->whereOr('id', $search['id']);
})
->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);
}
})
return $this->catchSearch()
->order('sort', 'desc')
->order('id', 'desc')
->select()

View File

@ -1,12 +1,14 @@
<?php
namespace catchAdmin\permissions\model;
use catchAdmin\permissions\model\search\RolesSearch;
use catchAdmin\user\model\Users;
use catcher\base\CatchModel;
class Roles extends CatchModel
{
use HasDepartmentsTrait;
use RolesSearch;
protected $name = 'roles';
@ -23,15 +25,9 @@ class Roles extends CatchModel
];
public function getList($search = [])
public function getList()
{
return $this->when($search['role_name'] ?? false, function ($query) use ($search){
$query->whereLike('role_name', $search['role_name']);
})
->when($search['id'] ?? false, function ($query) use ($search){
$query->where('parent_id', $search['id'])
->whereOr('id', $search['id']);
})
return $this->catchSearch()
->order('id', 'desc')
->select()
->toArray();

View File

@ -0,0 +1,15 @@
<?php
namespace catchAdmin\permissions\model\search;
trait DepartmentSearch
{
public function searchDepartmentNameAttr($query, $value, $data)
{
return $query->whereLike('department_name', $value);
}
public function searchStatusAttr($query, $value, $data)
{
return $query->where('status', $value);
}
}

View File

@ -0,0 +1,20 @@
<?php
namespace catchAdmin\permissions\model\search;
trait JobsSearch
{
public function searchJobNameAttr($query, $value, $data)
{
return $query->whereLike('job_name', $value);
}
public function searchCodingAttr($query, $value, $data)
{
return $query->whereLike('coding', $value);
}
public function searchStatusAttr($query, $value, $data)
{
return $query->where('status', $value);
}
}

View File

@ -0,0 +1,31 @@
<?php
namespace catchAdmin\permissions\model\search;
use catchAdmin\permissions\model\Roles;
trait PermissionsSearch
{
public function searchPermissionNameAttr($query, $value, $data)
{
return $query->whereLike('permission_name', $value);
}
public function searchIdAttr($query, $value, $data)
{
$query->where('parent_id', $value)->whereOr('id', $value);
}
public function searchRoleIdAttr($query, $value, $data)
{
$permissionIds = [];
$permissions = Roles::where('id', $value)->find()->getPermissions();
foreach ($permissions as $_permission) {
$permissionIds[] = $_permission->pivot->permission_id;
}
if(!empty($permissionIds)) {
$query->whereIn('id', $permissionIds);
}
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace catchAdmin\permissions\model\search;
trait RolesSearch
{
public function searchRoleNameAttr($query, $value, $data)
{
return $query->whereLike('role_name', $value);
}
public function searchIdAttr($query, $value, $data)
{
$query->where('parent_id', $value)->whereOr('id', $value);
}
}

View File

@ -0,0 +1 @@
<?php