InspectLobsterMenusBroad.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import java.io.*;
  2. import java.sql.*;
  3. public class InspectLobsterMenusBroad {
  4. static final String URL_T = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/fs_tenant_cs1?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";
  5. static final String USER = "root";
  6. static final String PASS = "Ylrz_1q2w3e4r5t6y";
  7. public static void main(String[] args) throws Exception {
  8. Class.forName("com.mysql.cj.jdbc.Driver");
  9. new File("output").mkdirs();
  10. try (Connection c = DriverManager.getConnection(URL_T, USER, PASS);
  11. PrintWriter out = new PrintWriter(new OutputStreamWriter(
  12. new FileOutputStream("output/inspect-tenant-lobster-broad.txt"), "UTF-8"))) {
  13. query(c, out, "sys_menu all lobster-ish",
  14. "SELECT menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, HEX(menu_name) hx "
  15. + "FROM sys_menu WHERE menu_id BETWEEN 29900 AND 33000 OR menu_id IN (3006,3007,3008,32481,2951) "
  16. + "OR component LIKE 'lobster/%' OR component LIKE 'company/workflowLobster/%' "
  17. + "OR path='/lobster' ORDER BY parent_id, order_num, menu_id");
  18. query(c, out, "sys_menu visible leaves under 29900",
  19. "SELECT menu_id, menu_name, parent_id, order_num, path, component, visible "
  20. + "FROM sys_menu WHERE parent_id=29900 AND menu_type='C' AND visible='0' ORDER BY order_num");
  21. query(c, out, "company_menu distinct visible leaves under 29900",
  22. "SELECT DISTINCT menu_id, menu_name, parent_id, order_num, path, component, visible "
  23. + "FROM company_menu WHERE parent_id=29900 AND menu_type='C' AND visible='0' ORDER BY order_num");
  24. query(c, out, "company_menu all rows lobster tree",
  25. "SELECT menu_id, menu_name, parent_id, order_num, company_id, visible "
  26. + "FROM company_menu WHERE menu_id=29900 OR parent_id=29900 ORDER BY menu_id, company_id");
  27. query(c, out, "sys_menu count all under 29900 subtree",
  28. "WITH RECURSIVE t AS ("
  29. + "SELECT menu_id FROM sys_menu WHERE menu_id=29900 "
  30. + "UNION ALL SELECT m.menu_id FROM sys_menu m JOIN t ON m.parent_id=t.menu_id"
  31. + ") SELECT COUNT(*) c FROM t");
  32. }
  33. System.out.println("done");
  34. }
  35. static void query(Connection c, PrintWriter out, String title, String sql) throws Exception {
  36. out.println("\n=== " + title + " ===");
  37. try (Statement st = c.createStatement(); ResultSet rs = st.executeQuery(sql)) {
  38. int n = 0;
  39. int cols = rs.getMetaData().getColumnCount();
  40. while (rs.next()) {
  41. n++;
  42. StringBuilder sb = new StringBuilder();
  43. for (int i = 1; i <= cols; i++) {
  44. if (i > 1) sb.append(" | ");
  45. sb.append(rs.getMetaData().getColumnLabel(i)).append('=').append(rs.getString(i));
  46. }
  47. out.println(sb);
  48. }
  49. out.println("count=" + n);
  50. } catch (SQLException e) {
  51. out.println("ERROR: " + e.getMessage());
  52. }
  53. }
  54. }