-- 交易模块数据库表创建脚本
|
-- 创建时间: 2024-08-07
|
-- 数据库: PostgreSQL
|
|
-- 1. 产品定价表 (product_pricing)
|
CREATE TABLE product_pricing (
|
id BIGSERIAL PRIMARY KEY,
|
suite_name VARCHAR(100) NOT NULL COMMENT '产品套件名称',
|
sales_form VARCHAR(20) NOT NULL CHECK (sales_form IN ('买断', '租赁', '私有增包量', '公有增包量', 'OTA服务', '资源包', '个人')) COMMENT '销售形式',
|
customer_type VARCHAR(10) NOT NULL CHECK (customer_type IN ('企业', '个人', '项目部')) COMMENT '客户对象',
|
account_limit VARCHAR(20) DEFAULT '不限' COMMENT '账户数量',
|
concurrent_nodes VARCHAR(20) DEFAULT '不限' COMMENT '并发节点数',
|
price_type VARCHAR(10) NOT NULL CHECK (price_type IN ('积分', '协议', '货币', '免费')) COMMENT '价格设置',
|
price_unit VARCHAR(20) NOT NULL CHECK (price_unit IN ('套', '套/年', '年', '个', '次')) COMMENT '价格单位',
|
price NUMERIC(15,2) NOT NULL COMMENT '价格值',
|
is_active BOOLEAN DEFAULT TRUE COMMENT '启用状态',
|
product_id BIGINT NOT NULL COMMENT '关联产品ID',
|
product_name VARCHAR(100) COMMENT '产品名称',
|
provider_id BIGINT COMMENT '产品提供者ID',
|
provider_name VARCHAR(100) COMMENT '产品提供者名称',
|
description TEXT COMMENT '产品描述',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
created_by BIGINT COMMENT '创建人ID',
|
updated_by BIGINT COMMENT '更新人ID',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 2. 购物车表 (shopping_cart)
|
CREATE TABLE shopping_cart (
|
id BIGSERIAL PRIMARY KEY,
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
unit_id BIGINT COMMENT '单位ID',
|
suite_name VARCHAR(100) NOT NULL COMMENT '产品套件名称',
|
sales_form VARCHAR(20) NOT NULL CHECK (sales_form IN ('买断', '租赁', '私有增包量', '公有增包量', 'OTA服务', '资源包', '个人')) COMMENT '销售形式',
|
customer_type VARCHAR(10) NOT NULL CHECK (customer_type IN ('企业', '个人', '项目部')) COMMENT '客户对象',
|
account_limit VARCHAR(20) DEFAULT '不限' COMMENT '账户数量',
|
concurrent_nodes VARCHAR(20) DEFAULT '不限' COMMENT '并发节点数',
|
price_type VARCHAR(10) NOT NULL CHECK (price_type IN ('积分', '协议', '货币', '免费')) COMMENT '价格类型',
|
price_unit VARCHAR(20) NOT NULL CHECK (price_unit IN ('套', '套/年', '年', '个', '次')) COMMENT '价格单位',
|
unit_price NUMERIC(15,2) NOT NULL COMMENT '单价',
|
quantity INTEGER NOT NULL DEFAULT 1 COMMENT '数量',
|
duration INTEGER COMMENT '期限(年)',
|
product_id BIGINT NOT NULL COMMENT '产品ID',
|
product_name VARCHAR(100) COMMENT '产品名称',
|
provider_id BIGINT COMMENT '产品提供者ID',
|
provider_name VARCHAR(100) COMMENT '产品提供者名称',
|
total_amount NUMERIC(15,2) COMMENT '总金额',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 购物车表
|
CREATE TABLE IF NOT EXISTS cart (
|
id BIGSERIAL PRIMARY KEY,
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
unit_id BIGINT NOT NULL COMMENT '单位ID',
|
pricing_id BIGINT NOT NULL COMMENT '商品定价ID',
|
product_id BIGINT NOT NULL COMMENT '商品ID',
|
product_name VARCHAR(255) COMMENT '商品名称',
|
suite_name VARCHAR(255) COMMENT '商品套件名称',
|
sales_form VARCHAR(100) COMMENT '销售形式',
|
customer_type VARCHAR(100) COMMENT '客户对象',
|
account_limit VARCHAR(100) COMMENT '账户数量',
|
concurrent_nodes VARCHAR(100) COMMENT '并发节点数',
|
price_type VARCHAR(100) COMMENT '价格类型',
|
price_unit VARCHAR(100) COMMENT '价格单位',
|
unit_price DECIMAL(15,2) NOT NULL COMMENT '单价',
|
quantity INTEGER NOT NULL DEFAULT 1 COMMENT '数量',
|
duration INTEGER COMMENT '年限',
|
total_price DECIMAL(15,2) COMMENT '小计金额',
|
provider_id BIGINT COMMENT '产品提供者ID',
|
provider_name VARCHAR(255) COMMENT '产品提供者名称',
|
remarks TEXT COMMENT '备注',
|
add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除',
|
UNIQUE KEY uk_user_unit_pricing (user_id, unit_id, pricing_id, deleted)
|
);
|
|
-- 3. 订单表 (order_info)
|
CREATE TABLE order_info (
|
order_id VARCHAR(50) PRIMARY KEY COMMENT '订单编号',
|
product_id BIGINT NOT NULL COMMENT '产品ID',
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
unit_id BIGINT COMMENT '单位ID',
|
product_name VARCHAR(100) NOT NULL COMMENT '产品名称',
|
provider_name VARCHAR(100) NOT NULL COMMENT '产品提供者名称',
|
provider_id BIGINT NOT NULL COMMENT '提供者ID',
|
apply_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
|
order_status VARCHAR(20) NOT NULL DEFAULT '待审批' CHECK (order_status IN ('待审批', '待审批授权', '待授权', '待上传文件', '待交易确认', '已完成', '已取消', '已驳回')) COMMENT '订单状态',
|
total_amount NUMERIC(15,2) NOT NULL COMMENT '订单总金额',
|
payment_type VARCHAR(20) COMMENT '支付方式(积分/货币/协议)',
|
payment_status VARCHAR(20) DEFAULT '未支付' CHECK (payment_status IN ('未支付', '已支付', '支付失败', '已退款')) COMMENT '支付状态',
|
workflow_id VARCHAR(50) COMMENT '工作流ID',
|
current_step VARCHAR(50) COMMENT '当前审批步骤',
|
approval_flow TEXT COMMENT '审批流程配置',
|
buyer_remarks TEXT COMMENT '买家备注',
|
seller_remarks TEXT COMMENT '卖家备注',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 4. 订单详情表 (order_detail)
|
CREATE TABLE order_detail (
|
id BIGSERIAL PRIMARY KEY,
|
order_id VARCHAR(50) NOT NULL COMMENT '关联订单ID',
|
pricing_id BIGINT NOT NULL COMMENT '关联产品定价ID',
|
product_id BIGINT NOT NULL COMMENT '产品ID',
|
suite_name VARCHAR(100) NOT NULL COMMENT '产品套件名称',
|
sales_form VARCHAR(20) NOT NULL COMMENT '销售形式',
|
customer_type VARCHAR(10) NOT NULL COMMENT '客户对象',
|
account_limit VARCHAR(20) COMMENT '账户数量',
|
concurrent_nodes VARCHAR(20) COMMENT '并发节点数',
|
price_type VARCHAR(10) NOT NULL COMMENT '价格类型',
|
price_unit VARCHAR(20) NOT NULL COMMENT '价格单位',
|
unit_price NUMERIC(15,2) NOT NULL COMMENT '单价',
|
quantity INTEGER NOT NULL COMMENT '数量',
|
duration INTEGER COMMENT '年限',
|
total_price NUMERIC(15,2) NOT NULL COMMENT '小计金额',
|
provider_id BIGINT NOT NULL COMMENT '产品提供者ID',
|
provider_name VARCHAR(100) COMMENT '产品提供者名称',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
remarks TEXT COMMENT '备注',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 5. 订单附件表 (order_attachment)
|
CREATE TABLE order_attachment (
|
id BIGSERIAL PRIMARY KEY,
|
order_id VARCHAR(50) NOT NULL COMMENT '关联订单ID',
|
file_name VARCHAR(255) NOT NULL COMMENT '附件名称',
|
original_name VARCHAR(255) COMMENT '原始文件名',
|
file_type VARCHAR(50) NOT NULL COMMENT '附件类型',
|
file_size BIGINT NOT NULL COMMENT '附件大小(字节)',
|
file_url VARCHAR(500) NOT NULL COMMENT '附件地址',
|
file_path VARCHAR(500) COMMENT '文件存储路径',
|
bucket_name VARCHAR(100) COMMENT 'MinIO存储桶名称',
|
object_name VARCHAR(500) COMMENT 'MinIO对象名称',
|
upload_user_id BIGINT COMMENT '上传用户ID',
|
upload_user_name VARCHAR(100) COMMENT '上传用户名',
|
attachment_type VARCHAR(50) COMMENT '附件类型(合同/发票/其他)',
|
description TEXT COMMENT '附件描述',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 6. 订单审核表 (order_approval)
|
CREATE TABLE order_approval (
|
id BIGSERIAL PRIMARY KEY,
|
order_id VARCHAR(50) NOT NULL COMMENT '关联订单ID',
|
approval_step VARCHAR(50) NOT NULL COMMENT '审批步骤',
|
approval_type VARCHAR(20) NOT NULL CHECK (approval_type IN ('审批', '授权')) COMMENT '审批类型',
|
approval_opinion TEXT COMMENT '审核意见',
|
approval_result VARCHAR(20) NOT NULL CHECK (approval_result IN ('通过', '驳回', '待处理')) COMMENT '审批结果',
|
approver_id BIGINT NOT NULL COMMENT '审核人ID',
|
approver_name VARCHAR(100) NOT NULL COMMENT '审核人姓名',
|
approver_role VARCHAR(100) COMMENT '审核人角色',
|
approval_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '审核时间',
|
next_approver_id BIGINT COMMENT '下一审批人ID',
|
next_approver_name VARCHAR(100) COMMENT '下一审批人姓名',
|
workflow_status VARCHAR(20) COMMENT '工作流状态',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 7. 订单评价表 (order_evaluation)
|
CREATE TABLE order_evaluation (
|
id BIGSERIAL PRIMARY KEY,
|
order_id VARCHAR(50) NOT NULL COMMENT '关联订单ID',
|
evaluator_id BIGINT NOT NULL COMMENT '评价人ID',
|
evaluator_name VARCHAR(100) NOT NULL COMMENT '评价人姓名',
|
evaluator_type VARCHAR(20) NOT NULL CHECK (evaluator_type IN ('买家', '卖家')) COMMENT '评价人类型',
|
content TEXT NOT NULL COMMENT '评价内容',
|
rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5) COMMENT '评分(1-5)',
|
service_rating INTEGER CHECK (service_rating >= 1 AND service_rating <= 5) COMMENT '服务评分',
|
quality_rating INTEGER CHECK (quality_rating >= 1 AND quality_rating <= 5) COMMENT '质量评分',
|
delivery_rating INTEGER CHECK (delivery_rating >= 1 AND delivery_rating <= 5) COMMENT '交付评分',
|
is_anonymous BOOLEAN DEFAULT FALSE COMMENT '是否匿名评价',
|
reply_content TEXT COMMENT '回复内容',
|
reply_user_id BIGINT COMMENT '回复用户ID',
|
reply_time TIMESTAMP COMMENT '回复时间',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 8. 积分表 (points)
|
CREATE TABLE points (
|
id BIGSERIAL PRIMARY KEY,
|
points_name VARCHAR(100) NOT NULL COMMENT '积分名称',
|
points_code VARCHAR(50) NOT NULL UNIQUE COMMENT '积分编码',
|
points_type VARCHAR(20) NOT NULL CHECK (points_type IN ('个人积分', '单位积分', '产品积分')) COMMENT '积分类型',
|
effective_start DATE NOT NULL COMMENT '生效开始时间',
|
effective_end DATE COMMENT '生效结束时间',
|
modifier_id BIGINT NOT NULL COMMENT '修改人ID',
|
modifier_name VARCHAR(100) NOT NULL COMMENT '修改人姓名',
|
version VARCHAR(20) NOT NULL COMMENT '版本号',
|
description TEXT COMMENT '积分描述',
|
status VARCHAR(10) DEFAULT '启用' CHECK (status IN ('启用', '禁用')) COMMENT '状态',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 9. 积分规则表 (points_rule) - 更新现有表结构
|
ALTER TABLE points_rule ADD COLUMN IF NOT EXISTS points_id BIGINT COMMENT '关联积分ID';
|
ALTER TABLE points_rule ADD COLUMN IF NOT EXISTS rule_code VARCHAR(50) COMMENT '规则编码';
|
ALTER TABLE points_rule ADD COLUMN IF NOT EXISTS effective_start DATE COMMENT '生效开始时间';
|
ALTER TABLE points_rule ADD COLUMN IF NOT EXISTS effective_end DATE COMMENT '生效结束时间';
|
ALTER TABLE points_rule ADD COLUMN IF NOT EXISTS priority INTEGER DEFAULT 0 COMMENT '优先级';
|
|
-- 10. 积分规则详情表 (points_rule_detail)
|
CREATE TABLE points_rule_detail (
|
id BIGSERIAL PRIMARY KEY,
|
rule_id BIGINT NOT NULL COMMENT '关联积分规则ID',
|
points_id BIGINT NOT NULL COMMENT '关联积分ID',
|
points_value INTEGER NOT NULL COMMENT '积分值',
|
daily_limit INTEGER COMMENT '每日积分上限值',
|
monthly_limit INTEGER COMMENT '每月积分上限值',
|
yearly_limit INTEGER COMMENT '每年积分上限值',
|
min_value INTEGER DEFAULT 0 COMMENT '最小值',
|
max_value INTEGER COMMENT '最大值',
|
conversion_rate NUMERIC(10,4) DEFAULT 1.0 COMMENT '转换比率',
|
effective_start DATE COMMENT '生效开始时间',
|
effective_end DATE COMMENT '生效结束时间',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 11. 积分流水表 (points_transaction) - 新增字段
|
ALTER TABLE points_flow ADD COLUMN IF NOT EXISTS transaction_type VARCHAR(20) COMMENT '交易类型(获取/消耗/转换)';
|
ALTER TABLE points_flow ADD COLUMN IF NOT EXISTS related_id VARCHAR(50) COMMENT '关联业务ID';
|
ALTER TABLE points_flow ADD COLUMN IF NOT EXISTS related_type VARCHAR(50) COMMENT '关联业务类型';
|
ALTER TABLE points_flow ADD COLUMN IF NOT EXISTS balance_after INTEGER COMMENT '变动后余额';
|
ALTER TABLE points_flow ADD COLUMN IF NOT EXISTS operator_id BIGINT COMMENT '操作人ID';
|
ALTER TABLE points_flow ADD COLUMN IF NOT EXISTS operator_name VARCHAR(100) COMMENT '操作人姓名';
|
|
-- 12. 积分账户表 (points_account) - 更新现有表结构
|
ALTER TABLE user_points ADD COLUMN IF NOT EXISTS account_type VARCHAR(20) DEFAULT '个人积分' COMMENT '账户类型(个人积分/单位积分)';
|
ALTER TABLE user_points ADD COLUMN IF NOT EXISTS account_status VARCHAR(20) DEFAULT '正常' COMMENT '账户状态(正常/冻结/注销)';
|
ALTER TABLE user_points ADD COLUMN IF NOT EXISTS last_transaction_time TIMESTAMP COMMENT '最后交易时间';
|
|
-- 13. 产品表 (product) - 新增产品基础表
|
CREATE TABLE product (
|
id BIGSERIAL PRIMARY KEY,
|
product_name VARCHAR(100) NOT NULL COMMENT '产品名称',
|
product_code VARCHAR(50) NOT NULL UNIQUE COMMENT '产品编码',
|
product_type VARCHAR(50) COMMENT '产品类型',
|
category VARCHAR(100) COMMENT '产品分类',
|
description TEXT COMMENT '产品描述',
|
provider_id BIGINT NOT NULL COMMENT '提供者ID',
|
provider_name VARCHAR(100) NOT NULL COMMENT '提供者名称',
|
provider_type VARCHAR(20) COMMENT '提供者类型(企业/个人)',
|
status VARCHAR(20) DEFAULT '上架' CHECK (status IN ('上架', '下架', '审核中', '已下架')) COMMENT '产品状态',
|
audit_status VARCHAR(20) DEFAULT '待审核' CHECK (audit_status IN ('待审核', '审核通过', '审核驳回')) COMMENT '审核状态',
|
tags TEXT COMMENT '产品标签(JSON格式)',
|
cover_image VARCHAR(500) COMMENT '封面图片',
|
demo_url VARCHAR(500) COMMENT '演示地址',
|
doc_url VARCHAR(500) COMMENT '文档地址',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
created_by BIGINT COMMENT '创建人ID',
|
updated_by BIGINT COMMENT '更新人ID',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 14. 用户表 (user) - 新增用户基础表
|
CREATE TABLE user (
|
id BIGSERIAL PRIMARY KEY,
|
username VARCHAR(100) NOT NULL UNIQUE COMMENT '用户名',
|
real_name VARCHAR(100) COMMENT '真实姓名',
|
email VARCHAR(100) COMMENT '邮箱',
|
phone VARCHAR(20) COMMENT '手机号',
|
avatar VARCHAR(500) COMMENT '头像',
|
user_type VARCHAR(20) DEFAULT '个人用户' CHECK (user_type IN ('个人用户', '单位用户')) COMMENT '用户类型',
|
unit_id BIGINT COMMENT '单位ID',
|
unit_name VARCHAR(100) COMMENT '单位名称',
|
status VARCHAR(20) DEFAULT '正常' CHECK (status IN ('正常', '冻结', '注销')) COMMENT '用户状态',
|
last_login_time TIMESTAMP COMMENT '最后登录时间',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 15. 单位表 (unit) - 新增单位基础表
|
CREATE TABLE unit (
|
id BIGSERIAL PRIMARY KEY,
|
unit_name VARCHAR(100) NOT NULL COMMENT '单位名称',
|
unit_code VARCHAR(50) UNIQUE COMMENT '单位编码',
|
unit_type VARCHAR(50) COMMENT '单位类型',
|
industry VARCHAR(100) COMMENT '所属行业',
|
address TEXT COMMENT '单位地址',
|
contact_person VARCHAR(100) COMMENT '联系人',
|
contact_phone VARCHAR(20) COMMENT '联系电话',
|
contact_email VARCHAR(100) COMMENT '联系邮箱',
|
business_license VARCHAR(500) COMMENT '营业执照',
|
legal_person VARCHAR(100) COMMENT '法人代表',
|
registered_capital NUMERIC(15,2) COMMENT '注册资本',
|
establishment_date DATE COMMENT '成立日期',
|
status VARCHAR(20) DEFAULT '正常' CHECK (status IN ('正常', '冻结', '注销')) COMMENT '单位状态',
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted INTEGER DEFAULT 0 COMMENT '逻辑删除:1-已删除,0-未删除'
|
);
|
|
-- 创建索引
|
CREATE INDEX idx_product_pricing_product_id ON product_pricing(product_id);
|
CREATE INDEX idx_product_pricing_status ON product_pricing(is_active);
|
CREATE INDEX idx_shopping_cart_user_id ON shopping_cart(user_id);
|
CREATE INDEX idx_shopping_cart_product_id ON shopping_cart(product_id);
|
CREATE INDEX idx_order_info_user_id ON order_info(user_id);
|
CREATE INDEX idx_order_info_provider_id ON order_info(provider_id);
|
CREATE INDEX idx_order_info_status ON order_info(order_status);
|
CREATE INDEX idx_order_info_apply_time ON order_info(apply_time);
|
CREATE INDEX idx_order_detail_order_id ON order_detail(order_id);
|
CREATE INDEX idx_order_attachment_order_id ON order_attachment(order_id);
|
CREATE INDEX idx_order_approval_order_id ON order_approval(order_id);
|
CREATE INDEX idx_order_approval_approver_id ON order_approval(approver_id);
|
CREATE INDEX idx_order_evaluation_order_id ON order_evaluation(order_id);
|
CREATE INDEX idx_order_evaluation_evaluator_id ON order_evaluation(evaluator_id);
|
CREATE INDEX idx_points_rule_points_id ON points_rule(points_id);
|
CREATE INDEX idx_points_rule_detail_rule_id ON points_rule_detail(rule_id);
|
CREATE INDEX idx_product_provider_id ON product(provider_id);
|
CREATE INDEX idx_product_status ON product(status);
|
CREATE INDEX idx_user_unit_id ON user(unit_id);
|
CREATE INDEX idx_user_status ON user(status);
|
|
-- 购物车表索引
|
CREATE INDEX idx_cart_user_unit ON cart(user_id, unit_id, deleted);
|
CREATE INDEX idx_cart_pricing ON cart(pricing_id, deleted);
|
CREATE INDEX idx_cart_product ON cart(product_id, deleted);
|
CREATE INDEX idx_cart_provider ON cart(provider_id, deleted);
|
CREATE INDEX idx_cart_add_time ON cart(add_time, deleted);
|
|
-- 添加外键约束
|
ALTER TABLE product_pricing ADD CONSTRAINT fk_product_pricing_product_id FOREIGN KEY (product_id) REFERENCES product(id);
|
ALTER TABLE shopping_cart ADD CONSTRAINT fk_shopping_cart_user_id FOREIGN KEY (user_id) REFERENCES user(id);
|
ALTER TABLE shopping_cart ADD CONSTRAINT fk_shopping_cart_product_id FOREIGN KEY (product_id) REFERENCES product(id);
|
ALTER TABLE order_info ADD CONSTRAINT fk_order_info_product_id FOREIGN KEY (product_id) REFERENCES product(id);
|
ALTER TABLE order_info ADD CONSTRAINT fk_order_info_user_id FOREIGN KEY (user_id) REFERENCES user(id);
|
ALTER TABLE order_info ADD CONSTRAINT fk_order_info_provider_id FOREIGN KEY (provider_id) REFERENCES user(id);
|
ALTER TABLE order_detail ADD CONSTRAINT fk_order_detail_order_id FOREIGN KEY (order_id) REFERENCES order_info(order_id);
|
ALTER TABLE order_detail ADD CONSTRAINT fk_order_detail_pricing_id FOREIGN KEY (pricing_id) REFERENCES product_pricing(id);
|
ALTER TABLE order_attachment ADD CONSTRAINT fk_order_attachment_order_id FOREIGN KEY (order_id) REFERENCES order_info(order_id);
|
ALTER TABLE order_approval ADD CONSTRAINT fk_order_approval_order_id FOREIGN KEY (order_id) REFERENCES order_info(order_id);
|
ALTER TABLE order_evaluation ADD CONSTRAINT fk_order_evaluation_order_id FOREIGN KEY (order_id) REFERENCES order_info(order_id);
|
ALTER TABLE points_rule ADD CONSTRAINT fk_points_rule_points_id FOREIGN KEY (points_id) REFERENCES points(id);
|
ALTER TABLE points_rule_detail ADD CONSTRAINT fk_points_rule_detail_rule_id FOREIGN KEY (points_rule_id) REFERENCES points_rule(id);
|
ALTER TABLE points_rule_detail ADD CONSTRAINT fk_points_rule_detail_points_id FOREIGN KEY (points_id) REFERENCES points(id);
|
ALTER TABLE product ADD CONSTRAINT fk_product_provider_id FOREIGN KEY (provider_id) REFERENCES user(id);
|
ALTER TABLE user ADD CONSTRAINT fk_user_unit_id FOREIGN KEY (unit_id) REFERENCES unit(id);
|
|
-- 添加表注释
|
COMMENT ON TABLE product_pricing IS '产品定价表';
|
COMMENT ON TABLE shopping_cart IS '购物车表';
|
COMMENT ON TABLE order_info IS '订单表';
|
COMMENT ON TABLE order_detail IS '订单详情表';
|
COMMENT ON TABLE order_attachment IS '订单附件表';
|
COMMENT ON TABLE order_approval IS '订单审核表';
|
COMMENT ON TABLE order_evaluation IS '订单评价表';
|
COMMENT ON TABLE points IS '积分表';
|
COMMENT ON TABLE points_rule_detail IS '积分规则详情表';
|
COMMENT ON TABLE product IS '产品表';
|
COMMENT ON TABLE user IS '用户表';
|
COMMENT ON TABLE unit IS '单位表';
|
|
-- 插入初始数据
|
INSERT INTO points (points_name, points_code, points_type, effective_start, modifier_id, modifier_name, version, description, status) VALUES
|
('数字化标杆个人积分', 'BENCHMARK_PERSONAL', '个人积分', '2024-01-01', 1, '系统管理员', '1.0.0', '数字化标杆个人积分体系', '启用'),
|
('数字化标杆单位积分', 'BENCHMARK_UNIT', '单位积分', '2024-01-01', 1, '系统管理员', '1.0.0', '数字化标杆单位积分体系', '启用'),
|
('数字化知识个人积分', 'KNOWLEDGE_PERSONAL', '个人积分', '2024-01-01', 1, '系统管理员', '1.0.0', '数字化知识个人积分体系', '启用'),
|
('数字化知识单位积分', 'KNOWLEDGE_UNIT', '单位积分', '2024-01-01', 1, '系统管理员', '1.0.0', '数字化知识单位积分体系', '启用'),
|
('数字化产品个人积分', 'PRODUCT_PERSONAL', '个人积分', '2024-01-01', 1, '系统管理员', '1.0.0', '数字化产品个人积分体系', '启用'),
|
('数字化产品单位积分', 'PRODUCT_UNIT', '单位积分', '2024-01-01', 1, '系统管理员', '1.0.0', '数字化产品单位积分体系', '启用');
|
|
-- 插入测试单位数据
|
INSERT INTO unit (unit_name, unit_code, unit_type, industry, status) VALUES
|
('测试企业', 'TEST_ENTERPRISE', '企业', '信息技术', '正常'),
|
('测试单位', 'TEST_UNIT', '事业单位', '教育', '正常');
|
|
-- 插入测试用户数据
|
INSERT INTO user (username, real_name, user_type, unit_id, status) VALUES
|
('admin', '系统管理员', '个人用户', NULL, '正常'),
|
('test_user', '测试用户', '个人用户', 1, '正常'),
|
('test_provider', '测试提供者', '单位用户', 1, '正常');
|
|
-- 插入测试产品数据
|
INSERT INTO product (product_name, product_code, product_type, category, description, provider_id, provider_name, status, audit_status) VALUES
|
('测试产品1', 'TEST_PRODUCT_001', '软件产品', '企业管理', '这是一个测试产品', 3, '测试提供者', '上架', '审核通过'),
|
('测试产品2', 'TEST_PRODUCT_002', '服务产品', '技术服务', '这是另一个测试产品', 3, '测试提供者', '上架', '审核通过');
|
|
-- 插入测试产品定价数据
|
INSERT INTO product_pricing (suite_name, sales_form, customer_type, price_type, price_unit, price, product_id, product_name, provider_id, provider_name, is_active) VALUES
|
('基础版', '买断', '企业', '积分', '套', 1000, 1, '测试产品1', 3, '测试提供者', true),
|
('专业版', '租赁', '企业', '积分', '套/年', 500, 1, '测试产品1', 3, '测试提供者', true),
|
('企业版', '买断', '企业', '货币', '套', 10000, 2, '测试产品2', 3, '测试提供者', true);
|