Files
StopShopping/doc/db.sql
2026-03-25 14:55:34 +08:00

292 lines
12 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
CREATE TABLE IF NOT EXISTS district (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
parent_id integer NOT NULL DEFAULT 0,
code varchar(10) NOT NULL,
"name" varchar(20),
full_name varchar(100) NOT NULL,
pinyin varchar(200),
"level" smallint NOT NULL,
latitude varchar(20),
longitude varchar(20),
"order" smallint NOT NULL
);
COMMENT ON TABLE district IS '行政区划';
COMMENT ON COLUMN district.id IS '主键';
COMMENT ON COLUMN district.parent_id IS '父级id顶级时为0';
COMMENT ON COLUMN district.code IS '编码';
COMMENT ON COLUMN district.name IS '简称';
COMMENT ON COLUMN district.full_name IS '全称';
COMMENT ON COLUMN district.pinyin IS '名称拼音';
COMMENT ON COLUMN district.level IS '层级1-省/直辖市2-市/直辖市无3-区4-街道';
COMMENT ON COLUMN district.latitude IS '经度';
COMMENT ON COLUMN district.longitude IS '纬度';
COMMENT ON COLUMN district.order IS '层级中序号';
CREATE TABLE IF NOT EXISTS "user" (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
account varchar(20) NOT NULL,
nick_name varchar(50) NOT NULL,
avatar varchar(50),
"current_role" char(1) NOT NULL DEFAULT 'c',
telephone varchar(20),
"password" varchar(128) NOT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_login_time timestamp
);
COMMENT ON TABLE "user" IS '用户';
COMMENT ON COLUMN "user".id IS '主键';
COMMENT ON COLUMN "user".account IS '登录账号';
COMMENT ON COLUMN "user".nick_name IS '昵称';
COMMENT ON COLUMN "user".avatar IS '头像图片名,后台生成链接';
COMMENT ON COLUMN "user"."current_role" IS '当前角色c-买家s-卖家';
COMMENT ON COLUMN "user".telephone IS '电话';
COMMENT ON COLUMN "user"."password" IS '密码(已加密)';
COMMENT ON COLUMN "user".create_time IS '创建时间';
COMMENT ON COLUMN "user".last_login_time IS '最后登录时间';
CREATE TABLE IF NOT EXISTS address (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
user_id integer NOT NULL,
"name" varchar(20) NOT NULL,
telephone varchar(20) NOT NULL,
tag varchar(20),
"default" boolean NOT NULL DEFAULT FALSE,
district_level1_id integer NOT NULL,
district_level2_id integer,
district_level3_id integer NOT NULL,
district_level4_id integer NOT NULL,
detail varchar(200),
CONSTRAINT fk_UserAddress FOREIGN KEY (user_id) REFERENCES "user"(id)
);
COMMENT ON TABLE address IS '收货地址';
COMMENT ON COLUMN address.id IS '主键';
COMMENT ON COLUMN address.user_id IS '用户表id';
COMMENT ON COLUMN address.name IS '收货人地址';
COMMENT ON COLUMN address.telephone IS '联系电话';
COMMENT ON COLUMN address.tag IS '自定义标签:学校、家等';
COMMENT ON COLUMN address.default IS '是否默认地址';
COMMENT ON COLUMN address.district_level1_id IS '行政区域id表示省/直辖市';
COMMENT ON COLUMN address.district_level2_id IS '行政区域id表示市/直辖市为空';
COMMENT ON COLUMN address.district_level3_id IS '行政区域id表示区';
COMMENT ON COLUMN address.district_level4_id IS '行政区域id表示街道/镇';
COMMENT ON COLUMN address.detail IS '详细地址';
CREATE TABLE IF NOT EXISTS administrator (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
account varchar(20) NOT NULL,
nick_name varchar(50) NOT NULL,
"password" varchar(128) NOT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_login_time timestamp NOT NULL
);
COMMENT ON TABLE administrator IS '管理员';
COMMENT ON COLUMN administrator.id IS '主键';
COMMENT ON COLUMN administrator.account IS '登录账号';
COMMENT ON COLUMN administrator.nick_name IS '昵称';
COMMENT ON COLUMN administrator.password IS '登录密码(已加密)';
COMMENT ON COLUMN administrator.create_time IS '创建时间';
COMMENT ON COLUMN administrator.last_login_time IS '最后登录时间';
CREATE TABLE IF NOT EXISTS category (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
parent_id integer NOT NULL DEFAULT 0,
"path" varchar(50) NOT NULL,
"name" varchar(50) NOT NULL,
"level" smallint NOT NULL,
logo varchar(50),
"order" smallint NOT NULL,
deleted boolean NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE category IS '商品分类';
COMMENT ON COLUMN category.id IS '主键';
COMMENT ON COLUMN category.parent_id IS '父级id顶级为0';
COMMENT ON COLUMN category.path IS 'id路径枚举/1/2/3/';
COMMENT ON COLUMN category.name IS '名称';
COMMENT ON COLUMN category.level IS '层级从1开始';
COMMENT ON COLUMN category.logo IS 'logo图片名后台生成地址';
COMMENT ON COLUMN category.order IS '层级中序号';
COMMENT ON COLUMN category.deleted IS '软删除标识';
CREATE TABLE IF NOT EXISTS product (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
serial_no varchar(20) NOT NULL,
"name" varchar(100) NOT NULL,
description varchar(200),
logo varchar(50) NOT NULL,
category_id integer NOT NULL,
user_id integer NOT NULL,
minimum_unit varchar(20) NOT NULL,
unit_price numeric(11, 2) NOT NULL DEFAULT 0,
detail text,
sold_amount integer NOT NULL DEFAULT 0,
deleted boolean NOT NULL DEFAULT FALSE,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_CategoryProduct FOREIGN KEY (category_id) REFERENCES category(id)
);
COMMENT ON TABLE product IS '卖家商品表';
COMMENT ON COLUMN product.id IS '主键';
COMMENT ON COLUMN product.serial_no IS '系统唯一编号';
COMMENT ON COLUMN product.name IS '名称';
COMMENT ON COLUMN product.description IS '商品描述';
COMMENT ON COLUMN product.logo IS '商品图片';
COMMENT ON COLUMN product.category_id IS '商品分类id';
COMMENT ON COLUMN product.user_id IS '用户id';
COMMENT ON COLUMN product.minimum_unit IS '最小销售单元';
COMMENT ON COLUMN product.unit_price IS '单价';
COMMENT ON COLUMN product.detail IS '详情';
COMMENT ON COLUMN product.sold_amount IS '已售数量';
COMMENT ON COLUMN product.deleted IS '软删除标识';
COMMENT ON COLUMN product.create_time IS '添加时间';
CREATE TABLE IF NOT EXISTS request (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
serial_no varchar(20) NOT NULL,
"name" varchar(100) NOT NULL,
description varchar(1000),
category_id integer NOT NULL,
status smallint NOT NULL DEFAULT 0,
publisher_id integer NOT NULL,
publish_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deadline" date NOT NULL,
deleted boolean NOT NULL DEFAULT FALSE,
CONSTRAINT fk_CategoryRequest FOREIGN KEY (category_id) REFERENCES category(id),
CONSTRAINT fk_UserRequest FOREIGN KEY (publisher_id) REFERENCES "user"(id)
);
COMMENT ON TABLE request IS '用户需求';
COMMENT ON COLUMN request.id IS '主键';
COMMENT ON COLUMN request.serial_no IS '需求单号,系统唯一,后台生成';
COMMENT ON COLUMN request.name IS '名称';
COMMENT ON COLUMN request.description IS '需求描述';
COMMENT ON COLUMN request.category_id IS '商品分类id';
COMMENT ON COLUMN request.status IS '状态0-发布1-有竞标2-待发货3-待收货4-已完成5-已评价';
COMMENT ON COLUMN request.publisher_id IS '发布者id';
COMMENT ON COLUMN request.publish_time IS '发布时间';
COMMENT ON COLUMN request.deadline IS '截止日期';
COMMENT ON COLUMN request.deleted IS '是否已删除';
CREATE TABLE IF NOT EXISTS reply (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
product_id integer NOT NULL,
amount integer NOT NULL,
price numeric(11, 2) NOT NULL,
user_id integer NOT NULL,
reply_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
request_id integer NOT NULL,
memo varchar(200),
rejected boolean NOT NULL DEFAULT FALSE,
CONSTRAINT fk_RequestReply FOREIGN KEY (request_id) REFERENCES request(id),
CONSTRAINT fk_ReplyProduct FOREIGN KEY (product_id) REFERENCES product(id),
CONSTRAINT fk_ReplyUser FOREIGN KEY (user_id) REFERENCES "user"(id)
);
COMMENT ON TABLE reply IS '竞标表';
COMMENT ON COLUMN reply.id IS '主键';
COMMENT ON COLUMN reply.product_id IS '商品id';
COMMENT ON COLUMN reply.amount IS '数量';
COMMENT ON COLUMN reply.price IS '价格,自动计算的价格(product.unit_price * amount)之后的优惠价格';
COMMENT ON COLUMN reply.user_id IS '竞标者id';
COMMENT ON COLUMN reply.reply_time IS '回应时间';
COMMENT ON COLUMN reply.request_id IS '需求id';
COMMENT ON COLUMN reply.memo IS '留言';
COMMENT ON COLUMN reply.rejected IS '是否已拒绝';
CREATE TABLE IF NOT EXISTS logistics (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
order_no varchar(20) NOT NULL,
company varchar(30) NOT NULL,
status smallint NOT NULL,
arrival_time timestamp NOT NULL,
"location" varchar(100) NOT NULL,
context varchar(200) NOT NULL,
request_id integer NOT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE logistics IS '物流';
COMMENT ON COLUMN logistics.id IS '主键';
COMMENT ON COLUMN logistics.order_no IS '快递单号';
COMMENT ON COLUMN logistics.company IS '快递公司';
COMMENT ON COLUMN logistics.status IS '物流状态1-揽收0-在途5-派件6-退回4-退签3-签收2-疑难7-转投8。。。-清关';
COMMENT ON COLUMN logistics.arrival_time IS '到达时间';
COMMENT ON COLUMN logistics.location IS '到达地点';
COMMENT ON COLUMN logistics.context IS '详情';
COMMENT ON COLUMN logistics.request_id IS '需求id';
COMMENT ON COLUMN logistics.create_time IS '入库时间';
CREATE TABLE IF NOT EXISTS message (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
from_user_id integer NOT NULL,
to_user_id integer NOT NULL,
sent_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
"read" boolean NOT NULL DEFAULT FALSE,
recalled boolean NOT NULL DEFAULT FALSE,
content text NOT NULL
);
COMMENT ON TABLE message IS '用户消息';
COMMENT ON COLUMN message.id IS '主键';
COMMENT ON COLUMN message.from_user_id IS '发出用户id';
COMMENT ON COLUMN message.to_user_id IS '接收用户id';
COMMENT ON COLUMN message.sent_time IS '发出时间';
COMMENT ON COLUMN message.read IS '是否已读';
COMMENT ON COLUMN message.recalled IS '是否已撤回';
COMMENT ON COLUMN message.content IS '内容';
CREATE TABLE IF NOT EXISTS notice (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
content text NOT NULL,
verified boolean NOT NULL DEFAULT FALSE,
publish_time timestamp NOT NULL default CURRENT_TIMESTAMP
);
COMMENT ON TABLE notice IS '系统通知';
COMMENT ON COLUMN notice.id IS '主键';
COMMENT ON COLUMN notice.content IS '内容';
COMMENT ON COLUMN notice.verified IS '是否已审核';
COMMENT ON COLUMN notice.publish_time IS '发布时间';
CREATE TABLE IF NOT EXISTS operate_log (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
operate_type char(1) NOT NULL,
target_type integer NOT NULL,
related_id integer NOT NULL,
operater_id integer NOT NULL,
description varchar(500),
operate_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE operate_log IS '操作日志';
COMMENT ON COLUMN operate_log.id IS '主键';
COMMENT ON COLUMN operate_log.operate_type IS '操作类型c-创建u-修改d-删除';
COMMENT ON COLUMN operate_log.target_type IS '目标类型0-行政区划1-商品分类。。。';
COMMENT ON COLUMN operate_log.related_id IS '关联id目标表主键';
COMMENT ON COLUMN operate_log.operater_id IS '管理员id';
COMMENT ON COLUMN operate_log.description IS '操作描述';
COMMENT ON COLUMN operate_log.operate_time IS '操作时间';
COMMENT ON COLUMN operate_log.create_time IS '入库时间';
CREATE TABLE IF NOT EXISTS refresh_token (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
user_id integer NOT NULL,
system_role char(1) NOT NULL,
token varchar(50) NOT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
expires_at timestamp NOT NULL
);
COMMENT ON TABLE refresh_token IS '刷新令牌';
COMMENT ON COLUMN refresh_token.id IS '主键';
COMMENT ON COLUMN refresh_token.user_id IS '用户/管理员id';
COMMENT ON COLUMN refresh_token.system_role IS '系统角色a-管理员u-用户';
COMMENT ON COLUMN refresh_token.token IS '令牌';
COMMENT ON COLUMN refresh_token.create_time IS '创建时间';
COMMENT ON COLUMN refresh_token.expires_at IS '失效时间';