create table "user" ( id bigint not null primary key, nickname varchar(255) not null, avatar varchar(255) not null, status smallint default 0 not null, last_login_time timestamp with time zone, create_time timestamp with time zone default now(), update_time timestamp with time zone default now() ); create table user_oauth ( id bigint not null primary key, user_id bigint not null, type smallint default 0 not null, openid varchar(255) not null, create_time timestamp with time zone default now(), update_time timestamp with time zone default now() ); create table space ( id bigint primary key, -- 核心业务字段 name varchar(255) not null, invite_code varchar(30) not null unique, owner_id bigint not null, -- 状态字段 status smallint default 0 not null, -- 0 active 1 disabled 2 dissolved disabled_time timestamp with time zone, dissolve_time timestamp with time zone, -- 时间字段 create_time timestamp with time zone default now() not null, update_time timestamp with time zone default now() not null ); create table space_member ( id bigint primary key, -- 关系核心字段 space_id bigint not null, user_id bigint not null, -- 角色 & 默认 role smallint default 2 not null, is_default smallint default 0 not null, sort_number integer default 0 not null, member_name varchar(255) not null, -- 成员状态 status smallint default 0 not null, -- 0 active 1 disabled 2 exited disabled_time timestamp with time zone, exit_time timestamp with time zone, -- 时间字段 join_time timestamp with time zone default now() not null, update_time timestamp with time zone default now() not null, unique (space_id, user_id) ); --记账分类默认表 create table finance_category_default ( id bigint not null primary key, name varchar(64) not null, icon varchar(64) not null, type smallint default 0 not null, sort_number integer default 0 not null, create_time timestamp with time zone default now(), update_time timestamp with time zone default now() ); --记账分类空间表 create table finance_category_space ( id bigint not null primary key, space_id bigint not null, name varchar(64) not null, icon varchar(64) not null, type smallint default 0 not null, sort_number integer default 0 not null, create_by bigint not null, create_time timestamp with time zone default now(), update_by bigint not null, update_time timestamp with time zone default now() ); -- 记账记录表 create table finance_record ( id bigint not null primary key, category_id bigint not null, space_id bigint not null, amount numeric(12, 2) not null, remark varchar(255), record_time date, create_by bigint not null, create_time timestamp with time zone default now(), update_by bigint not null, update_time timestamp with time zone default now() ); -- session CREATE TABLE session ( id bigint not null primary key, space_id bigint not null, type smallint not null, name varchar(255), avatar varchar(255), description text, status smallint default 0, create_time timestamp with time zone default now(), update_time timestamp with time zone default now() ) -- session_member create table session_member ( id bigint not null primary key, session_id bigint not null, user_id bigint not null, remark varchar(255), is_top smallint default 0 not null, unread_count integer default 0, last_msg_id bigint, status integer default 0, create_time timestamp with time zone default now(), update_time timestamp with time zone default now() ); create table session_message ( id bigint not null primary key, session_id bigint not null, sender_id bigint not null, content text not null, content_type smallint default 0 not null, create_time timestamp with time zone default now() );