$data['url'], 'roles_id' => $data['roles_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(['roles_id' => $data['roles_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'] : '', 'roles_id' => $data['roles_id'], 'menu_id' => $menu_id, 'insert_time' => time(), ]; } $this->insert($add_data); } if (!empty($del_menu_ids)) { $this->where(['roles_id' => $data['roles_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->roles_id = $data['roles_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) ){ dd(12313); $rules = (new MenuModel)->getList($module,true); $rules = array_column($rules,'url'); }else{ $rules = $this ->join('personnel_employee','personnel_employee.role_id','=','personnel_roles_auth_rule.role_id') ->where([['personnel_employee.id','=',$uid]]) ->pluck('personnel_roles_auth_rule.url')->toArray(); } // 循环转大写 foreach ($rules as $key => $rule) { // 转小写,截除左边斜杠 $value = ltrim(strtolower($rule), '/'); if ($value != '') { $rules[$key] = $value; } } // 去重 $rules = array_unique($rules); // 返回结果 return $rules; } }