select(); $oldMenu = array_column($oldMenu, null, 'name'); return ['new' => $newMenu, 'old' => $oldMenu]; } private static function menuWdsxhUpdate($newMenu, $oldMenu, $parent = 0) { if (!is_numeric($parent)) { $parentRule = AuthRule::getByName($parent); $pid = $parentRule ? $parentRule['id'] : 0; } else { $pid = $parent; } $allow = array_flip(['file', 'name', 'title', 'icon', 'condition', 'remark', 'ismenu', 'weigh']); foreach ($newMenu as $k => $v) { $hasChild = isset($v['sublist']) && $v['sublist'] ? true : false; $data = array_intersect_key($v, $allow); $data['ismenu'] = isset($data['ismenu']) ? $data['ismenu'] : ($hasChild ? 1 : 0); $data['icon'] = isset($data['icon']) ? $data['icon'] : ($hasChild ? 'fa fa-list' : 'fa fa-circle-o'); $data['pid'] = $pid; $data['status'] = 'normal'; try { if (!isset($oldMenu[$data['name']])) { $menu = AuthRule::create($data); }else{ $menu = $oldMenu[$data['name']]; } if ($hasChild) { self::menuWdsxhUpdate($v['sublist'], $oldMenu, $menu['id']); } } catch (PDOException $e) { new Exception($e->getMessage()); } } } }