| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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]);
- }
- }
- }
|