
DROP TABLE IF EXISTS t_account;
CREATE TABLE t_account (
    id CHAR(64) NOT NULL COMMENT '主键',
    username VARCHAR(255) DEFAULT NULL COMMENT '账号',
    email VARCHAR(255) DEFAULT NULL COMMENT '邮箱',
    phone_number VARCHAR(255) DEFAULT NULL COMMENT '手机号码',
    password VARCHAR(255) DEFAULT NULL COMMENT '密码',
    salt VARCHAR(255) DEFAULT NULL COMMENT '加密密码的盐',
    nickname VARCHAR(255) DEFAULT NULL COMMENT '昵称',
    realname VARCHAR(255) DEFAULT NULL COMMENT '真实姓名',
    avatar_url VARCHAR(255) DEFAULT NULL COMMENT '用户头像图片的URL',
    level_type INT(11) DEFAULT NULL COMMENT '用户级别的类型',
    birthday DATETIME DEFAULT NULL COMMENT '生日',
    gender INT(11) DEFAULT NULL COMMENT '用户性别；0：未知，1：男性，2：女性',
    last_ip VARCHAR(255) DEFAULT NULL COMMENT '上次登录ip',
    last_at DATETIME NOT NULL COMMENT '上次登录时间',
    state INT(11) DEFAULT NULL COMMENT '账号状态',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

DROP TABLE IF EXISTS t_account_info;
CREATE TABLE t_account_info (
    id CHAR(64) NOT NULL COMMENT '主键',
    account_id VARCHAR(64) NOT NULL COMMENT '账号标识',

    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

DROP TABLE IF EXISTS t_wx_account;
CREATE TABLE t_wx_account (
    id CHAR(64) NOT NULL COMMENT '主键',
    account_id VARCHAR(64) NOT NULL COMMENT '账号标识',

    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 后台管理用户表
DROP TABLE IF EXISTS t_sys_admin_account;
CREATE TABLE IF NOT EXISTS t_sys_admin_account (
    id CHAR(64) NOT NULL COMMENT '管理后台用户表主键,id为-1则是超级用户',
    username VARCHAR(255) DEFAULT NULL COMMENT '账号',
    email VARCHAR(255) DEFAULT NULL COMMENT '邮箱',
    phone_number VARCHAR(255) DEFAULT NULL COMMENT '手机号码',
    password VARCHAR(255) DEFAULT NULL COMMENT '密码',
    salt VARCHAR(255) DEFAULT NULL COMMENT '加密密码的盐',
    nickname VARCHAR(255) DEFAULT NULL COMMENT '昵称',
    realname VARCHAR(255) DEFAULT NULL COMMENT '真实姓名',
    avatar_url VARCHAR(255) DEFAULT NULL COMMENT '用户头像图片的URL',
    level_type INT(11) DEFAULT NULL COMMENT '用户级别的类型',
    birthday DATETIME DEFAULT NULL COMMENT '生日',
    gender INT(11) DEFAULT NULL COMMENT '用户性别；0：未知，1：男性，2：女性',
    last_ip VARCHAR(255) DEFAULT NULL COMMENT '上次登录ip',
    last_at DATETIME NOT NULL COMMENT '上次登录时间',
    state INT(11) DEFAULT NULL COMMENT '账号状态',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 后台管理用户表
DROP TABLE IF EXISTS t_sys_admin_account_info;
CREATE TABLE IF NOT EXISTS t_sys_admin_account_info (
    id CHAR(64) NOT NULL COMMENT '管理后台用户表主键,id为-1则是超级用户',
    admin_account_id VARCHAR(64) NOT NULL COMMENT '管理后台账号标识',

    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 权限表
DROP TABLE IF EXISTS t_sys_admin_permission;
CREATE TABLE IF NOT EXISTS t_sys_admin_permission (
    id CHAR(64) NOT NULL COMMENT '主键',
    name VARCHAR(32) NOT NULL COMMENT '名称',
    icon VARCHAR(20) COMMENT '显示的图标',
    resource_type VARCHAR(20) NOT NULL COMMENT '类型；[menu|button]',
    uri VARCHAR(255) COMMENT '访问路径',
    permission VARCHAR(255) COMMENT '权限字符串；menu例子：role:*、button例子：role:create,role:update,role:delete,role:view',
    parent_id INT NOT NULL DEFAULT 0 COMMENT '父级的id，引用本表id字段',
    parent_ids VARCHAR(64) NOT NULL DEFAULT 0 COMMENT '父编号列表',
    display INT NOT NULL DEFAULT 1 COMMENT '显示排序',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 角色表
DROP TABLE IF EXISTS t_sys_role;
CREATE TABLE IF NOT EXISTS t_sys_role (
    id CHAR(64) NOT NULL COMMENT '角色表主键，-1为默认角色',
    name VARCHAR(20) NOT NULL COMMENT '角色名称',
    remark VARCHAR(200) COMMENT '角色描述',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    created_by_name CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    last_modified_by_name CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 角色与权限
DROP TABLE IF EXISTS t_sys_role_permission;
CREATE TABLE IF NOT EXISTS t_sys_role_permission (
    id CHAR(64) NOT NULL COMMENT '主键',
    role_id INT NOT NULL COMMENT '角色id',
    permission_id INT NOT NULL COMMENT '权限id',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    created_by_name CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    last_modified_by_name CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 用户与角色关联表
DROP TABLE IF EXISTS t_sys_admin_account_role;
CREATE TABLE IF NOT EXISTS t_sys_admin_account_role (
    id CHAR(64) NOT NULL COMMENT '主键',
    admin_account_id INT NOT NULL COMMENT '管理后台账号标识',
    role_id INT NOT NULL COMMENT '角色id',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '';

-- 地址表
DROP TABLE IF EXISTS t_sys_address;
CREATE TABLE t_sys_address (
    id CHAR(64) NOT NULL COMMENT '主键',
    parent_id CHAR(64) NOT NULL COMMENT '父级标识',
    type INT(4) NOT NULL COMMENT '类型(0：国家，1：省份，2：城市，3：区县，4：乡镇，5：村委会)',
    name CHAR(64) NOT NULL COMMENT '名称',
    area_code CHAR(16) COMMENT '地区编码',
    create_date DATETIME NOT NULL COMMENT '创建时间',
    created_by CHAR(64) NOT NULL COMMENT '创建人',
    last_modified_date DATETIME NOT NULL COMMENT '更新时间',
    last_modified_by CHAR(64) NOT NULL COMMENT '更新人',
    is_del BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '地址表';
