first commit
This commit is contained in:
140
app/admin/controller/RoleController.php
Normal file
140
app/admin/controller/RoleController.php
Normal file
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
namespace app\admin\controller;
|
||||
|
||||
use support\Request;
|
||||
use app\common\model\Role;
|
||||
use Illuminate\Database\Capsule\Manager as DB;
|
||||
|
||||
class RoleController
|
||||
{
|
||||
public function list(Request $request)
|
||||
{
|
||||
$page = (int)$request->get('page', 1);
|
||||
$limit = (int)$request->get('limit', 15);
|
||||
|
||||
$query = Role::with('permissions');
|
||||
|
||||
if ($name = $request->get('name')) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
}
|
||||
|
||||
$total = $query->count();
|
||||
$list = $query->offset(($page - 1) * $limit)
|
||||
->limit($limit)
|
||||
->orderBy('id', 'desc')
|
||||
->get();
|
||||
|
||||
return jsonResponse([
|
||||
'total' => $total,
|
||||
'list' => $list
|
||||
]);
|
||||
}
|
||||
|
||||
public function all(Request $request)
|
||||
{
|
||||
$roles = Role::all();
|
||||
return jsonResponse($roles);
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$name = trim($request->post('name', ''));
|
||||
$code = trim($request->post('code', ''));
|
||||
$description = trim($request->post('description', ''));
|
||||
$permissionIds = $request->post('permission_ids', []);
|
||||
|
||||
if (!$name || !$code) {
|
||||
return jsonResponse(null, '角色名称和编码必填', 400);
|
||||
}
|
||||
|
||||
if (Role::where('name', $name)->exists()) {
|
||||
return jsonResponse(null, '角色名称已存在', 400);
|
||||
}
|
||||
if (Role::where('code', $code)->exists()) {
|
||||
return jsonResponse(null, '角色编码已存在', 400);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$role = Role::create([
|
||||
'name' => $name,
|
||||
'code' => $code,
|
||||
'description' => $description,
|
||||
]);
|
||||
|
||||
if (!empty($permissionIds)) {
|
||||
$role->permissions()->sync($permissionIds);
|
||||
}
|
||||
DB::commit();
|
||||
return jsonResponse(null, '创建成功');
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
return jsonResponse(null, '创建失败: ' . $e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function update(Request $request)
|
||||
{
|
||||
$id = (int)$request->post('id');
|
||||
$role = Role::find($id);
|
||||
if (!$role) {
|
||||
return jsonResponse(null, '角色不存在', 404);
|
||||
}
|
||||
|
||||
$name = trim($request->post('name', ''));
|
||||
if ($name && $name !== $role->name) {
|
||||
if (Role::where('name', $name)->exists()) {
|
||||
return jsonResponse(null, '角色名称已存在', 400);
|
||||
}
|
||||
$role->name = $name;
|
||||
}
|
||||
|
||||
$code = trim($request->post('code', ''));
|
||||
if ($code && $code !== $role->code) {
|
||||
if (Role::where('code', $code)->exists()) {
|
||||
return jsonResponse(null, '角色编码已存在', 400);
|
||||
}
|
||||
$role->code = $code;
|
||||
}
|
||||
|
||||
if ($request->post('description') !== null) {
|
||||
$role->description = trim($request->post('description'));
|
||||
}
|
||||
|
||||
$permissionIds = $request->post('permission_ids');
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$role->save();
|
||||
if (is_array($permissionIds)) {
|
||||
$role->permissions()->sync($permissionIds);
|
||||
}
|
||||
DB::commit();
|
||||
return jsonResponse(null, '更新成功');
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
return jsonResponse(null, '更新失败: ' . $e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(Request $request)
|
||||
{
|
||||
$id = (int)$request->post('id');
|
||||
$role = Role::find($id);
|
||||
if (!$role) {
|
||||
return jsonResponse(null, '角色不存在', 404);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$role->permissions()->detach();
|
||||
$role->delete();
|
||||
DB::table('admin_roles')->where('role_id', $id)->delete();
|
||||
DB::commit();
|
||||
return jsonResponse(null, '删除成功');
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
return jsonResponse(null, '删除失败: ' . $e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user