-- 交易模块数据库表创建脚本 -- 创建时间: 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);