migration_20260429_user_scope_menu_code.sql 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. -- 运营端权限改造:super_admin + 多区域 + 菜单 code 授权
  2. -- 1) 角色迁移:admin -> super_admin
  3. UPDATE sys_user
  4. SET role = 'super_admin',
  5. update_at = NOW()
  6. WHERE is_del = 0
  7. AND role = 'admin';
  8. -- 2) 用户-区域权限表
  9. CREATE TABLE IF NOT EXISTS sys_user_region_scope (
  10. id VARCHAR(32) NOT NULL COMMENT '主键ID',
  11. user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
  12. region_id VARCHAR(32) NOT NULL COMMENT '区域ID',
  13. is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
  14. create_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  15. create_by VARCHAR(32) DEFAULT NULL COMMENT '创建人ID',
  16. create_name VARCHAR(100) DEFAULT NULL COMMENT '创建人姓名',
  17. update_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  18. update_by VARCHAR(32) DEFAULT NULL COMMENT '修改人ID',
  19. PRIMARY KEY (id),
  20. UNIQUE KEY uk_user_region_scope (user_id, region_id, is_del),
  21. KEY idx_user_region_scope_user (user_id, is_del),
  22. KEY idx_user_region_scope_region (region_id, is_del)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户区域权限';
  24. -- 3) 用户-区域权限历史表(无索引、无 is_del)
  25. CREATE TABLE IF NOT EXISTS sys_user_region_scope_his (
  26. id VARCHAR(32) NOT NULL COMMENT '主键ID',
  27. user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
  28. region_id VARCHAR(32) NOT NULL COMMENT '区域ID',
  29. create_at DATETIME DEFAULT NULL COMMENT '创建时间',
  30. create_by VARCHAR(32) DEFAULT NULL COMMENT '创建人ID',
  31. create_name VARCHAR(100) DEFAULT NULL COMMENT '创建人姓名',
  32. update_at DATETIME DEFAULT NULL COMMENT '修改时间',
  33. update_by VARCHAR(32) DEFAULT NULL COMMENT '修改人ID',
  34. his_create_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间'
  35. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户区域权限历史';
  36. -- 4) 用户-菜单 code 权限表
  37. CREATE TABLE IF NOT EXISTS sys_user_menu_scope (
  38. id VARCHAR(32) NOT NULL COMMENT '主键ID',
  39. user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
  40. menu_code VARCHAR(100) NOT NULL COMMENT '菜单编码',
  41. is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
  42. create_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  43. create_by VARCHAR(32) DEFAULT NULL COMMENT '创建人ID',
  44. create_name VARCHAR(100) DEFAULT NULL COMMENT '创建人姓名',
  45. update_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  46. update_by VARCHAR(32) DEFAULT NULL COMMENT '修改人ID',
  47. PRIMARY KEY (id),
  48. UNIQUE KEY uk_user_menu_scope (user_id, menu_code, is_del),
  49. KEY idx_user_menu_scope_user (user_id, is_del),
  50. KEY idx_user_menu_scope_code (menu_code, is_del)
  51. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户菜单权限';
  52. -- 5) 用户-菜单 code 权限历史表(无索引、无 is_del)
  53. CREATE TABLE IF NOT EXISTS sys_user_menu_scope_his (
  54. id VARCHAR(32) NOT NULL COMMENT '主键ID',
  55. user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
  56. menu_code VARCHAR(100) NOT NULL COMMENT '菜单编码',
  57. create_at DATETIME DEFAULT NULL COMMENT '创建时间',
  58. create_by VARCHAR(32) DEFAULT NULL COMMENT '创建人ID',
  59. create_name VARCHAR(100) DEFAULT NULL COMMENT '创建人姓名',
  60. update_at DATETIME DEFAULT NULL COMMENT '修改时间',
  61. update_by VARCHAR(32) DEFAULT NULL COMMENT '修改人ID',
  62. his_create_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间'
  63. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户菜单权限历史';