CleanDedup.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import java.sql.*;
  2. public class CleanDedup {
  3. static final String U = "root"; static final String P = "Ylrz_1q2w3e4r5t6y";
  4. public static void main(String[] a) throws Exception {
  5. Class.forName("com.mysql.cj.jdbc.Driver");
  6. // cs1 is a standard company tenant using saas-companyui
  7. // It should ONLY have company_menu entries, NOT sys_menu entries
  8. // AND role bindings should only be in company_role_menu, NOT sys_role_menu
  9. clean("fs_tenant_cs1");
  10. clean("fs_tenant_t202606046007");
  11. clean("fs_tenant_t202606119691");
  12. clean("fs_tenant_t202606124273");
  13. clean("fs_tenant_t202606154320");
  14. clean("fs_tenant_t202606167389");
  15. clean("fs_tenant_t202606174488");
  16. clean("fs_tenant_t202606179328");
  17. clean("fs_tenant_t202606179893");
  18. }
  19. static void clean(String db) throws Exception {
  20. String url = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/" + db + "?allowMultiQueries=true&serverTimezone=Asia/Shanghai";
  21. try (Connection c = DriverManager.getConnection(url, U, P); Statement s = c.createStatement()) {
  22. // 1. 统计当前冗余
  23. ResultSet r = s.executeQuery("SELECT COUNT(1) FROM sys_menu WHERE menu_id BETWEEN 29900 AND 29999");
  24. r.next(); int sys = r.getInt(1);
  25. r = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999");
  26. r.next(); int comp = r.getInt(1);
  27. r = s.executeQuery("SELECT COUNT(1) FROM sys_role_menu WHERE menu_id BETWEEN 29900 AND 29999");
  28. r.next(); int sr = r.getInt(1);
  29. // 2. 删除 sys_menu 中的龙虾条目(归 mgnui 管,企业端不应当有)
  30. int ds = s.executeUpdate("DELETE FROM sys_menu WHERE menu_id BETWEEN 29900 AND 29999");
  31. // 3. 删除 sys_role_menu 中的龙虾权限绑定
  32. int dr = s.executeUpdate("DELETE FROM sys_role_menu WHERE menu_id BETWEEN 29900 AND 29999");
  33. // 同样保持 29922/29948 HIDDEN
  34. s.executeUpdate("UPDATE company_menu SET visible='1' WHERE menu_id IN (29922, 29948)");
  35. // 4. 统一 company_id = 1
  36. s.executeUpdate("UPDATE company_menu SET company_id = 1 WHERE company_id IS NULL AND menu_id BETWEEN 29900 AND 29999");
  37. // 5. 最终计数
  38. r = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999");
  39. r.next();
  40. System.out.printf("%-32s sys_menu: %2d→0 sys_role: %2d→0 company_menu: %2d\n", db, sys, sr, r.getInt(1));
  41. } catch (Exception e) {
  42. System.out.printf("%-32s ERROR: %s\n", db, e.getMessage().split("\\n")[0]);
  43. }
  44. }
  45. }