getJsonData(); // 针对layui table自动分页请求参数,优先GET值. $queryPage = request()->has('page') ? request()->input('page', 1) : null; $queryPageSize = request()->has('page_size') ? request()->input('page_size', 10) : null; if (!is_null($queryPage)) { $inputData['page'] = $queryPage; } if (!is_null($queryPageSize)) { $inputData['page_size'] = $queryPageSize; } $rules = [ 'page' => 'nullable|integer', 'page_size' => 'nullable|integer', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $pageSize = $inputData['page_size'] ?? CommonConstant::PAGE_SIZE; if ($pageSize > 500) { $pageSize = CommonConstant::PAGE_SIZE; } $page = format_page($inputData['page']); $orders = [ ['id', 'DESC'], ]; $lists = $permissionResourceRepo->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, ['*'], $page); return new CommonPagesResponse($lists); } /** * 删除. * @return \Illuminate\Http\JsonResponse|CommonSuccessPkResponse * @throws \Exception */ public function resourceDelete() { /** * @var Validator $validatorFactory */ $validatorFactory = app('validator'); /** * @var PermissionResourceRepository $permissionResourceRepo */ $permissionResourceRepo = make(PermissionResourceRepository::class); $inputData = $this->getJsonData(); $rules = [ 'id' => 'required', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $item = $permissionResourceRepo->find($inputData['id']); if (empty($item)) { return json_fail(trans('common.err_resource_not_found')); } $oldItem = clone $item; $result = $item->delete(); if (!$result) { return json_fail('删除失败'); } else { $logSubject = '删除一个权限资源,id:'. $oldItem->id; $logSvalue = $oldItem->id; $logDbData = [ 'after_items' => [ ], 'before_items' => [ $oldItem->toArray(), ], ]; $this->log($logSubject, $logSvalue, $logDbData); return new CommonSuccessPkResponse($inputData['id']); } } /** * 详情角色. * @return mixed */ public function roleDetail() { /** * @var Validator $validatorFactory */ $validatorFactory = app('validator'); /** * @var PermissionRoleRepository $permissionRoleRepository */ $permissionRoleRepository = make(PermissionRoleRepository::class); $inputData = $this->getJsonData(); $rules = [ 'id' => 'required', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $item = $permissionRoleRepository->find($inputData['id']); return new PermissionRoleDetailResponse($item); } /** * 添加角色. * @return mixed */ public function roleAdd() { /** * @var Validator $validatorFactory */ $validatorFactory = app('validator'); /** * @var PermissionRoleRepository $permissionRoleRepository */ $permissionRoleRepository = make(PermissionRoleRepository::class); $inputData = $this->getJsonData(); $rules = [ 'name' => 'required|max:60', 'permissions' => 'required|array', 'squad' => 'nullable|integer', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } if (isset($inputData['permissions'])) { $permissions = !empty($inputData['permissions']) ? implode(',', $inputData['permissions']) : ''; } else { $permissions = ''; } if (!isset($inputData['squad'])) { $squad = 1000; } else { $squad = intval($inputData['squad']); } $setarr = [ 'name' => trim($inputData['name']), 'permissions' => $permissions, 'squad' => $squad, ]; $result = $permissionRoleRepository->create($setarr); if (!$result) { return json_fail('创建失败'); } else { $logSubject = '添加一个角色, 新名称:'. $result->name; $logSvalue = $result->id; $logDbData = [ 'after_items' => [ $result->toArray(), ], 'before_items' => [ ], ]; $this->log($logSubject, $logSvalue, $logDbData); return new CommonSuccessPkResponse($result->id); } } /** * 修改角色. * @return mixed|CommonSuccessPkResponse */ public function roleModify() { /** * @var Validator $validatorFactory */ $validatorFactory = app('validator'); /** * @var PermissionRoleRepository $permissionRoleRepository */ $permissionRoleRepository = make(PermissionRoleRepository::class); /** * @var ManagerRepository $managerRepository */ $managerRepository = make(ManagerRepository::class); $inputData = $this->getJsonData(); $rules = [ 'id' => 'required', 'name' => 'required|max:60', 'permissions' => 'required|array', 'squad' => 'nullable|integer', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $item = $permissionRoleRepository->find($inputData['id']); if (empty($item)) { return json_fail(trans('common.err_resource_not_found')); } $oldItem = clone $item; if (isset($inputData['permissions'])) { $permissions = !empty($inputData['permissions']) ? implode(',', $inputData['permissions']) : ''; } else { $permissions = ''; } if (!isset($inputData['squad'])) { $squad = 1000; } else { $squad = intval($inputData['squad']); } $oldName = $item->name; $name = trim($inputData['name']); $item->name = $name; $item->permissions = $permissions; $item->squad = $squad; $result = false; DB::beginTransaction(); try { $result = $item->save(); if ($result) { if ($name != $oldName) { // 批量替换冗余的管理角色名称. $rows = $managerRepository->update(['role_name' => $name], 'role_id', $inputData['id']); } } DB::commit(); } catch (\Throwable $e) { DB::rollBack(); } if (!$result) { return json_fail('修改失败'); } else { $logSubject = '修改一个角色, 新名称:'. $item->name; $logSvalue = $item->id; $logDbData = [ 'after_items' => [ $item->toArray(), ], 'before_items' => [ $oldItem->toArray(), ], ]; $this->log($logSubject, $logSvalue, $logDbData); return new CommonSuccessPkResponse($item->id); } } /** * 删除角色. * @return \Illuminate\Http\JsonResponse|CommonSuccessPkResponse * @throws \Exception */ public function roleDelete() { /** * @var Validator $validatorFactory */ $validatorFactory = app('validator'); /** * @var PermissionRoleRepository $permissionRoleRepository */ $permissionRoleRepository = make(PermissionRoleRepository::class); $inputData = $this->getJsonData(); $rules = [ 'id' => 'required', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $item = $permissionRoleRepository->find($inputData['id']); if (empty($item)) { return json_fail(trans('common.err_resource_not_found')); } $oldItem = clone $item; $result = $item->delete(); if (!$result) { return json_fail('删除失败'); } else { $logSubject = '删除一个角色, 名称:'. $oldItem->name; $logSvalue = $oldItem->id; $logDbData = [ 'after_items' => [ ], 'before_items' => [ $oldItem->toArray(), ], ]; $this->log($logSubject, $logSvalue, $logDbData); return new CommonSuccessPkResponse($inputData['id']); } } /** * 角色页列表. * @return mixed|CommonPagesResponse */ public function roleLists() { /** * @var Validator $validatorFactory */ $validatorFactory = app('validator'); /** * @var PermissionRoleRepository $permissionRoleRepository */ $permissionRoleRepository = make(PermissionRoleRepository::class); $inputData = $this->getJsonData(); // 针对layui table自动分页请求参数,优先GET值. $queryPage = request()->has('page') ? request()->input('page', 1) : null; $queryPageSize = request()->has('page_size') ? request()->input('page_size', 10) : null; if (!is_null($queryPage)) { $inputData['page'] = $queryPage; } if (!is_null($queryPageSize)) { $inputData['page_size'] = $queryPageSize; } $rules = [ 'page' => 'nullable|integer', 'page_size' => 'nullable|integer', ]; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $pageSize = $inputData['page_size'] ?? CommonConstant::PAGE_SIZE; if ($pageSize > 500) { $pageSize = CommonConstant::PAGE_SIZE; } $page = format_page($inputData['page']); $orders = [ ['squad', 'DESC'], ['id', 'DESC'], ]; // 注意,单例分页一定要克隆一个(保证前面没用使用到paginate); $lists = $permissionRoleRepository->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, ['*'], $page); return new PermissionRolePagesResponse($lists); } /** * 获取有效树形权限. * @return mixed */ public function allTree() { /** * @var PermissionResourceRepository $obj */ $obj = make(PermissionResourceRepository::class); $rTree = $obj->getAllEnableTree(); return json_success($rTree); } }