1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace App\Http\Controllers\Admin\System;
- use App\Http\Logics\Admin\RoleLogic;
- use App\Http\Models\Permission;
- use App\Http\Models\Role;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class RoleController extends Controller
- {
- protected $logic;
- public function __construct(RoleLogic $logic)
- {
- $this->logic = $logic;
- }
- public function index(Request $request)
- {
- if (!$request->ajax()) {
- return view('admin/system/role/index');
- }
- $roles = Role::query()->orderByDesc('id')->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
- return response()->json([
- 'rows' => $roles->items(),
- 'total' => $roles->total()
- ]);
- }
- public function save(Request $request, $id)
- {
- if (!$request->ajax()) {
- $record = Role::query()->find($id);
- return view('admin/system/role/save', [
- 'data' => $record
- ]);
- }
- Role::query()->updateOrCreate([
- 'id' => $id
- ], [
- 'name' => $request->input('name')
- ]);
- return response()->json(['message' => '操作成功']);
- }
- public function batchDestroy(Request $request)
- {
- $ids = $request->input('ids');
- Role::destroy($ids);
- return response()->json(['message' => '操作成功']);
- }
- public function allotPermissions(Request $request)
- {
- $roleIds = $request->input('roleIds');
- if (!$request->ajax()) {
- $selects = [];
- if (count($roleIds) == 1) {
- $role = Role::query()->where(['id' => $roleIds[0]])->first();
- if (!$role) return response()->json(['message' => '参数错误'], 400);
- $selects = $role->permissions->pluck('id')->toArray();
- }
- $permissions = $this->logic->getRoleCanPermissions($role ?? null);
- array_walk($permissions, function (&$item) use ($selects) {
- $item['open'] = true;
- $item['name'] = $item['name'] . ($item['type'] == 1 ? '【菜单】' : '【功能】');
- if (in_array($item['id'], $selects)) {
- $item['checked'] = true;
- }
- });
- $trees = list_to_tree($permissions, 'id', 'parent_id', 'children');
- return view('admin/system/role/permission', [
- 'trees' => $trees,
- 'roleIds' => $roleIds
- ]);
- }
- $permissionIds = $request->input('permissionIds');
- $roles = Role::query()->whereIn('id', $roleIds)->get();
- foreach ($roles as $role) {
- $role->permissions()->sync($permissionIds);
- }
- return response()->json(['message' => '操作成功']);
- }
- }
|