| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <?phpnamespace 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' => '操作成功']);    }}
 |