93 行
4.9 KiB
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());
|