-- 编码规则定义表
CREATE TABLE base_code_rule (
    id              BIGINT        NOT NULL AUTO_INCREMENT  COMMENT '主键',
    rule_name       VARCHAR(64)   NOT NULL                 COMMENT '规则名称',
    rule_code       VARCHAR(32)   NOT NULL                 COMMENT '规则编码（唯一标识，调用时传入）',
    segment_config  JSON          NOT NULL                 COMMENT '分段配置（JSON数组）',
    separator       VARCHAR(8)    DEFAULT ''               COMMENT '分隔符（- / _ . 或空）',
    letter_case     TINYINT       DEFAULT 0                COMMENT '字母大小写：0=原样 1=全大写 2=全小写',
    total_length    INT           DEFAULT 0                COMMENT '固定总长度约束（0=不限制）',
    seq_strategy    VARCHAR(16)   DEFAULT 'segment'        COMMENT '序号策略：segment=号段预分配 lock=分布式锁实时',
    status          TINYINT       NOT NULL DEFAULT 0       COMMENT '状态：0=启用 1=禁用',
    remark          VARCHAR(256)  DEFAULT ''               COMMENT '备注',
    creator         VARCHAR(64)   DEFAULT ''               COMMENT '创建者',
    create_time     DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updater         VARCHAR(64)   DEFAULT ''               COMMENT '更新者',
    update_time     DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted         TINYINT       NOT NULL DEFAULT 0       COMMENT '是否删除',
    PRIMARY KEY (id),
    UNIQUE KEY uk_rule_code (rule_code)
) COMMENT '编码规则定义表';

-- 编码流水号段记录表
CREATE TABLE base_code_sequence (
    id              BIGINT        NOT NULL AUTO_INCREMENT  COMMENT '主键',
    rule_id         BIGINT        NOT NULL                 COMMENT '规则ID，关联 base_code_rule.id',
    reset_key       VARCHAR(64)   NOT NULL DEFAULT ''      COMMENT '重置维度键（如按天：20260715，全局：GLOBAL）',
    current_value   BIGINT        NOT NULL DEFAULT 0       COMMENT '当前已分配的最大序号',
    max_value       BIGINT        NOT NULL DEFAULT 9999    COMMENT '序号最大值上限',
    creator         VARCHAR(64)   DEFAULT ''               COMMENT '创建者',
    create_time     DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updater         VARCHAR(64)   DEFAULT ''               COMMENT '更新者',
    update_time     DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted         TINYINT       NOT NULL DEFAULT 0       COMMENT '是否删除',
    PRIMARY KEY (id),
    UNIQUE KEY idx_rule_reset (rule_id, reset_key)
) COMMENT '编码流水号段记录表';

-- 编码规则菜单（基础数据 > 编码规则）
INSERT INTO `system_menu`(`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (6745, '编码规则', '', 2, 1, 6743, 'code-rule', NULL, NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
