文件
xionggeshop/addons/shopro/upgrade_payment_split.sql

93 行
4.9 KiB
SQL

-- 微信支付分账模块
-- 执行前请将 fa_ 替换为实际表前缀
CREATE TABLE IF NOT EXISTS `fa_shopro_split_receiver` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_type` enum('platform','promoter','regional_agent') NOT NULL COMMENT '角色类型',
`role_id` int(11) NOT NULL DEFAULT 0 COMMENT '关联ID',
`receiver_type` enum('MERCHANT_ID','PERSONAL_OPENID') NOT NULL DEFAULT 'PERSONAL_OPENID' COMMENT '接收方类型',
`receiver_account` varchar(64) NOT NULL COMMENT '商户号或openid',
`receiver_name` varchar(100) DEFAULT NULL COMMENT '接收方名称',
`relation_type` varchar(30) DEFAULT 'USER' COMMENT '关系类型',
`wx_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=待同步,1=已同步,2=同步失败',
`wx_message` varchar(255) DEFAULT NULL COMMENT '微信返回信息',
`status` enum('normal','forbidden') NOT NULL DEFAULT 'normal',
`createtime` int(10) NOT NULL,
`updatetime` int(10) NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `role_type` (`role_type`,`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分账接收方';
CREATE TABLE IF NOT EXISTS `fa_shopro_split_rule` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_type` enum('platform','promoter','regional_agent') NOT NULL COMMENT '角色类型',
`rule_type` enum('rate','money') NOT NULL DEFAULT 'rate' COMMENT '规则类型',
`rule_value` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '比例或金额',
`priority` int(11) NOT NULL DEFAULT 0 COMMENT '优先级',
`max_rate` decimal(5,2) NOT NULL DEFAULT 30.00 COMMENT '最大比例',
`status` enum('normal','forbidden') NOT NULL DEFAULT 'normal',
`createtime` int(10) NOT NULL,
`updatetime` int(10) NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `role_type` (`role_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分账规则';
CREATE TABLE IF NOT EXISTS `fa_shopro_split_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) NOT NULL COMMENT '订单ID',
`order_sn` varchar(50) NOT NULL COMMENT '订单号',
`transaction_id` varchar(64) DEFAULT NULL COMMENT '微信支付单号',
`out_order_no` varchar(64) NOT NULL COMMENT '商户分账单号',
`total_amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '可分账金额',
`split_amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '已分账金额',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=待分账,1=分账中,2=成功,3=部分成功,4=失败',
`wx_result` text COMMENT '微信返回',
`retry_count` int(11) NOT NULL DEFAULT 0,
`next_retry_time` int(10) DEFAULT NULL,
`createtime` int(10) NOT NULL,
`updatetime` int(10) NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `out_order_no` (`out_order_no`) USING BTREE,
KEY `order_id` (`order_id`) USING BTREE,
KEY `status` (`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分账订单';
CREATE TABLE IF NOT EXISTS `fa_shopro_split_order_receiver` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`split_order_id` int(11) NOT NULL,
`receiver_id` int(11) NOT NULL DEFAULT 0,
`role_type` varchar(30) NOT NULL,
`amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '分账金额(元)',
`description` varchar(80) DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=待分账,1=成功,2=失败',
`wx_detail_id` varchar(64) DEFAULT NULL,
`fail_reason` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `split_order_id` (`split_order_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分账明细';
CREATE TABLE IF NOT EXISTS `fa_shopro_split_config` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`value` varchar(2500) DEFAULT NULL,
`group` varchar(50) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分账配置';
INSERT IGNORE INTO `fa_shopro_split_config` (`name`, `value`, `group`, `description`) VALUES
('split_enable', '0', 'basic', '分账总开关'),
('split_mode', 'wechat', 'basic', '分账模式:wallet=仅钱包,wechat=仅微信分账,both=两者'),
('split_timing', 'payed', 'basic', '分账时机:payed/confirm/finish'),
('split_max_rate', '30', 'basic', '全局最大分账比例(%)'),
('split_retry_max', '5', 'basic', '最大重试次数'),
('split_retry_interval', '300', 'basic', '重试间隔(秒)'),
('platform_receiver_account', '', 'platform', '平台接收方商户号'),
('platform_receiver_name', '平台', 'platform', '平台接收方名称');
INSERT IGNORE INTO `fa_shopro_split_rule` (`role_type`, `rule_type`, `rule_value`, `priority`, `max_rate`, `status`, `createtime`, `updatetime`) VALUES
('regional_agent', 'rate', 1.00, 30, 30.00, 'normal', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('promoter', 'rate', 5.00, 20, 30.00, 'normal', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('platform', 'rate', 0.00, 10, 30.00, 'normal', UNIX_TIMESTAMP(), UNIX_TIMESTAMP());