初始化项目
This commit is contained in:
184
app/Http/Controllers/Auth/Admin/Auth.php
Normal file
184
app/Http/Controllers/Auth/Admin/Auth.php
Normal file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Auth\AuthService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Exception;
|
||||
|
||||
class Auth extends Controller
|
||||
{
|
||||
protected $authService;
|
||||
|
||||
public function __construct(AuthService $authService)
|
||||
{
|
||||
$this->authService = $authService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员登录
|
||||
*/
|
||||
public function login(Request $request)
|
||||
{
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'username' => 'required|string',
|
||||
'password' => 'required|string',
|
||||
]);
|
||||
|
||||
$result = $this->authService->login($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '登录成功',
|
||||
'data' => $result,
|
||||
]);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'code' => 422,
|
||||
'message' => $e->getMessage(),
|
||||
'data' => $e->errors(),
|
||||
], 422);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'code' => 500,
|
||||
'message' => '登录失败:' . $e->getMessage(),
|
||||
'data' => null,
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员登出
|
||||
*/
|
||||
public function logout(Request $request)
|
||||
{
|
||||
try {
|
||||
$this->authService->logout();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '登出成功',
|
||||
'data' => null,
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'code' => 500,
|
||||
'message' => '登出失败:' . $e->getMessage(),
|
||||
'data' => null,
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新token
|
||||
*/
|
||||
public function refresh(Request $request)
|
||||
{
|
||||
try {
|
||||
$result = $this->authService->refresh();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '刷新成功',
|
||||
'data' => $result,
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'code' => 401,
|
||||
'message' => 'Token无效或已过期',
|
||||
'data' => null,
|
||||
], 401);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户信息
|
||||
*/
|
||||
public function me(Request $request)
|
||||
{
|
||||
try {
|
||||
$result = $this->authService->me();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'code' => 401,
|
||||
'message' => '未登录或token已过期',
|
||||
'data' => null,
|
||||
], 401);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 找回密码
|
||||
*/
|
||||
public function resetPassword(Request $request)
|
||||
{
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'username' => 'required|string',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
]);
|
||||
|
||||
$this->authService->resetPassword($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '密码重置成功',
|
||||
'data' => null,
|
||||
]);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'code' => 422,
|
||||
'message' => $e->getMessage(),
|
||||
'data' => $e->errors(),
|
||||
], 422);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'code' => 500,
|
||||
'message' => '密码重置失败:' . $e->getMessage(),
|
||||
'data' => null,
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
*/
|
||||
public function changePassword(Request $request)
|
||||
{
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'old_password' => 'required|string',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
]);
|
||||
|
||||
$this->authService->changePassword($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '密码修改成功',
|
||||
'data' => null,
|
||||
]);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'code' => 422,
|
||||
'message' => $e->getMessage(),
|
||||
'data' => $e->errors(),
|
||||
], 422);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'code' => 500,
|
||||
'message' => '密码修改失败:' . $e->getMessage(),
|
||||
'data' => null,
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
228
app/Http/Controllers/Auth/Admin/Department.php
Normal file
228
app/Http/Controllers/Auth/Admin/Department.php
Normal file
@@ -0,0 +1,228 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Auth\DepartmentService;
|
||||
use App\Services\Auth\ImportExportService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class Department extends Controller
|
||||
{
|
||||
protected $departmentService;
|
||||
protected $importExportService;
|
||||
|
||||
public function __construct(
|
||||
DepartmentService $departmentService,
|
||||
ImportExportService $importExportService
|
||||
) {
|
||||
$this->departmentService = $departmentService;
|
||||
$this->importExportService = $importExportService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门列表
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$params = $request->all();
|
||||
$result = $this->departmentService->getList($params);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门树
|
||||
*/
|
||||
public function tree()
|
||||
{
|
||||
$result = $this->departmentService->getTree();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['tree' => $result],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有部门(不分页)
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$result = $this->departmentService->getAll();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['list' => $result],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门详情
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$result = $this->departmentService->getById($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:50',
|
||||
'parent_id' => 'nullable|integer|exists:auth_departments,id',
|
||||
'leader' => 'nullable|string|max:50',
|
||||
'phone' => 'nullable|string|max:20',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$result = $this->departmentService->create($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '创建成功',
|
||||
'data' => ['id' => $result->id],
|
||||
], 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新部门
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'nullable|string|max:50',
|
||||
'parent_id' => 'nullable|integer|exists:auth_departments,id',
|
||||
'leader' => 'nullable|string|max:50',
|
||||
'phone' => 'nullable|string|max:20',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$result = $this->departmentService->update($id, $validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '更新成功',
|
||||
'data' => ['id' => $result->id],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除部门
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->departmentService->delete($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '删除成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除部门
|
||||
*/
|
||||
public function batchDelete(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
]);
|
||||
|
||||
$count = $this->departmentService->batchDelete($validated['ids']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功删除 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新部门状态
|
||||
*/
|
||||
public function batchUpdateStatus(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'status' => 'required|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$count = $this->departmentService->batchUpdateStatus($validated['ids'], $validated['status']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功更新 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出部门
|
||||
*/
|
||||
public function export(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'nullable|array',
|
||||
'ids.*' => 'integer',
|
||||
]);
|
||||
|
||||
$filename = $this->importExportService->exportDepartments($validated['ids'] ?? []);
|
||||
|
||||
$filePath = $this->importExportService->getExportFilePath($filename);
|
||||
|
||||
return response()->download($filePath, $filename)->deleteFileAfterSend();
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入部门
|
||||
*/
|
||||
public function import(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'file' => 'required|file|mimes:xlsx,xls',
|
||||
]);
|
||||
|
||||
$file = $request->file('file');
|
||||
$realPath = $file->getRealPath();
|
||||
$filename = $file->getClientOriginalName();
|
||||
|
||||
$result = $this->importExportService->importDepartments($filename, $realPath);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "导入完成,成功 {$result['success_count']} 条,失败 {$result['error_count']} 条",
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载部门导入模板
|
||||
*/
|
||||
public function downloadTemplate()
|
||||
{
|
||||
$filename = $this->importExportService->downloadDepartmentTemplate();
|
||||
$filePath = $this->importExportService->getExportFilePath($filename);
|
||||
|
||||
return response()->download($filePath, $filename)->deleteFileAfterSend();
|
||||
}
|
||||
}
|
||||
182
app/Http/Controllers/Auth/Admin/Permission.php
Normal file
182
app/Http/Controllers/Auth/Admin/Permission.php
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Auth\PermissionService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class Permission extends Controller
|
||||
{
|
||||
protected $permissionService;
|
||||
|
||||
public function __construct(PermissionService $permissionService)
|
||||
{
|
||||
$this->permissionService = $permissionService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限列表
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$params = $request->all();
|
||||
$result = $this->permissionService->getList($params);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限树
|
||||
*/
|
||||
public function tree(Request $request)
|
||||
{
|
||||
$params = $request->all();
|
||||
$result = $this->permissionService->getTree($params);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['tree' => $result],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单树
|
||||
*/
|
||||
public function menu(Request $request)
|
||||
{
|
||||
$result = $this->permissionService->getMenuTree();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['tree' => $result],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限详情
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$result = $this->permissionService->getById($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建权限
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:50',
|
||||
'code' => 'required|string|max:100|unique:auth_permissions,code',
|
||||
'type' => 'required|in:menu,api,button',
|
||||
'route' => 'nullable|string|max:200',
|
||||
'component' => 'nullable|string|max:200',
|
||||
'icon' => 'nullable|string|max:50',
|
||||
'parent_id' => 'nullable|integer|exists:auth_permissions,id',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
'meta' => 'nullable|array',
|
||||
]);
|
||||
|
||||
$result = $this->permissionService->create($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '创建成功',
|
||||
'data' => ['id' => $result->id],
|
||||
], 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新权限
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'nullable|string|max:50',
|
||||
'code' => 'nullable|string|max:100|unique:auth_permissions,code,' . $id,
|
||||
'type' => 'nullable|in:menu,api,button',
|
||||
'route' => 'nullable|string|max:200',
|
||||
'component' => 'nullable|string|max:200',
|
||||
'icon' => 'nullable|string|max:50',
|
||||
'parent_id' => 'nullable|integer|exists:auth_permissions,id',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
'meta' => 'nullable|array',
|
||||
]);
|
||||
|
||||
$result = $this->permissionService->update($id, $validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '更新成功',
|
||||
'data' => ['id' => $result->id],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除权限
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->permissionService->delete($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '删除成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除权限
|
||||
*/
|
||||
public function batchDelete(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
]);
|
||||
|
||||
$count = $this->permissionService->batchDelete($validated['ids']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功删除 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新权限状态
|
||||
*/
|
||||
public function batchUpdateStatus(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'status' => 'required|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$count = $this->permissionService->batchUpdateStatus($validated['ids'], $validated['status']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功更新 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
}
|
||||
240
app/Http/Controllers/Auth/Admin/Role.php
Normal file
240
app/Http/Controllers/Auth/Admin/Role.php
Normal file
@@ -0,0 +1,240 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Auth\RoleService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class Role extends Controller
|
||||
{
|
||||
protected $roleService;
|
||||
|
||||
public function __construct(RoleService $roleService)
|
||||
{
|
||||
$this->roleService = $roleService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色列表
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$params = $request->all();
|
||||
$result = $this->roleService->getList($params);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有角色(不分页)
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$result = $this->roleService->getAll();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['list' => $result],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色详情
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$result = $this->roleService->getById($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建角色
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:50',
|
||||
'code' => 'required|string|max:50|unique:auth_roles,code',
|
||||
'description' => 'nullable|string|max:200',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
'permission_ids' => 'nullable|array',
|
||||
'permission_ids.*' => 'integer|exists:auth_permissions,id',
|
||||
]);
|
||||
|
||||
$result = $this->roleService->create($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '创建成功',
|
||||
'data' => ['id' => $result->id],
|
||||
], 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新角色
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'nullable|string|max:50',
|
||||
'code' => 'nullable|string|max:50|unique:auth_roles,code,' . $id,
|
||||
'description' => 'nullable|string|max:200',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
'permission_ids' => 'nullable|array',
|
||||
'permission_ids.*' => 'integer|exists:auth_permissions,id',
|
||||
]);
|
||||
|
||||
$result = $this->roleService->update($id, $validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '更新成功',
|
||||
'data' => ['id' => $result->id],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除角色
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->roleService->delete($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '删除成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除角色
|
||||
*/
|
||||
public function batchDelete(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
]);
|
||||
|
||||
$count = $this->roleService->batchDelete($validated['ids']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功删除 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新角色状态
|
||||
*/
|
||||
public function batchUpdateStatus(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'status' => 'required|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$count = $this->roleService->batchUpdateStatus($validated['ids'], $validated['status']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功更新 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配权限
|
||||
*/
|
||||
public function assignPermissions(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'permission_ids' => 'required|array',
|
||||
'permission_ids.*' => 'integer|exists:auth_permissions,id',
|
||||
]);
|
||||
|
||||
$this->roleService->assignPermissions($id, $validated['permission_ids']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '权限分配成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色的权限列表
|
||||
*/
|
||||
public function getPermissions($id)
|
||||
{
|
||||
$result = $this->roleService->getPermissions($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['tree' => $result],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制角色
|
||||
*/
|
||||
public function copy(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:50',
|
||||
'code' => 'required|string|max:50|unique:auth_roles,code',
|
||||
'description' => 'nullable|string|max:200',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$result = $this->roleService->copy($id, $validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '复制成功',
|
||||
'data' => ['id' => $result->id],
|
||||
], 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量复制角色
|
||||
*/
|
||||
public function batchCopy(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'name' => 'nullable|string|max:50',
|
||||
'code' => 'nullable|string|max:50',
|
||||
'description' => 'nullable|string|max:200',
|
||||
'sort' => 'nullable|integer|min:0',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$result = $this->roleService->batchCopy($validated['ids'], $validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "复制完成,成功 {$result['success_count']} 个,失败 {$result['error_count']} 个",
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
}
|
||||
329
app/Http/Controllers/Auth/Admin/User.php
Normal file
329
app/Http/Controllers/Auth/Admin/User.php
Normal file
@@ -0,0 +1,329 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Auth\UserService;
|
||||
use App\Services\Auth\UserOnlineService;
|
||||
use App\Services\Auth\ImportExportService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class User extends Controller
|
||||
{
|
||||
protected $userService;
|
||||
protected $userOnlineService;
|
||||
protected $importExportService;
|
||||
|
||||
public function __construct(
|
||||
UserService $userService,
|
||||
UserOnlineService $userOnlineService,
|
||||
ImportExportService $importExportService
|
||||
) {
|
||||
$this->userService = $userService;
|
||||
$this->userOnlineService = $userOnlineService;
|
||||
$this->importExportService = $importExportService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$params = $request->all();
|
||||
$result = $this->userService->getList($params);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户详情
|
||||
*/
|
||||
public function show(Request $request, $id)
|
||||
{
|
||||
$result = $this->userService->getById($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建用户
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'username' => 'required|string|max:50|unique:auth_users,username',
|
||||
'password' => 'required|string|min:6',
|
||||
'real_name' => 'required|string|max:50',
|
||||
'email' => 'nullable|email|unique:auth_users,email',
|
||||
'phone' => 'nullable|string|max:20',
|
||||
'department_id' => 'nullable|integer|exists:auth_departments,id',
|
||||
'role_ids' => 'nullable|array',
|
||||
'role_ids.*' => 'integer|exists:auth_roles,id',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$result = $this->userService->create($validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '创建成功',
|
||||
'data' => ['id' => $result->id],
|
||||
], 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'username' => 'nullable|string|max:50|unique:auth_users,username,' . $id,
|
||||
'password' => 'nullable|string|min:6',
|
||||
'real_name' => 'nullable|string|max:50',
|
||||
'email' => 'nullable|email|unique:auth_users,email,' . $id,
|
||||
'phone' => 'nullable|string|max:20',
|
||||
'department_id' => 'nullable|integer|exists:auth_departments,id',
|
||||
'role_ids' => 'nullable|array',
|
||||
'role_ids.*' => 'integer|exists:auth_roles,id',
|
||||
'status' => 'nullable|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$result = $this->userService->update($id, $validated);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '更新成功',
|
||||
'data' => ['id' => $result->id],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
*/
|
||||
public function destroy(Request $request, $id)
|
||||
{
|
||||
$this->userService->delete($id);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '删除成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除用户
|
||||
*/
|
||||
public function batchDelete(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
]);
|
||||
|
||||
$count = $this->userService->batchDelete($validated['ids']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功删除 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新用户状态
|
||||
*/
|
||||
public function batchUpdateStatus(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'status' => 'required|integer|in:0,1',
|
||||
]);
|
||||
|
||||
$count = $this->userService->batchUpdateStatus($validated['ids'], $validated['status']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功更新 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量分配部门
|
||||
*/
|
||||
public function batchAssignDepartment(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'department_id' => 'nullable|integer|exists:auth_departments,id',
|
||||
]);
|
||||
|
||||
$count = $this->userService->batchAssignDepartment($validated['ids'], $validated['department_id']);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功分配 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量分配角色
|
||||
*/
|
||||
public function batchAssignRoles(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'required|array',
|
||||
'ids.*' => 'integer',
|
||||
'role_ids' => 'nullable|array',
|
||||
'role_ids.*' => 'integer|exists:auth_roles,id',
|
||||
]);
|
||||
|
||||
$count = $this->userService->batchAssignRoles($validated['ids'], $validated['role_ids'] ?? []);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "成功分配 {$count} 条数据",
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出用户
|
||||
*/
|
||||
public function export(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'ids' => 'nullable|array',
|
||||
'ids.*' => 'integer',
|
||||
]);
|
||||
|
||||
$filename = $this->importExportService->exportUsers($validated['ids'] ?? []);
|
||||
|
||||
$filePath = $this->importExportService->getExportFilePath($filename);
|
||||
|
||||
return response()->download($filePath, $filename)->deleteFileAfterSend();
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入用户
|
||||
*/
|
||||
public function import(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'file' => 'required|file|mimes:xlsx,xls',
|
||||
]);
|
||||
|
||||
$file = $request->file('file');
|
||||
$realPath = $file->getRealPath();
|
||||
$filename = $file->getClientOriginalName();
|
||||
|
||||
$result = $this->importExportService->importUsers($filename, $realPath);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => "导入完成,成功 {$result['success_count']} 条,失败 {$result['error_count']} 条",
|
||||
'data' => $result,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载用户导入模板
|
||||
*/
|
||||
public function downloadTemplate()
|
||||
{
|
||||
$filename = $this->importExportService->downloadUserTemplate();
|
||||
$filePath = $this->importExportService->getExportFilePath($filename);
|
||||
|
||||
return response()->download($filePath, $filename)->deleteFileAfterSend();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在线用户数量
|
||||
*/
|
||||
public function getOnlineCount()
|
||||
{
|
||||
$count = $this->userOnlineService->getOnlineCount();
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['count' => $count],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在线用户列表
|
||||
*/
|
||||
public function getOnlineUsers(Request $request)
|
||||
{
|
||||
$limit = $request->get('limit', 100);
|
||||
$users = $this->userOnlineService->getOnlineUsers($limit);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['list' => $users],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户的所有会话
|
||||
*/
|
||||
public function getUserSessions($userId)
|
||||
{
|
||||
$sessions = $this->userOnlineService->getUserSessions($userId);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => 'success',
|
||||
'data' => ['sessions' => $sessions],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 强制用户下线(单个会话)
|
||||
*/
|
||||
public function setUserOffline($userId, Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'token' => 'nullable|string',
|
||||
]);
|
||||
|
||||
if (!empty($validated['token'])) {
|
||||
$this->userOnlineService->setOffline($userId, $validated['token']);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '操作成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 强制用户所有设备下线
|
||||
*/
|
||||
public function setUserAllOffline($userId)
|
||||
{
|
||||
$this->userOnlineService->setAllOffline($userId);
|
||||
|
||||
return response()->json([
|
||||
'code' => 200,
|
||||
'message' => '操作成功',
|
||||
'data' => null,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user