feat: 添加了15个数据表结构定义,调整了部分数据表的创建语句,更新了数据准备脚本。
This commit is contained in:
parent
2086361a8d
commit
f0f6e53ba2
|
@ -2,8 +2,15 @@ package com.jsl.oa.config.startup;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.core.io.Resource;
|
||||||
|
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.util.FileCopyUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -32,4 +39,41 @@ public class PrepareData {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查数据库是否完整
|
||||||
|
* <hr/>
|
||||||
|
* 检查数据库是否完整,若数据库保持完整则不进行任何操作,若数据库不完整将会创建对应的数据表
|
||||||
|
* @param tableName 数据表名字
|
||||||
|
*/
|
||||||
|
public void checkDatabase(String tableName) {
|
||||||
|
try {
|
||||||
|
jdbcTemplate.queryForObject(
|
||||||
|
"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = ?",
|
||||||
|
String.class,
|
||||||
|
tableName
|
||||||
|
);
|
||||||
|
} catch (DataAccessException e) {
|
||||||
|
log.debug("[Preparation] 创建数据表 {}", tableName);
|
||||||
|
// 读取文件
|
||||||
|
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
|
||||||
|
// 读取 resources/mysql 目录下的所有 SQL 文件
|
||||||
|
Resource resource = resolver.getResource("classpath:/mysql/" + tableName + ".sql");
|
||||||
|
// 创建数据表
|
||||||
|
try {
|
||||||
|
String sql = FileCopyUtils
|
||||||
|
.copyToString(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8));
|
||||||
|
// 分割 SQL 语句并执行
|
||||||
|
jdbcTemplate.execute("USE organize_oa");
|
||||||
|
String[] sqlStatements = sql.split(";");
|
||||||
|
for (String statement : sqlStatements) {
|
||||||
|
if (!statement.trim().isEmpty()) {
|
||||||
|
jdbcTemplate.execute(statement.trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,13 +52,43 @@ public class StartupConfiguration {
|
||||||
/**
|
/**
|
||||||
* 对数据库进行完整性检查
|
* 对数据库进行完整性检查
|
||||||
* <hr/>
|
* <hr/>
|
||||||
* 对数据库进行完整性检查,检查数据库是否有数据缺失等信息
|
* 对数据库进行完整性检查,检查数据库是否出现缺失数据表的情况,若出现缺失数据表的情况将会对数据表进行创建,若数据保持完整将不进行任何操作
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@Order(2)
|
@Order(2)
|
||||||
public CommandLineRunner roleDataPreparation() {
|
public CommandLineRunner checkDatabaseExist() {
|
||||||
return args -> {
|
return args -> {
|
||||||
log.info("[Preparation] 系统进行数据库完整性检查");
|
log.info("[Preparation] 系统进行数据库完整性检查");
|
||||||
|
// 数据表的检查
|
||||||
|
prepareData.checkDatabase("oa_config");
|
||||||
|
prepareData.checkDatabase("oa_user");
|
||||||
|
prepareData.checkDatabase("oa_role");
|
||||||
|
prepareData.checkDatabase("oa_permissions");
|
||||||
|
prepareData.checkDatabase("oa_news");
|
||||||
|
prepareData.checkDatabase("oa_project_tags");
|
||||||
|
prepareData.checkDatabase("oa_project");
|
||||||
|
prepareData.checkDatabase("oa_project_child");
|
||||||
|
prepareData.checkDatabase("oa_project_modules");
|
||||||
|
prepareData.checkDatabase("oa_review");
|
||||||
|
prepareData.checkDatabase("oa_message");
|
||||||
|
prepareData.checkDatabase("oa_news_user");
|
||||||
|
prepareData.checkDatabase("oa_project_daily");
|
||||||
|
prepareData.checkDatabase("oa_role_permissions");
|
||||||
|
prepareData.checkDatabase("oa_role_user");
|
||||||
|
prepareData.checkDatabase("oa_user_tags");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对数据表进行完整性检查
|
||||||
|
* <hr/>
|
||||||
|
* 对数据表进行完整性检查,检查数据表是否有数据缺失等信息
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@Order(3)
|
||||||
|
public CommandLineRunner roleDataPreparation() {
|
||||||
|
return args -> {
|
||||||
|
log.info("[Preparation] 系统进行数据表完整性检查");
|
||||||
// 检查角色信息是否完整
|
// 检查角色信息是否完整
|
||||||
prepareData.checkRole("console", "超级管理员");
|
prepareData.checkRole("console", "超级管理员");
|
||||||
prepareData.checkRole("principal", "负责人");
|
prepareData.checkRole("principal", "负责人");
|
||||||
|
@ -73,7 +103,7 @@ public class StartupConfiguration {
|
||||||
* 账户。
|
* 账户。
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@Order(3)
|
@Order(4)
|
||||||
public CommandLineRunner defaultConsoleDataPreparation() {
|
public CommandLineRunner defaultConsoleDataPreparation() {
|
||||||
return args -> {
|
return args -> {
|
||||||
log.info("[Preparation] 系统进行默认超级管理员信息检查");
|
log.info("[Preparation] 系统进行默认超级管理员信息检查");
|
||||||
|
@ -133,7 +163,7 @@ public class StartupConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Order(4)
|
@Order(5)
|
||||||
public CommandLineRunner prepareDefaultConfigData(Gson gson) {
|
public CommandLineRunner prepareDefaultConfigData(Gson gson) {
|
||||||
return args -> {
|
return args -> {
|
||||||
// 检查加密密钥是否存在
|
// 检查加密密钥是否存在
|
||||||
|
@ -180,7 +210,7 @@ public class StartupConfiguration {
|
||||||
* 准备安全密钥,用于加密解密等操作
|
* 准备安全密钥,用于加密解密等操作
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@Order(5)
|
@Order(6)
|
||||||
public CommandLineRunner prepareKey() {
|
public CommandLineRunner prepareKey() {
|
||||||
return args -> {
|
return args -> {
|
||||||
log.info("[Preparation] 系统进行安全密钥准备");
|
log.info("[Preparation] 系统进行安全密钥准备");
|
||||||
|
|
12
src/main/resources/mysql/oa_config.sql
Normal file
12
src/main/resources/mysql/oa_config.sql
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
create table oa_config
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '主键'
|
||||||
|
primary key,
|
||||||
|
value varchar(50) not null comment '调用关键字',
|
||||||
|
data json null comment 'json数据',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
constraint oa_config_value_uindex
|
||||||
|
unique (value)
|
||||||
|
)
|
||||||
|
comment '配置数据表';
|
19
src/main/resources/mysql/oa_message.sql
Normal file
19
src/main/resources/mysql/oa_message.sql
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
create table oa_message
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '消息主键'
|
||||||
|
primary key,
|
||||||
|
uid bigint unsigned not null comment '用户主键',
|
||||||
|
title varchar(100) not null comment '消息抬头',
|
||||||
|
text text not null comment '消息正文',
|
||||||
|
is_delete tinyint(1) default 0 not null comment '消息是否删除',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
deleted_at timestamp null comment '删除时间',
|
||||||
|
sid bigint unsigned null comment '发送用户id',
|
||||||
|
type varchar(100) null comment '跳转类型',
|
||||||
|
to_id int unsigned null comment '跳转的id',
|
||||||
|
constraint oa_message_oa_user_id_fk
|
||||||
|
foreign key (uid) references oa_user (id)
|
||||||
|
on update cascade on delete cascade
|
||||||
|
)
|
||||||
|
comment '消息';
|
||||||
|
|
13
src/main/resources/mysql/oa_news.sql
Normal file
13
src/main/resources/mysql/oa_news.sql
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
create table oa_news
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '主键'
|
||||||
|
primary key,
|
||||||
|
title varchar(255) not null comment '标题',
|
||||||
|
content text not null comment '内容',
|
||||||
|
tags varchar(10) null comment '标签(项目,通知)',
|
||||||
|
likes int default 0 not null comment '点赞数',
|
||||||
|
comments int default 0 not null comment '评论数',
|
||||||
|
status tinyint not null comment '状态(0:草稿;1:发布;2:隐藏)',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '更新时间'
|
||||||
|
);
|
15
src/main/resources/mysql/oa_news_user.sql
Normal file
15
src/main/resources/mysql/oa_news_user.sql
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
create table oa_news_user
|
||||||
|
(
|
||||||
|
id int unsigned auto_increment comment '主键'
|
||||||
|
primary key,
|
||||||
|
uid bigint unsigned not null comment '用户id',
|
||||||
|
nid bigint unsigned not null comment '新闻id',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
constraint oa_news_user_nid_oa_news_id_fk
|
||||||
|
foreign key (nid) references oa_news (id)
|
||||||
|
on update cascade,
|
||||||
|
constraint oa_news_user_uid_oa_user_id_fk
|
||||||
|
foreign key (uid) references oa_user (id)
|
||||||
|
on update cascade
|
||||||
|
);
|
14
src/main/resources/mysql/oa_permissions.sql
Normal file
14
src/main/resources/mysql/oa_permissions.sql
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
create table oa_permissions
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '主键'
|
||||||
|
primary key,
|
||||||
|
pid bigint unsigned null comment '权限父id',
|
||||||
|
name varchar(100) not null comment '权限名称',
|
||||||
|
code varchar(50) not null comment '权限编码',
|
||||||
|
type tinyint(1) default 1 not null comment '0为菜单,1为权限',
|
||||||
|
deleted_at timestamp null comment '删除时间(没有删除应当为空)',
|
||||||
|
constraint oa_permissions_oa_permissions_id_fk
|
||||||
|
foreign key (pid) references oa_permissions (id)
|
||||||
|
on update cascade on delete cascade
|
||||||
|
)
|
||||||
|
comment '权限表';
|
24
src/main/resources/mysql/oa_project.sql
Normal file
24
src/main/resources/mysql/oa_project.sql
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
create table oa_project
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '项目id'
|
||||||
|
primary key,
|
||||||
|
name varchar(255) not null comment '项目名称',
|
||||||
|
principal_id bigint unsigned not null comment '项目负责人',
|
||||||
|
description json null comment '项目描述(技术选择,描述)',
|
||||||
|
tags json null comment '项目标签(项目类型:web,大数据等)',
|
||||||
|
cycle int unsigned not null comment '项目周期',
|
||||||
|
work_load int unsigned default '1' not null comment '工作量(人天)',
|
||||||
|
files json null comment '项目文件',
|
||||||
|
begin_time datetime default CURRENT_TIMESTAMP not null comment '项目开始时间',
|
||||||
|
complete_time date null comment '完成时间',
|
||||||
|
dead_line date not null comment '甲方要求结束',
|
||||||
|
status varchar(8) default 'progress' not null comment '项目状态(draft: 草稿,progress: 进行,pause: 暂停,abnormal: 异常,complete: 完成)',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
is_delete tinyint(1) default 0 not null comment '项目是否删除',
|
||||||
|
constraint oa_project_oa_user_id_fk
|
||||||
|
foreign key (principal_id) references oa_user (id)
|
||||||
|
on update cascade
|
||||||
|
)
|
||||||
|
comment '项目表';
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
USE organize_oa;
|
|
||||||
|
|
||||||
create table oa_project_child
|
create table oa_project_child
|
||||||
(
|
(
|
||||||
id bigint unsigned auto_increment comment '项目id'
|
id bigint unsigned auto_increment comment '项目id'
|
19
src/main/resources/mysql/oa_project_daily.sql
Normal file
19
src/main/resources/mysql/oa_project_daily.sql
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
create table oa_project_daily
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '日报主键'
|
||||||
|
primary key,
|
||||||
|
user_id bigint unsigned not null comment '用户id',
|
||||||
|
project_id bigint unsigned not null comment '项目id',
|
||||||
|
content text not null comment '日报内容',
|
||||||
|
daily_time date not null comment '日志发布时间',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
is_delete tinyint(1) default 0 not null comment '是否删除',
|
||||||
|
constraint oa_project_daily_oa_project_id_fk
|
||||||
|
foreign key (project_id) references oa_project (id)
|
||||||
|
on update cascade on delete cascade,
|
||||||
|
constraint oa_project_daily_oa_user_id_fk
|
||||||
|
foreign key (user_id) references oa_user (id)
|
||||||
|
on update cascade
|
||||||
|
)
|
||||||
|
comment '项目日报';
|
|
@ -1,5 +1,3 @@
|
||||||
USE organize_oa;
|
|
||||||
|
|
||||||
create table oa_project_modules
|
create table oa_project_modules
|
||||||
(
|
(
|
||||||
id bigint unsigned auto_increment comment '模块id'
|
id bigint unsigned auto_increment comment '模块id'
|
17
src/main/resources/mysql/oa_project_tags.sql
Normal file
17
src/main/resources/mysql/oa_project_tags.sql
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
create table oa_project_tags
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '主键id'
|
||||||
|
primary key,
|
||||||
|
name varchar(20) not null comment '标签名称',
|
||||||
|
pid bigint unsigned null comment '父标签id',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
is_delete tinyint(1) default 0 not null comment '是否删除',
|
||||||
|
constraint oa_project_tags_name_uindex
|
||||||
|
unique (name),
|
||||||
|
constraint oa_project_tags_oa_project_tags_id_fk
|
||||||
|
foreign key (pid) references oa_project_tags (id)
|
||||||
|
on update cascade on delete cascade
|
||||||
|
)
|
||||||
|
comment '项目标签表';
|
||||||
|
|
35
src/main/resources/mysql/oa_review.sql
Normal file
35
src/main/resources/mysql/oa_review.sql
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
create table oa_review
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '主键'
|
||||||
|
primary key,
|
||||||
|
name varchar(255) not null comment '申请名称',
|
||||||
|
content longtext not null comment '申请理由',
|
||||||
|
sender_id bigint unsigned not null comment '申请者用户id',
|
||||||
|
recipient_id bigint unsigned null comment '审核者用户id',
|
||||||
|
category tinyint default 1 null comment '审核类别(0:子系统;1:子模块)',
|
||||||
|
project_id bigint unsigned not null comment '申请的项目id',
|
||||||
|
project_child_id bigint unsigned not null comment '申请的子系统id',
|
||||||
|
project_module_id bigint unsigned null comment '申请的子模块id',
|
||||||
|
application_time datetime default CURRENT_TIMESTAMP not null comment '申请时间',
|
||||||
|
review_time datetime null comment '审核时间',
|
||||||
|
review_result tinyint default 2 not null comment '审核结果(0:未通过;1:通过;2:未审批)',
|
||||||
|
is_delete tinyint default 0 not null comment '是否删除(0:未删除;1:已删除)',
|
||||||
|
created_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_time datetime null comment '更新时间',
|
||||||
|
constraint oa_review_recipient_id_oa_user_id_fk
|
||||||
|
foreign key (recipient_id) references oa_user (id)
|
||||||
|
on update cascade on delete cascade,
|
||||||
|
constraint oa_review_sender_id_oa_user_id_fk
|
||||||
|
foreign key (sender_id) references oa_user (id)
|
||||||
|
on update cascade on delete cascade
|
||||||
|
);
|
||||||
|
|
||||||
|
create index oa_review_project_id_oa_project_id_fk
|
||||||
|
on oa_review (project_id);
|
||||||
|
|
||||||
|
create index oa_review_project_project_submodule_id_oa_project_work_id_fk
|
||||||
|
on oa_review (project_module_id);
|
||||||
|
|
||||||
|
create index oa_review_project_subsystem_id_oa_project_work_id_fk
|
||||||
|
on oa_review (project_child_id);
|
||||||
|
|
10
src/main/resources/mysql/oa_role.sql
Normal file
10
src/main/resources/mysql/oa_role.sql
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
create table oa_role
|
||||||
|
(
|
||||||
|
id int unsigned auto_increment comment '角色id'
|
||||||
|
primary key,
|
||||||
|
role_name varchar(20) not null comment '角色名称',
|
||||||
|
display_name varchar(10) null comment '中文描述',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间'
|
||||||
|
)
|
||||||
|
comment '角色表';
|
10
src/main/resources/mysql/oa_role_permissions.sql
Normal file
10
src/main/resources/mysql/oa_role_permissions.sql
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
create table oa_role_permissions
|
||||||
|
(
|
||||||
|
rid int unsigned not null comment 'Role ID',
|
||||||
|
pid bigint unsigned not null comment 'Permission ID',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
primary key (rid, pid)
|
||||||
|
);
|
||||||
|
|
||||||
|
create index oa_role_permission_oa_permissions_id_fk
|
||||||
|
on oa_role_permissions (pid);
|
14
src/main/resources/mysql/oa_role_user.sql
Normal file
14
src/main/resources/mysql/oa_role_user.sql
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
create table oa_role_user
|
||||||
|
(
|
||||||
|
uid bigint unsigned not null comment '用户id'
|
||||||
|
primary key,
|
||||||
|
rid int unsigned not null comment '角色id',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
constraint oa_role_user_oa_role_id_fk
|
||||||
|
foreign key (rid) references oa_role (id),
|
||||||
|
constraint oa_role_user_oa_user_id_fk
|
||||||
|
foreign key (uid) references oa_user (id)
|
||||||
|
on update cascade on delete cascade
|
||||||
|
)
|
||||||
|
comment '角色用户表';
|
34
src/main/resources/mysql/oa_user.sql
Normal file
34
src/main/resources/mysql/oa_user.sql
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
create table oa_user
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '主键'
|
||||||
|
primary key,
|
||||||
|
job_id char(10) not null comment '工作ID:正则表达 "^[STU|TEA|OTH][0-9]{7}"',
|
||||||
|
username varchar(40) not null comment '用户名',
|
||||||
|
password varchar(255) not null comment '密码',
|
||||||
|
address varchar(255) not null comment '用户家庭地址',
|
||||||
|
phone varchar(11) not null comment '电话',
|
||||||
|
email varchar(100) not null comment '邮箱',
|
||||||
|
age tinyint unsigned not null comment '年龄',
|
||||||
|
signature varchar(50) null comment '一句话描述自己',
|
||||||
|
sex tinyint unsigned default '0' not null comment '0/1/2:保密/男/女',
|
||||||
|
avatar text null comment '头像地址',
|
||||||
|
nickname varchar(20) null comment '昵称',
|
||||||
|
enabled tinyint(1) default 1 not null comment '账户是否可用',
|
||||||
|
account_no_expired tinyint(1) default 1 not null comment '账户是否过期',
|
||||||
|
credentials_no_expired tinyint(1) default 0 not null comment '密码是否过期',
|
||||||
|
recommend tinyint(1) default 0 not null comment '账户是否被推荐',
|
||||||
|
account_no_locked tinyint(1) default 1 not null comment '账户是否被锁定',
|
||||||
|
description text null comment '个人简介',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '更新时间',
|
||||||
|
is_delete tinyint(1) default 0 not null,
|
||||||
|
constraint oa_user_email_uindex
|
||||||
|
unique (email),
|
||||||
|
constraint oa_user_job_id_uindex
|
||||||
|
unique (job_id),
|
||||||
|
constraint oa_user_phone_uindex
|
||||||
|
unique (phone),
|
||||||
|
constraint oa_user_username_uindex
|
||||||
|
unique (username)
|
||||||
|
)
|
||||||
|
comment '用户表';
|
13
src/main/resources/mysql/oa_user_tags.sql
Normal file
13
src/main/resources/mysql/oa_user_tags.sql
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
create table oa_user_tags
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment comment '标签主键'
|
||||||
|
primary key,
|
||||||
|
name varchar(20) not null comment '标签名',
|
||||||
|
pid bigint unsigned null comment '标签父id',
|
||||||
|
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
updated_at timestamp null comment '修改时间',
|
||||||
|
is_delete tinyint(1) default 0 not null comment '是否删除',
|
||||||
|
constraint oa_user_tags_name_uindex
|
||||||
|
unique (name)
|
||||||
|
)
|
||||||
|
comment '用户标签';
|
Loading…
Reference in New Issue
Block a user