migrate_20260814_duty_schedule.sql 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. -- backend/scripts/migrate_20260814_duty_schedule.sql
  2. -- 值班排班 V1:按日链接 + 班次名额 + 报名
  3. CREATE TABLE IF NOT EXISTS `duty_day` (
  4. `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
  5. `duty_date` date NOT NULL COMMENT '值班日期',
  6. `access_token` varchar(64) NOT NULL COMMENT '公开访问令牌',
  7. `link_status` varchar(16) NOT NULL DEFAULT 'open' COMMENT 'open/closed',
  8. `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
  9. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  10. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  11. `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  12. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
  13. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  14. `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  15. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  16. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
  17. PRIMARY KEY (`id`),
  18. UNIQUE KEY `uk_token` (`access_token`),
  19. UNIQUE KEY `uk_tenant_duty_date` (`tenant_no`, `duty_date`, `del_flag`)
  20. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班日(一天一条公开链接)';
  21. CREATE TABLE IF NOT EXISTS `duty_slot` (
  22. `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
  23. `duty_day_id` varchar(64) NOT NULL COMMENT '值班日ID',
  24. `shift_type` varchar(32) NOT NULL COMMENT 'morning/evening/duty',
  25. `capacity` int(11) NOT NULL DEFAULT 1 COMMENT '名额',
  26. `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
  27. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  28. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  29. `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  30. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
  31. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  32. `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  33. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  34. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
  35. PRIMARY KEY (`id`),
  36. UNIQUE KEY `uk_day_shift` (`duty_day_id`, `shift_type`, `del_flag`),
  37. KEY `idx_day` (`duty_day_id`, `del_flag`),
  38. KEY `idx_tenant` (`tenant_no`)
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班班次名额';
  40. CREATE TABLE IF NOT EXISTS `duty_assignment` (
  41. `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
  42. `duty_slot_id` varchar(64) NOT NULL COMMENT '班次名额ID',
  43. `source` varchar(16) NOT NULL COMMENT 'assign/grab',
  44. `user_id` varchar(64) DEFAULT NULL COMMENT '系统用户ID(指定时)',
  45. `person_name` varchar(64) NOT NULL COMMENT '展示姓名',
  46. `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
  47. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  48. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  49. `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  50. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
  51. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  52. `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  53. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  54. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
  55. PRIMARY KEY (`id`),
  56. KEY `idx_slot` (`duty_slot_id`, `del_flag`),
  57. KEY `idx_tenant` (`tenant_no`)
  58. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班占位(指定或抢班)';
  59. -- 菜单:一级「值班管理」+ 叶子「值班排班」(门户首页按一级模块出卡片)
  60. INSERT INTO `sys_menu` (
  61. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  62. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  63. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  64. ) VALUES (
  65. 'DUTY000000000000000000000000000',
  66. '值班管理',
  67. '2',
  68. 'M',
  69. '/duty',
  70. '/index/index',
  71. NULL,
  72. 1, '1', '1', 'shanxia2.0', 85,
  73. '值班一级模块(门户首页分区)',
  74. 'system', '', NOW(), NULL, NOW(), 0
  75. )
  76. ON DUPLICATE KEY UPDATE
  77. `menu_name`=VALUES(`menu_name`),
  78. `component`=VALUES(`component`),
  79. `path`=VALUES(`path`);
  80. INSERT INTO `sys_menu` (
  81. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  82. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  83. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  84. ) VALUES (
  85. 'DUTY000000000000000000000000001',
  86. '值班排班',
  87. 'DUTY000000000000000000000000000',
  88. 'C',
  89. 'schedule',
  90. '/duty/schedule/index',
  91. 'duty:schedule:list',
  92. 1, '1', '1', 'shanxia2.0', 1,
  93. '日历排班与公开抢班链接',
  94. 'system', '', NOW(), NULL, NOW(), 0
  95. )
  96. ON DUPLICATE KEY UPDATE
  97. `menu_name`=VALUES(`menu_name`),
  98. `parent_id`=VALUES(`parent_id`),
  99. `component`=VALUES(`component`),
  100. `perms`=VALUES(`perms`),
  101. `path`=VALUES(`path`);