FixCompMenu.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import java.sql.*;
  2. public class FixCompMenu {
  3. static final String URL = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/fs_tenant_t202606174488?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true";
  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 c = DriverManager.getConnection(URL, USER, PASS);
  9. Statement s = c.createStatement()) {
  10. // Find all company_ids
  11. System.out.println("Existing company_ids:");
  12. ResultSet rs = s.executeQuery("SELECT DISTINCT company_id, COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999 GROUP BY company_id");
  13. int n = 0;
  14. while (rs.next()) { System.out.println(" cid="+rs.getString(1)+" cnt="+rs.getInt(2)); n++; }
  15. if (n==0) System.out.println(" (none - all NULL)");
  16. // Also check if NULL entries exist
  17. rs = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id=29900 AND company_id IS NULL");
  18. rs.next(); System.out.println("NULL company_id entries: " + rs.getInt(1));
  19. // Fix: set company_id=1 for existing NULL entries if needed
  20. s.executeUpdate("UPDATE company_menu SET company_id = 1 WHERE company_id IS NULL AND menu_id = 29900");
  21. // Now insert all missing menus for company_id=1
  22. String[] ids = {"32481","29949","29905","29907","29925","29948","29923","29922",
  23. "29944","29936","29909","29908","29912","29935","29947","29934","29933",
  24. "29924","29946","29906","3008","29938","29937","29939","29941","29950"};
  25. for (String id : ids) {
  26. try {
  27. int r = s.executeUpdate("INSERT IGNORE INTO company_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, company_id, remark) " +
  28. "SELECT menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, 1, remark FROM sys_menu WHERE menu_id="+id);
  29. if (r > 0) System.out.println(" INSERT "+id+" OK");
  30. } catch (SQLException e) {
  31. if (!e.getMessage().contains("Duplicate")) System.out.println(" "+id+" ERR: "+e.getMessage().split("\\n")[0]);
  32. }
  33. }
  34. System.out.println("\nFinal company_menu count: " + cnt(s));
  35. rs = s.executeQuery("SELECT menu_id, menu_name, visible FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999 ORDER BY menu_id");
  36. while (rs.next()) System.out.println(" "+rs.getString(1)+" "+rs.getString(2)+" vis="+rs.getString(3));
  37. }
  38. }
  39. static int cnt(Statement s) throws SQLException {
  40. ResultSet rs = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999");
  41. rs.next(); return rs.getInt(1);
  42. }
  43. }