first commit

This commit is contained in:
liu
2026-07-13 15:23:29 +08:00
commit 50885a98c8
473 changed files with 33772 additions and 0 deletions
@@ -0,0 +1,99 @@
<?php
namespace Modules\SystemUser\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Modules\AnnoRoute\Attribute\DeleteRoute;
use Modules\AnnoRoute\Attribute\GetRoute;
use Modules\AnnoRoute\Attribute\PostRoute;
use Modules\AnnoRoute\Attribute\PutRoute;
use Modules\AnnoRoute\Attribute\RequestAttribute;
use Modules\Common\Http\Controllers\BaseController;
use Modules\SystemUser\Http\Requests\SysDeptFormRequest;
use Modules\SystemUser\Models\SysDeptModel;
/**
* 部门管理控制器
*/
#[RequestAttribute('/system/dept', 'system.dept')]
class SysDeptController extends BaseController
{
/** 部门列表 */
#[GetRoute(authorize: 'query')]
public function query(): JsonResponse
{
$data = SysDeptModel::orderBy('sort', 'desc')->get()->toArray();
$data = getTreeData($data);
return $this->success($data);
}
/** 创建部门 */
#[PostRoute(authorize: 'create')]
public function create(SysDeptFormRequest $request): JsonResponse
{
$validated = $request->validated();
$model = SysDeptModel::create($validated);
if (empty($model)) {
return $this->error();
}
return $this->success();
}
/** 编辑部门 */
#[PutRoute(
route: '/{id}',
authorize: 'update',
where: ['id' => '[0-9]+']
)]
public function update(int $id, SysDeptFormRequest $request): JsonResponse
{
$validated = $request->validated();
$model = SysDeptModel::find($id);
if (empty($model)) {
return $this->error();
}
$model->update($validated);
return $this->success();
}
/** 删除部门 */
#[DeleteRoute(authorize: 'delete')]
public function delete(Request $request): JsonResponse
{
$request->validate([
'ids' => 'required|array',
'ids.*' => 'integer|exists:sys_dept,id'
]);
$ids = $request->input('ids');
$departmentsWithChildren = SysDeptModel::whereIn('id', $ids)
->whereHas('children')
->get();
if ($departmentsWithChildren->isNotEmpty()) {
return $this->error('存在下级部门的部门无法删除');
}
SysDeptModel::whereIn('id', $ids)->delete();
return $this->success('部门删除成功');
}
/** 获取部门用户列表 */
#[GetRoute('/users/{id}', 'users')]
public function users(int $id): JsonResponse
{
$model = SysDeptModel::query()->find($id);
if (empty($model)) {
return $this->error('部门不存在');
}
$pageSize = request()->input('pageSize') ?? 10;
$data = $model->users()
->select(['id', 'username', 'nickname', 'email', 'mobile', 'status'])
->paginate($pageSize)
->toArray();
return $this->success($data);
}
}