| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- import java.io.IOException;
- import java.nio.file.*;
- import java.sql.*;
- import java.util.*;
- /** Fix admin sys_menu icons and tenant upgrade menu route metadata. */
- public class ApplyAdminMenuIcons {
- private static final String MASTER_HOST = getenv("DB_HOST", "cq-cdb-8fjmemkb.sql.tencentcdb.com");
- private static final int MASTER_PORT = Integer.parseInt(getenv("DB_PORT", "27220"));
- private static final String MASTER_USER = getenv("DB_USER", "root");
- private static final String MASTER_PASSWORD = getenv("DB_PASSWORD", "Ylrz_1q2w3e4r5t6y");
- private static final String MASTER_DB = getenv("DB_NAME", "ylrz_saas");
- private static final String SVG_DIR = "d:/ylrz_saas_new/adminui/src/assets/icons/svg";
- private static final Map<String, String> ICON_ALIAS = new LinkedHashMap<>();
- static {
- ICON_ALIAS.put("system", "build");
- ICON_ALIAS.put("form", "edit");
- ICON_ALIAS.put("phone", "message");
- ICON_ALIAS.put("job", "time");
- ICON_ALIAS.put("log", "documentation");
- ICON_ALIAS.put("dashboard", "chart");
- ICON_ALIAS.put("validCode", "lock");
- ICON_ALIAS.put("tool", "build");
- ICON_ALIAS.put("bug", "education");
- ICON_ALIAS.put("wechat", "message");
- ICON_ALIAS.put("upload", "documentation");
- ICON_ALIAS.put("shopping", "money");
- ICON_ALIAS.put("share", "guide");
- ICON_ALIAS.put("warning", "education");
- ICON_ALIAS.put("tree", "tree-table");
- }
- private static final String MENU_FIX_SQL =
- "UPDATE sys_menu SET menu_name='\u79df\u6237\u5e93\u7ed3\u6784\u5347\u7ea7', "
- + "parent_id=2820, path='tenantUpgrade', component='saas/tenant/upgrade/index', "
- + "menu_type='C', visible='0', status='0', icon='el-icon-upload2' "
- + "WHERE menu_id=32850;"
- + "UPDATE sys_menu SET menu_type='F', visible='1', path='#', component=NULL "
- + "WHERE menu_id IN (32851,32852);"
- + "UPDATE sys_menu SET icon='build' WHERE icon='system' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='edit' WHERE icon='form' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='message' WHERE icon IN ('phone','wechat') AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='time' WHERE icon='job' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='documentation' WHERE icon IN ('log','upload') AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='chart' WHERE icon='dashboard' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='lock' WHERE icon='validCode' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='build' WHERE icon='tool' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='education' WHERE icon IN ('bug','warning') AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='money' WHERE icon='shopping' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='tree-table' WHERE icon='tree' AND menu_type IN ('C','M');"
- + "UPDATE sys_menu SET icon='guide' WHERE icon='share' AND menu_type IN ('C','M');";
- public static void main(String[] args) throws Exception {
- Set<String> svgs = loadSvgs();
- int updated = 0;
- try (Connection c = open(MASTER_HOST, MASTER_PORT, MASTER_DB, MASTER_USER, MASTER_PASSWORD)) {
- execBatch(c, MENU_FIX_SQL);
- System.out.println("[OK] tenant upgrade menu metadata fixed");
- try (Statement st = c.createStatement();
- ResultSet rs = st.executeQuery(
- "SELECT menu_id, menu_name, icon FROM sys_menu "
- + "WHERE menu_type IN ('C','M') AND visible='0' AND status='0'")) {
- try (PreparedStatement ps = c.prepareStatement("UPDATE sys_menu SET icon=? WHERE menu_id=?")) {
- while (rs.next()) {
- long menuId = rs.getLong(1);
- String name = rs.getString(2);
- String icon = rs.getString(3);
- String fixed = resolveIcon(name, icon, svgs);
- if (fixed == null || Objects.equals(fixed, icon)) continue;
- ps.setString(1, fixed);
- ps.setLong(2, menuId);
- ps.executeUpdate();
- updated++;
- System.out.printf("[UPDATE] %s | %s | %s -> %s%n", menuId, name, icon, fixed);
- }
- }
- }
- }
- System.out.println("[OK] updated " + updated + " menu icons");
- }
- private static String resolveIcon(String menuName, String icon, Set<String> svgs) {
- if (icon != null && icon.startsWith("el-icon-")) return icon;
- if (icon != null && !icon.isEmpty() && !icon.equals("#") && svgs.contains(icon)) return icon;
- if (icon != null && ICON_ALIAS.containsKey(icon)) {
- String alias = ICON_ALIAS.get(icon);
- if (svgs.contains(alias)) return alias;
- }
- return pickByName(menuName, svgs);
- }
- private static String pickByName(String name, Set<String> svgs) {
- if (name == null || name.isEmpty()) return pick("documentation", svgs);
- if (name.contains("\u5347\u7ea7")) return "el-icon-upload2";
- if (name.contains("\u6a21\u677f")) return pick("documentation", svgs);
- if (name.contains("\u5de5\u4f5c\u6d41")) return pick("guide", svgs);
- if (name.contains("\u5b9e\u4f8b") || name.contains("\u76d1\u63a7")) return pick("monitor", svgs);
- if (name.contains("\u654f\u611f") || name.contains("\u8fdd\u7981") || name.contains("\u6613\u9519")
- || name.contains("\u8fdd\u89c4") || name.contains("\u5173\u952e\u8bcd")) return pick("education", svgs);
- if (name.contains("\u79df\u6237")) return pick("peoples", svgs);
- if (name.contains("\u914d\u7f6e") || name.contains("\u8bbe\u7f6e") || name.contains("\u53c2\u6570"))
- return pick("build", svgs);
- if (name.contains("\u65e5\u5fd7")) return pick("documentation", svgs);
- if (name.contains("\u4efb\u52a1") || name.contains("\u5b9a\u65f6")) return pick("time", svgs);
- if (name.contains("CID") || name.contains("\u8bbe\u5907") || name.contains("\u670d\u52a1"))
- return pick("server", svgs);
- if (name.contains("\u5fae\u4fe1") || name.contains("\u4f01\u5fae")) return pick("message", svgs);
- if (name.contains("\u5b57\u5178")) return pick("documentation", svgs);
- if (name.contains("\u8ba2\u5355") || name.contains("\u6536\u8d39") || name.contains("\u8d44\u91d1"))
- return pick("money", svgs);
- if (name.contains("\u7edf\u8ba1") || name.contains("\u62a5\u8868") || name.contains("\u770b\u677f"))
- return pick("chart", svgs);
- if (name.contains("\u7528\u6237")) return pick("user", svgs);
- if (name.contains("\u89d2\u8272")) return pick("peoples", svgs);
- if (name.contains("\u90e8\u95e8") || name.contains("\u83dc\u5355")) return pick("tree-table", svgs);
- if (name.contains("\u901a\u77e5") || name.contains("\u516c\u544a")) return pick("message", svgs);
- if (name.contains("\u7cfb\u7edf")) return pick("build", svgs);
- return pick("documentation", svgs);
- }
- private static String pick(String icon, Set<String> svgs) {
- return svgs.contains(icon) ? icon : "documentation";
- }
- private static Set<String> loadSvgs() throws IOException {
- Set<String> svgs = new HashSet<>();
- try (DirectoryStream<Path> ds = Files.newDirectoryStream(Paths.get(SVG_DIR), "*.svg")) {
- for (Path p : ds) {
- String fn = p.getFileName().toString();
- svgs.add(fn.substring(0, fn.length() - 4));
- }
- }
- return svgs;
- }
- private static void execBatch(Connection conn, String sql) throws SQLException {
- try (Statement st = conn.createStatement()) {
- for (String part : sql.split(";")) {
- String s = part.trim();
- if (!s.isEmpty()) st.execute(s);
- }
- }
- }
- private static Connection open(String host, int port, String database, String user, String password)
- throws SQLException {
- return DriverManager.getConnection(
- "jdbc:mysql://" + host + ":" + port + "/" + database
- + "?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=true",
- user, password);
- }
- private static String getenv(String key, String defaultValue) {
- String v = System.getenv(key);
- return v != null && !v.isEmpty() ? v : defaultValue;
- }
- }
|