when($request->filled('id'), fn ($q) => $q->where('id', $request->id)); } // 查询列表 public function select(Request $request) { $page = new Pages($request, Roles::query()); $page->before(function ($query) use ($request) { $query->select(Roles::$selectFields); return $this->whens($query, $request); }); $result = $page->paginate(); return $result; } // 导出 public function export(Request $request) { $query = Roles::select(Roles::$selectFields); $query = $this->whens($query, $request); $query->orderBy('created_at', 'desc'); $header = []; $getEnValue = $this->getEnValue(); $excel = new SpoutExport($header); $excel->setData($query->get()); $result = $excel->setEnum($getEnValue)->spoutToExcel('excel_out'); return $result ? success($result['url']) : error(); } // 导入 public function import(Request $request) { $header = []; $getEnValue = $this->getEnValue(); $SpoutImport = new SpoutImport($header); $dataList = $SpoutImport->setRequest($request)->getExcelData(); return $dataList; } // 获取枚举值 public function getEnValue() { $data = [ 'open_status' => [ 0 => "待开卡", 1 => "开卡中", ] ]; return $data; } // 查询一条 public function find(Request $request) { $request->validate([ 'id' => 'required|integer', ]); $roles = Roles::select(Roles::$selectFields)->find($request->id); $roles->permissions = $roles->permissions; return ['code' => 1, 'msg' => "success", 'data' => $roles]; } // 添加 public function insert(Request $request) { $request->validate([ 'name' => 'required', 'permissions' => 'string' ]); $result = Roles::create(['name' => $request->name, 'guard_name' => 'web']); // 向角色分配权限 if($request->filled('permissions')){ $role = Roles::find($result->id); $permissions = explode(',', $request->permissions); $permissions = Permissions::find($permissions); $role->syncPermissions($permissions); } if ($result) { return success(); } else { return error(); } } // 修改 public function update(Request $request) { $request->validate([ 'id' => 'required|integer', 'permissions' => 'string' ]); if($request->filled('name')){ Roles::where(['id' => $request->id])->update(['name' => $request->name]); } // 向角色分配权限 if($request->filled('permissions')){ $role = Roles::find($request->id); $permissions = explode(',', $request->permissions); $permissions = Permissions::find($permissions); $role->syncPermissions($permissions); } return success(); } // 删除 public function delete(Request $request) { $request->validate([ 'ids' => 'required', ]); $id_str = $request->ids; $arr = explode(",", $id_str); $oplist = []; foreach ($arr as $roleId) { $res = 0; $role = Roles::find($roleId); // 检查角色是否有用户在使用 if ($role->users()->count() > 0) { $oplist[] = [ 'id' => $roleId, 'msg' => '角色正在被使用', 'status' => $res ]; continue; } $role->permissions()->detach(); // 清除角色与权限的关联 $res = $role->delete(); $oplist[] = [ 'id' => $roleId, 'status' => $res ]; } return ['code' => 1, 'msg' => "success", 'data' => $oplist]; } // 向角色分配权限 public function assignPermissionsToRoles(Request $request) { $request->validate([ 'id' => 'required|integer', 'permissions' => 'required|string', ]); $role = Roles::find($request->id); $permissions = explode(',', $request->permissions); $permissions = Permissions::find($permissions); $result = $role->syncPermissions($permissions); if ($result) { return success(); } else { return error(); } } // 向用户分配角色 public function assignRolesToUsers(Request $request) { $op_user_id = auth()->id(); if (!AdminUsers::isAdmin($op_user_id)) { return ['code' => 0, 'msg' => '无权限操作']; } $request->validate([ 'user_id' => 'required|integer', ]); $user = AdminUsers::find($request->user_id); $roles = explode(',', $request->roles); $roles = Roles::find($roles); $result = $user->syncRoles($roles); if ($result) { return success(); } else { return error(); } } // 获取用户角色列表 public function getUserRoles(Request $request) { if ($request->filled('user_id')) { $user_id = $request->input('user_id'); } else { $user_id = auth()->id(); } $user = AdminUsers::find($user_id); $roles = $user->roles; return ['code' => 1, 'msg' => "success", 'data' => $roles]; } }