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