Files
water-management-system/sql/V2__payment_enhancement.sql
T

1 line
13 KiB
SQL
Raw Normal View History

-- =============================================\n-- 智慧水务管理系统 - 支付功能增强\n-- 版本: V2\n-- =============================================\n\n-- 增强缴费记录表,添加更多支付渠道信息\nALTER TABLE rev_payment ADD COLUMN IF NOT EXISTS transaction_id VARCHAR(100);\nALTER TABLE rev_payment ADD COLUMN IF NOT EXISTS operator_id BIGINT;\nALTER TABLE rev_payment ADD COLUMN IF NOT EXISTS remark VARCHAR(500);\n\n-- 创建支付方式枚举\nCREATE TABLE IF NOT EXISTS rev_payment_method (\n id BIGSERIAL PRIMARY KEY,\n method_code VARCHAR(20) UNIQUE NOT NULL,\n method_name VARCHAR(50) NOT NULL,\n method_type VARCHAR(20), -- cash/electronic/bank\n enabled BOOLEAN DEFAULT true,\n description TEXT,\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW()\n);\n\n-- 创建支付渠道表\nCREATE TABLE IF NOT EXISTS rev_payment_channel (\n id BIGSERIAL PRIMARY KEY,\n method_code VARCHAR(20) NOT NULL,\n channel_code VARCHAR(30) UNIQUE NOT NULL,\n channel_name VARCHAR(50) NOT NULL,\n channel_type VARCHAR(20), -- pos/app/web/mini/counter\n config JSONB, -- 渠道配置信息\n enabled BOOLEAN DEFAULT true,\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW()\n);\n\n-- 创建支付统计表\nCREATE TABLE IF NOT EXISTS rev_payment_stat (\n id BIGSERIAL PRIMARY KEY,\n date DATE NOT NULL,\n method_code VARCHAR(20),\n channel_code VARCHAR(30),\n payment_count BIGINT DEFAULT 0,\n payment_amount DECIMAL(15,2) DEFAULT 0,\n success_count BIGINT DEFAULT 0,\n success_amount DECIMAL(15,2) DEFAULT 0,\n fail_count BIGINT DEFAULT 0,\n fail_amount DECIMAL(15,2) DEFAULT 0,\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n UNIQUE(date, method_code, channel_code)\n);\n\n-- 添加支付方式枚举数据\nINSERT INTO rev_payment_method (method_code, method_name, method_type, description) VALUES \n('counter', '柜台支付', 'cash', '营业厅柜台现金支付'),\n('pos', 'POS支付', 'electronic', 'POS机刷卡支付'),\n('alipay', '支付宝', 'electronic', '支付宝移动支付'),\n('wechat', '微信支付', 'electronic', '微信移动支付'),\n('bank_transfer', '银行转账', 'bank', '银行转账支付')\nON CONFLICT (method_code) DO NOTHING;\n\n-- 添加支付渠道数据\nINSERT INTO rev_payment_channel (method_code, channel_code, channel_name, channel_type) VALUES \n('counter', 'counter_cash', '柜台现金', 'counter'),\n('counter', 'counter_card', '柜台刷卡', 'counter'),\n('pos', 'pos_counter', '柜台POS', 'pos'),\n('pos', 'pos_mobile', '移动POS', 'pos'),\n('alipay', 'alipay_app', '支付宝APP', 'app'),\n('alipay', 'alipay_wap', '支付宝网页', 'web'),\n('alipay', 'alipay_qr', '支付宝二维码', 'pos'),\n('wechat', 'wechat_app', '微信APP', 'app'),\n('wechat', 'wechat_wap', '微信网页', 'web'),\n('wechat', 'wechat_qr', '微信二维码', 'pos'),\n('wechat', 'wechat_mini', '微信小程序', 'mini'),\n('bank_transfer', 'counter_transfer', '柜台转账', 'counter'),\n('bank_transfer', 'online_transfer', '网上银行', 'web')\nON CONFLICT (channel_code) DO NOTHING;\n\n-- 创建支付流水表\nCREATE TABLE IF NOT EXISTS rev_payment_flow (\n id BIGSERIAL PRIMARY KEY,\n payment_no VARCHAR(50) UNIQUE NOT NULL,\n order_no VARCHAR(100),\n method_code VARCHAR(20),\n channel_code VARCHAR(30),\n amount DECIMAL(10,2) NOT NULL,\n status VARCHAR(20) NOT NULL, -- pending/success/failed/cancelled\n request_data JSONB,\n response_data JSONB,\n error_message TEXT,\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW()\n);\n\n-- 创建账单状态变更日志表\nCREATE TABLE IF NOT EXISTS rev_bill_status_log (\n id BIGSERIAL PRIMARY KEY,\n bill_id BIGINT NOT NULL,\n old_status VARCHAR(20),\n new_status VARCHAR(20) NOT NULL,\n operator_id BIGINT,\n remark TEXT,\n created_at TIMESTAMP DEFAULT NOW(),\n FOREIGN KEY (bill_id) REFERENCES rev_bill(id)\n);\n\n-- 添加索引\nCR