import java.sql.*; import java.nio.file.*; import java.util.*; public class QueryAdminMenus10 { static Set svgs = new HashSet<>(); static Map suggest = new LinkedHashMap<>(); static { suggest.put("user", "user"); suggest.put("peoples", "peoples"); suggest.put("tree", "tree-table"); suggest.put("post", "documentation"); suggest.put("dict", "documentation"); suggest.put("edit", "edit"); suggest.put("message", "message"); suggest.put("education", "education"); suggest.put("share", "guide"); suggest.put("warning", "education"); suggest.put("phone", "message"); suggest.put("wechat", "message"); suggest.put("bug", "education"); suggest.put("upload", "documentation"); suggest.put("job", "time"); suggest.put("log", "documentation"); suggest.put("tool", "build"); suggest.put("shopping", "money"); suggest.put("server", "server"); suggest.put("monitor", "monitor"); suggest.put("nested", "nested"); suggest.put("money", "money"); suggest.put("lock", "lock"); suggest.put("chart", "chart"); suggest.put("list", "list"); suggest.put("table", "table"); suggest.put("star", "star"); suggest.put("eye", "eye"); suggest.put("link", "link"); suggest.put("code", "code"); suggest.put("build", "build"); suggest.put("guide", "guide"); suggest.put("documentation", "documentation"); } public static void main(String[] args) throws Exception { Files.list(Paths.get("d:/ylrz_saas_new/adminui/src/assets/icons/svg")) .forEach(p -> svgs.add(p.getFileName().toString().replace(".svg", ""))); String url = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/ylrz_saas?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"; try (Connection c = DriverManager.getConnection(url, "root", "Ylrz_1q2w3e4r5t6y"); Statement st = c.createStatement()) { System.out.println("=== ALL visible C/M menus icon audit ==="); List updates = new ArrayList<>(); try (ResultSet rs = st.executeQuery( "SELECT menu_id, menu_name, icon, component, menu_type FROM sys_menu " + "WHERE menu_type IN ('C','M') AND visible='0' AND status='0' ORDER BY menu_id")) { while (rs.next()) { String id = rs.getString(1); String name = rs.getString(2); String icon = rs.getString(3); String comp = rs.getString(4); String type = rs.getString(5); boolean ok = icon != null && !icon.isEmpty() && !icon.equals("#") && (icon.startsWith("el-icon-") || svgs.contains(icon)); if (!ok) { String fix = pickIcon(name, icon); System.out.printf("FIX %s | %s | icon=[%s] -> %s | comp=%s%n", id, name, icon, fix, comp); if (fix != null) updates.add(new String[]{id, fix}); } } } System.out.println("\n=== SQL updates count: " + updates.size() + " ==="); for (String[] u : updates) { System.out.printf("UPDATE sys_menu SET icon='%s' WHERE menu_id=%s;%n", u[1], u[0]); } } } static String pickIcon(String name, String old) { if (old != null && !old.isEmpty() && !old.equals("#")) { if (suggest.containsKey(old) && svgs.contains(suggest.get(old))) return suggest.get(old); if (svgs.contains(old)) return old; } if (name == null) return "documentation"; if (name.contains("\u6a21\u677f")) return "documentation"; if (name.contains("\u5de5\u4f5c\u6d41")) return "guide"; if (name.contains("\u5b9e\u4f8b")) return "monitor"; if (name.contains("\u654f\u611f") || name.contains("\u8fdd\u7981") || name.contains("\u6613\u9519") || name.contains("\u8fdd\u89c4")) return "education"; if (name.contains("\u5347\u7ea7")) return "el-icon-upload2"; if (name.contains("\u79df\u6237")) return "peoples"; if (name.contains("\u914d\u7f6e") || name.contains("\u8bbe\u7f6e")) return "build"; if (name.contains("\u65e5\u5fd7")) return "documentation"; if (name.contains("\u4efb\u52a1") || name.contains("\u5b9a\u65f6")) return "time"; if (name.contains("\u8bbe\u5907") || name.contains("CID")) return "server"; if (name.contains("\u5fae\u4fe1") || name.contains("\u4f01\u5fae")) return "message"; if (name.contains("\u8bcd") || name.contains("\u5173\u952e")) return "education"; if (name.contains("\u5b57\u5178")) return "documentation"; if (name.contains("\u8ba2\u5355") || name.contains("\u5546\u54c1")) return "money"; if (name.contains("\u76d1\u63a7") || name.contains("\u7edf\u8ba1")) return "chart"; if (name.contains("\u7528\u6237")) return "user"; if (name.contains("\u89d2\u8272")) return "peoples"; if (name.contains("\u90e8\u95e8")) return "tree-table"; return "documentation"; } }