text: DROP TABLE IF EXISTS book;
  CREATE TABLE book
  (
      id          int(10) unsigned NOT NULL AUTO_INCREMENT,
      title       varchar(50)      NOT NULL,
      author      varchar(30)               DEFAULT NULL,
      summary     varchar(1000)             DEFAULT NULL,
      image       varchar(100)              DEFAULT NULL,
      create_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  DROP TABLE IF EXISTS file;
  CREATE TABLE file
  (
      id          int(10) unsigned NOT NULL AUTO_INCREMENT,
      path        varchar(500)     NOT NULL,
      type        varchar(10)      NOT NULL DEFAULT 'LOCAL' COMMENT 'LOCAL 本地，REMOTE 远程',
      name        varchar(100)     NOT NULL,
      extension   varchar(50)               DEFAULT NULL,
      size        int(11)                   DEFAULT NULL,
      md5         varchar(40)               DEFAULT NULL COMMENT 'md5值，防止上传重复文件',
      create_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id),
      UNIQUE KEY md5_del (md5, delete_time)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  DROP TABLE IF EXISTS log;
  CREATE TABLE log
  (
      id          int(10) unsigned NOT NULL AUTO_INCREMENT,
      message     varchar(450)              DEFAULT NULL,
      user_id     int(10) unsigned NOT NULL,
      username    varchar(24)               DEFAULT NULL,
      status_code int(11)                   DEFAULT NULL,
      method      varchar(20)               DEFAULT NULL,
      path        varchar(50)               DEFAULT NULL,
      permission  varchar(100)              DEFAULT NULL,
      create_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  -- ----------------------------
  -- 权限表
  -- ----------------------------
  DROP TABLE IF EXISTS permission;
  CREATE TABLE permission
  (
      id          int(10) unsigned NOT NULL AUTO_INCREMENT,
      name        varchar(60)      NOT NULL COMMENT '权限名称，例如：访问首页',
      module      varchar(50)      NOT NULL COMMENT '权限所属模块，例如：人员管理',
      mount       tinyint(1)       NOT NULL DEFAULT 1 COMMENT '0：关闭 1：开启',
      create_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  -- ----------------------------
  -- 分组表
  -- ----------------------------
  DROP TABLE IF EXISTS group;
  CREATE TABLE group
  (
      id          int(10) unsigned NOT NULL AUTO_INCREMENT,
      name        varchar(60)      NOT NULL COMMENT '分组名称，例如：搬砖者',
      info        varchar(255)     DEFAULT NULL COMMENT '分组信息：例如：搬砖的人',
      level       ENUM('root', 'guest', 'user') DEFAULT 'user' COMMENT '分组级别（root、guest分组只能存在一个）',
      create_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id),
      UNIQUE KEY name_del (name, delete_time)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  -- ----------------------------
  -- 分组-权限表
  -- ----------------------------
  DROP TABLE IF EXISTS group_permission;
  CREATE TABLE group_permission
  (
      id            int(10) unsigned NOT NULL AUTO_INCREMENT,
      group_id      int(10) unsigned NOT NULL COMMENT '分组id',
      permission_id int(10) unsigned NOT NULL COMMENT '权限id',
      PRIMARY KEY (id)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  -- ----------------------------
  -- 用户基本信息表
  -- ----------------------------
  DROP TABLE IF EXISTS user;
  CREATE TABLE user
  (
      id          int(10) unsigned NOT NULL AUTO_INCREMENT,
      username    varchar(24)      NOT NULL COMMENT '用户名，唯一',
      nickname    varchar(24)               DEFAULT NULL COMMENT '用户昵称',
      avatar      varchar(500)              DEFAULT NULL COMMENT '头像url',
      email       varchar(100)              DEFAULT NULL COMMENT '邮箱',
      create_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id),
      UNIQUE KEY username_del (username, delete_time),
      UNIQUE KEY email_del (email, delete_time)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  DROP TABLE IF EXISTS user_identity;
  CREATE TABLE user_identity
  (
      id            int(10) unsigned NOT NULL AUTO_INCREMENT,
      user_id       int(10) unsigned NOT NULL COMMENT '用户id',
      identity_type varchar(100)     NOT NULL,
      identifier    varchar(100),
      credential    varchar(100),
      create_time   datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
      update_time   datetime(3)      NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
      delete_time   datetime(3)               DEFAULT NULL,
      PRIMARY KEY (id)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  -- ----------------------------
  -- 用户-分组表
  -- ----------------------------
  DROP TABLE IF EXISTS user_group;
  CREATE TABLE user_group
  (
      id       int(10) unsigned NOT NULL AUTO_INCREMENT,
      user_id  int(10) unsigned NOT NULL COMMENT '用户id',
      group_id int(10) unsigned NOT NULL COMMENT '分组id',
      PRIMARY KEY (id)
  ) ENGINE = InnoDB
    DEFAULT CHARSET = utf8mb4;
  
  