74 lines
5.6 KiB
SQL
74 lines
5.6 KiB
SQL
-- =============================================================
|
||
-- 平台端推广佣金相关表
|
||
-- yz_platform_commission_rule 佣金规则(按比例 / 固定金额 / 阶梯)
|
||
-- yz_platform_commission_order 佣金单(台账,含发放登记)
|
||
--
|
||
-- 业务约定:
|
||
-- 1. 佣金由平台自有资金支出,与租户收款资金流解耦,不参与分账;
|
||
-- 2. 佣金单在「业务订单支付成功」事件上按启用中的规则生成,状态先为 payable(应付);
|
||
-- 3. 一笔支付单 + 同一推广方只应生成一张佣金单(uk_pay_promoter),
|
||
-- 但 MySQL 唯一索引对 NULL 不去重(delete_time),业务层仍需按 pay_no 查重后再插入;
|
||
-- 4. 金额一律以「分」为单位的 bigint 存储;
|
||
-- 5. 规则修改只影响之后生成的佣金单,历史佣金单保留规则快照字段(rule_name/calc_type)。
|
||
--
|
||
-- 可重复执行(CREATE TABLE IF NOT EXISTS)。
|
||
-- 运行:mysql --default-character-set=utf8mb4 -h<host> -P<port> -u<user> -p <db> < create_platform_commission.sql
|
||
-- =============================================================
|
||
|
||
-- -------------------------------------------------------------
|
||
-- 1. 佣金规则表
|
||
-- -------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `yz_platform_commission_rule` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
|
||
`rule_name` varchar(128) NOT NULL DEFAULT '' COMMENT '规则名称,如「渠道推广-平台使用费 5%」',
|
||
`calc_type` varchar(20) NOT NULL DEFAULT 'percent' COMMENT '计算方式:percent按比例/fixed固定金额/tiered阶梯',
|
||
`value` bigint(20) NOT NULL DEFAULT '0' COMMENT '规则值:percent=百分比×100(5%存500,支持2.5%存250);fixed=固定金额(分);tiered=0且明细见 tier_json',
|
||
`tier_json` text COMMENT '阶梯配置JSON:[{"min":0,"max":1000000,"rate":300}];金额单位为分,max 为 null 表示不限,rate 同为百分比×100',
|
||
`order_type` varchar(32) NOT NULL DEFAULT 'platform_usage' COMMENT '适用订单类型:all全部/platform_usage平台使用费/module_shop模块购买/service_fee服务费',
|
||
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1启用/0停用(停用后新佣金单不再匹配该规则,历史佣金单不受影响)',
|
||
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
|
||
`create_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人ID',
|
||
`create_user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '创建人姓名',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_status` (`status`,`order_type`),
|
||
KEY `idx_delete_time` (`delete_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台推广佣金规则表';
|
||
|
||
-- -------------------------------------------------------------
|
||
-- 2. 佣金单表(台账)
|
||
-- -------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS `yz_platform_commission_order` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
|
||
`commission_no` varchar(40) NOT NULL DEFAULT '' COMMENT '佣金单号,形如 CM202609150001',
|
||
`pay_no` varchar(40) NOT NULL DEFAULT '' COMMENT '关联支付单号(yz_platform_payment_order.pay_no)',
|
||
`out_trade_no` varchar(64) NOT NULL DEFAULT '' COMMENT '关联业务订单号',
|
||
`rule_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '命中的佣金规则ID',
|
||
`rule_name` varchar(128) NOT NULL DEFAULT '' COMMENT '命中规则名称快照',
|
||
`calc_type` varchar(20) NOT NULL DEFAULT '' COMMENT '计算方式快照:percent/fixed/tiered',
|
||
`promoter_id` varchar(64) NOT NULL DEFAULT '' COMMENT '推广方ID(渠道伙伴 / 服务商 / 内部员工)',
|
||
`promoter_name` varchar(128) NOT NULL DEFAULT '' COMMENT '推广方名称',
|
||
`promoter_type` varchar(32) NOT NULL DEFAULT '' COMMENT '推广方类型:channel渠道伙伴/service服务商/staff内部员工',
|
||
`base_amount` bigint(20) NOT NULL DEFAULT '0' COMMENT '计佣基数(分)= 业务订单实付金额',
|
||
`amount` bigint(20) NOT NULL DEFAULT '0' COMMENT '佣金金额(分)',
|
||
`status` varchar(20) NOT NULL DEFAULT 'payable' COMMENT '佣金状态:payable应付/settled已付/tax_processing税务处理中/canceled已作废',
|
||
`pay_method` varchar(20) NOT NULL DEFAULT '' COMMENT '发放方式:bank银行转账/balance余额抵扣/manual人工发放/offset下期抵扣',
|
||
`pay_voucher` varchar(255) NOT NULL DEFAULT '' COMMENT '发放凭证 / 银行流水号',
|
||
`paid_at` datetime DEFAULT NULL COMMENT '发放时间',
|
||
`paid_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '登记发放人ID',
|
||
`paid_user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '登记发放人姓名',
|
||
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_commission_no` (`commission_no`,`delete_time`),
|
||
UNIQUE KEY `uk_pay_promoter` (`pay_no`,`promoter_id`,`delete_time`),
|
||
KEY `idx_out_trade_no` (`out_trade_no`),
|
||
KEY `idx_status` (`status`,`create_time`),
|
||
KEY `idx_promoter` (`promoter_id`,`create_time`),
|
||
KEY `idx_delete_time` (`delete_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台推广佣金单表(台账)';
|