$data['url'], 'role_id' => $data['role_id'], 'menu_id' => $data['menu_id'], 'insert_time' => time(), ]; $RolesAuthRule_id = $this->insertGetId($insert_data); return $RolesAuthRule_id; } /** * 写入数据 * @author 唐远望 * @version 1.0 * @date 2025-12-05 * @param $data * @return bool */ public function addRolesAuthRule($data) { $MenuModel = new MenuModel(); $menu_ids = explode(',', $data['menu_ids']); $urls_data = $MenuModel->whereIn('id', $menu_ids)->select(['id', 'url'])->get()->keyBy('id')->toArray(); $menu_id_log = $this->where(['role_id' => $data['role_id']])->select(['menu_id'])->get()->toArray(); DB::beginTransaction(); try { //差异新增或者删除 $add_menu_ids = array_diff($menu_ids, array_column($menu_id_log, 'menu_id')); $del_menu_ids = array_diff(array_column($menu_id_log, 'menu_id'), $menu_ids); if (!empty($add_menu_ids)) { $add_data = []; foreach ($add_menu_ids as $menu_id) { $add_data[] = [ 'url' => isset($urls_data[$menu_id]['url']) ? $urls_data[$menu_id]['url'] : '', 'role_id' => $data['role_id'], 'menu_id' => $menu_id, 'insert_time' => time(), ]; } $this->insert($add_data); } if (!empty($del_menu_ids)) { $this->where(['role_id' => $data['role_id']])->whereIn('menu_id', $del_menu_ids)->delete(); } DB::commit(); return true; // 成功处理... } catch (\Exception $e) { DB::rollBack(); print_r($e->getMessage()); exit; // 错误处理... return false; } } /** * 编辑内容 * @author 唐远望 * @version 1.0 * @date 2025-12-05 * @param $data * @return bool */ public function editRolesAuthRule_content($RolesAuthRule, $data) { $RolesAuthRule->url = $data['url']; $RolesAuthRule->role_id = $data['role_id']; $RolesAuthRule->menu_id = $data['menu_id']; $RolesAuthRule->update_time = time(); $RolesAuthRule->save(); return true; } /** * 更新数据 * @author 唐远望 * @version 1.0 * @date 2025-12-05 * @param $data * @return bool */ public function updateRolesAuthRule($where, $data) { DB::beginTransaction(); try { $this->editRolesAuthRule_content($where, $data); DB::commit(); return true; // 成功处理... } catch (\Exception $e) { DB::rollBack(); // 错误处理... return false; } } /** * 修改状态 * @author 唐远望 * @version 1.0 * @date 2025-12-05 * @param $id * @param $status * @return bool */ public function changeStatus($where, $status) { $RolesAuthRule = $this->where($where)->first(); if (!$RolesAuthRule) { return false; } $RolesAuthRule->status = $status; $RolesAuthRule->update_time = time(); $RolesAuthRule->save(); return true; } /** * 删除数据 * @author 唐远望 * @version 1.0 * @date 2025-12-05 * @param $id * @return bool */ public function deleteRolesAuthRule($where) { $RolesAuthRule = $this->where($where)->first(); if (!$RolesAuthRule) { return false; } $RolesAuthRule->delete(); return true; } /** * 获得权限列表 * @param integer $uid 用户id * @param integer $type */ public function getAuthList($uid, $module = 'manager') { if (is_super($uid, $module)) { $rules = (new MenuModel)->getList($module, true); $rules = array_column($rules, 'url'); } else { // 获取用户角色 $EmployeeModel = new EmployeeModel(); $role_ids = $EmployeeModel->where([['id', '=', $uid]])->value('role_id'); if (!$role_ids) return []; $rules = $this->where([['role_id', '=', $role_ids]])->pluck('url')->toArray(); } // 循环转大写 foreach ($rules as $key => $rule) { // 转小写,截除左边斜杠 $value = ltrim(strtolower($rule), '/'); if ($value != '') { $rules[$key] = $value; } } // 去重 $rules = array_unique($rules); if(!empty($rules)){ rsort($rules); } // 返回结果 return $rules; } }