AllTenantMenus2.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import java.sql.*;
  2. public class AllTenantMenus2 {
  3. static final String URL = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/ylrz_saas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false";
  4. static final String USER = "root";
  5. static final String PASS = "Ylrz_1q2w3e4r5t6y";
  6. public static void main(String[] args) throws Exception {
  7. Class.forName("com.mysql.cj.jdbc.Driver");
  8. try (Connection conn = DriverManager.getConnection(URL, USER, PASS);
  9. Statement stmt = conn.createStatement()) {
  10. java.util.List<String> dbs = new java.util.ArrayList<>();
  11. ResultSet rs = stmt.executeQuery("SHOW DATABASES LIKE 'fs_tenant_%'");
  12. while (rs.next()) dbs.add(rs.getString(1));
  13. System.out.printf("%-35s %-10s %-14s\n", "Database", "sys_menu", "company_menu");
  14. System.out.println("----------------------------------- ---------- --------------");
  15. for (String db : dbs) {
  16. System.out.printf("%-35s %10d %14d\n", db, cnt(stmt, db+".sys_menu"), cnt(stmt, db+".company_menu"));
  17. }
  18. System.out.println("\n=== Top by sys_menu count ===");
  19. String best = null; int max = 0;
  20. for (String db : dbs) { int c = cnt(stmt, db+".sys_menu"); if (c > max) { max = c; best = db; } }
  21. System.out.println(best + " (" + max + " lobster entries)");
  22. if (best != null) dump(stmt, best+".sys_menu");
  23. System.out.println("\n=== Top by company_menu count ===");
  24. best = null; max = 0;
  25. for (String db : dbs) { int c = cnt(stmt, db+".company_menu"); if (c > max) { max = c; best = db; } }
  26. System.out.println(best + " (" + max + " lobster entries)");
  27. if (best != null) dump(stmt, best+".company_menu");
  28. }
  29. }
  30. static int cnt(Statement stmt, String tbl) {
  31. try { ResultSet rs = stmt.executeQuery("SELECT COUNT(1) FROM "+tbl+" WHERE menu_id BETWEEN 29900 AND 29999"); rs.next(); return rs.getInt(1); }
  32. catch (SQLException e) { return -1; }
  33. }
  34. static void dump(Statement stmt, String tbl) {
  35. try {
  36. System.out.printf(" %-7s %-24s %-50s %s\n", "ID","Name","Component","Vis");
  37. ResultSet rs = stmt.executeQuery("SELECT menu_id, menu_name, component, CASE visible WHEN '0' THEN 'SHOW' ELSE 'HIDE' END FROM "+tbl+" WHERE menu_id BETWEEN 29900 AND 29999 AND menu_type IN ('M','C') ORDER BY order_num");
  38. while (rs.next()) System.out.printf(" %-7s %-24s %-50s %s\n", rs.getString(1), rs.getString(2), nv(rs.getString(3)), rs.getString(4));
  39. } catch (SQLException e) { System.out.println(" err: "+e.getMessage().split("\\n")[0]); }
  40. }
  41. static String nv(String s) { return s==null||s.isEmpty()?"(Dir)":s; }
  42. }