feat(db): add account and role Flyway migrations

This commit is contained in:
2026-07-06 18:06:48 +08:00
parent 37b0a33f17
commit 774c0ff8dd
3 changed files with 69 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
package com.sino.mci.config;
import javax.sql.DataSource;
import org.flywaydb.core.Flyway;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnProperty(prefix = "spring.flyway", name = "enabled", havingValue = "true", matchIfMissing = true)
public class FlywayConfig {
@Bean(initMethod = "migrate")
public Flyway flyway(DataSource dataSource) {
return Flyway.configure()
.dataSource(dataSource)
.locations("classpath:db/migration")
.baselineOnMigrate(true)
.load();
}
}

View File

@@ -0,0 +1,43 @@
CREATE TABLE IF NOT EXISTS mci_tenant (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
tenant_code VARCHAR(64) NOT NULL UNIQUE COMMENT '租户编码',
tenant_name VARCHAR(128) NOT NULL COMMENT '租户名称',
auth_config JSON COMMENT '认证配置',
inbound_webhook_url VARCHAR(512) COMMENT '入站消息推送地址',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态0禁用 1启用',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted TINYINT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户/业务系统表';
CREATE TABLE IF NOT EXISTS mci_platform_role (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
role_code VARCHAR(64) NOT NULL UNIQUE COMMENT '角色编码',
role_name VARCHAR(128) NOT NULL COMMENT '角色名称',
permissions JSON COMMENT '权限列表',
status TINYINT NOT NULL DEFAULT 1,
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台角色表';
CREATE TABLE IF NOT EXISTS mci_user (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
tenant_code VARCHAR(64) NOT NULL COMMENT '所属租户',
username VARCHAR(64) NOT NULL COMMENT '用户名',
password VARCHAR(256) NOT NULL COMMENT '加密密码',
real_name VARCHAR(128) COMMENT '真实姓名',
phone VARCHAR(32) COMMENT '手机号',
email VARCHAR(128) COMMENT '邮箱',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态0禁用 1启用',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted TINYINT NOT NULL DEFAULT 0,
UNIQUE KEY uk_tenant_username (tenant_code, username, deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='中台用户表';
CREATE TABLE IF NOT EXISTS mci_user_role (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL COMMENT '用户ID',
role_id BIGINT NOT NULL COMMENT '角色ID',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_role (user_id, role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关系表';

View File

@@ -0,0 +1,4 @@
INSERT INTO mci_platform_role (role_code, role_name, permissions) VALUES
('admin', '租户管理员', '["*"]'),
('operator', '运营操作员', '["send:write", "channel:read", "channel:write", "record:read"]'),
('viewer', '只读用户', '["record:read", "channel:read"]');