-- 客户营销模块:裂变 / 会员等级 / 优惠券 / 推荐分成 -- 前置约定(见 docs/客户裂变与营销体系设计方案.md §2、§24): -- 1. 子账号不参与营销,一律归主客户 -- 2. MemberLevel 替换 CustomerGroup -- 3. CommissionBalance 独立字段,可提现或转余额 -- 4. 默认分成:实付每 1000 元 → 2 元(0.2%) -- 表结构遵循 docs/oms系统设计-050801.md §3.1.2(ConcurrencyStamp 固定默认值,禁止 UUID()) -- --------------------------------------------------------------------------- -- 1. t_customer 扩展 -- --------------------------------------------------------------------------- SET @col_exists := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_customer' AND COLUMN_NAME = 'ReferrerCustomerId' ); SET @sql := IF(@col_exists = 0, 'ALTER TABLE `t_customer` ADD COLUMN `ReferrerCustomerId` INT NULL COMMENT ''引荐人主客户Id → t_customer.Id'' AFTER `ParentCustomerId`, ADD COLUMN `ReferralBindTime` DATETIME NULL COMMENT ''引荐绑定时间'' AFTER `ReferrerCustomerId`, ADD COLUMN `ReferralChannel` VARCHAR(32) NULL COMMENT ''引荐渠道 link/qrcode/manual'' AFTER `ReferralBindTime`, ADD COLUMN `MemberLevelId` INT NULL COMMENT ''会员等级Id → t_member_level.Id'' AFTER `CustomerGroup`, ADD COLUMN `CommissionBalance` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT ''可提现佣金余额'' AFTER `Balance`, ADD KEY `idx_cus_referrer` (`ReferrerCustomerId`), ADD KEY `idx_cus_member_level` (`MemberLevelId`)', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- --------------------------------------------------------------------------- -- 2. 引荐码 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `t_customer_referral_code` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '主客户Id → t_customer.Id', `InviteCode` VARCHAR(16) NOT NULL COMMENT '邀请短码,全局唯一', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'ReferralCodeStatus:0=Disabled,1=Enabled', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_referral_invite_code` (`InviteCode`), UNIQUE KEY `uk_referral_customer` (`CustomerId`) ) COMMENT='客户引荐码(主客户)'; -- --------------------------------------------------------------------------- -- 3. 会员等级 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `t_member_level` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `LevelCode` VARCHAR(32) NOT NULL COMMENT '等级编码,唯一', `LevelName` VARCHAR(64) NOT NULL COMMENT '等级名称', `MinPoints` INT NOT NULL DEFAULT 0 COMMENT '升级所需累计积分', `PriceTierKey` VARCHAR(32) NOT NULL COMMENT '价区键,对应卖价 CustomerGroupValues JSON 键', `ExtraDiscountRate` DECIMAL(8,4) NOT NULL DEFAULT 0.0000 COMMENT '额外折扣率,如 0.03=97折', `Sort` INT NOT NULL DEFAULT 0 COMMENT '排序,越小越低', `IconUrl` VARCHAR(255) NULL COMMENT '等级图标', `BenefitDesc` VARCHAR(512) NULL COMMENT '权益说明', `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None,1=Disabled,2=Enabled', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_member_level_code` (`LevelCode`), KEY `idx_member_level_sort` (`Sort`, `Status`) ) COMMENT='会员等级配置'; CREATE TABLE IF NOT EXISTS `t_customer_points_account` ( `Id` INT NOT NULL AUTO_INCREMENT, `CustomerId` INT NOT NULL COMMENT '主客户Id', `TotalPoints` INT NOT NULL DEFAULT 0 COMMENT '累计积分(含已消耗,用于定级)', `AvailablePoints` INT NOT NULL DEFAULT 0 COMMENT '可用积分', `Version` INT NOT NULL DEFAULT 0 COMMENT '乐观锁', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_points_customer` (`CustomerId`) ) COMMENT='客户积分账户(主客户)'; CREATE TABLE IF NOT EXISTS `t_customer_points_flow` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '主客户Id', `ChangeType` TINYINT NOT NULL COMMENT 'PointsChangeType:1=Earn,2=Consume,3=Adjust,4=RefundClawback', `Points` INT NOT NULL COMMENT '变动积分,正增负减', `BizType` VARCHAR(32) NOT NULL COMMENT 'orderPay/refund/adminAdjust 等', `BizId` INT NULL, `BizNo` VARCHAR(64) NULL, `Remark` VARCHAR(512) NULL, `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_points_flow_customer_time` (`CustomerId`, `CreateTime`), KEY `idx_points_flow_biz` (`BizType`, `BizId`) ) COMMENT='积分流水'; CREATE TABLE IF NOT EXISTS `t_member_points_rule` ( `Id` INT NOT NULL AUTO_INCREMENT, `RuleName` VARCHAR(64) NOT NULL COMMENT '规则名称', `PointsPerYuan` DECIMAL(10,4) NOT NULL DEFAULT 1.0000 COMMENT '实付每1元得积分', `FirstOrderMultiplier` DECIMAL(6,2) NOT NULL DEFAULT 1.00 COMMENT '首单积分倍数', `MaxPointsPerOrder` INT NOT NULL DEFAULT 10000 COMMENT '单笔积分上限', `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None,1=Disabled,2=Enabled', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`) ) COMMENT='积分获取规则(全局单条有效)'; -- --------------------------------------------------------------------------- -- 4. 优惠券 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `t_coupon_template` ( `Id` INT NOT NULL AUTO_INCREMENT, `TemplateCode` VARCHAR(32) NOT NULL COMMENT '券模板编码', `TemplateName` VARCHAR(128) NOT NULL COMMENT '券名称', `CouponType` VARCHAR(32) NOT NULL COMMENT 'fixed_off/percent_off/direct_off/shipping_off', `FaceValue` DECIMAL(18,2) NULL COMMENT '面额(满减/立减)', `DiscountRate` DECIMAL(8,4) NULL COMMENT '折扣率,如0.95', `MaxDiscountAmount` DECIMAL(18,2) NULL COMMENT '折扣券封顶', `MinOrderAmount` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '使用门槛', `TotalQuantity` INT NOT NULL DEFAULT 0 COMMENT '发放总量,0=不限', `IssuedQuantity` INT NOT NULL DEFAULT 0 COMMENT '已发放数量', `PerCustomerLimit` INT NOT NULL DEFAULT 1 COMMENT '每客户领取上限', `ValidType` TINYINT NOT NULL DEFAULT 1 COMMENT '1=固定日期,2=领取后N天', `ValidStartTime` DATETIME NULL, `ValidEndTime` DATETIME NULL, `ValidDaysAfterReceive` INT NULL COMMENT '领取后有效天数', `ApplyScopeJson` JSON NULL COMMENT '适用产品/国家等 JSON', `GrantChannel` VARCHAR(32) NOT NULL DEFAULT 'manual' COMMENT 'manual/register/referral/level/activity', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'CouponTemplateStatus:0=Draft,1=Active,2=Ended', `Remark` VARCHAR(512) NULL, `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_coupon_template_code` (`TemplateCode`), KEY `idx_coupon_template_status` (`Status`, `ValidEndTime`) ) COMMENT='优惠券模板'; CREATE TABLE IF NOT EXISTS `t_coupon_instance` ( `Id` INT NOT NULL AUTO_INCREMENT, `TemplateId` INT NOT NULL COMMENT '→ t_coupon_template.Id', `CustomerId` INT NOT NULL COMMENT '主客户Id', `CouponCode` VARCHAR(32) NOT NULL COMMENT '券实例码', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'CouponInstanceStatus:1=Available,2=Locked,3=Used,4=Expired', `ReceiveTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `ValidStartTime` DATETIME NOT NULL, `ValidEndTime` DATETIME NOT NULL, `UseTime` DATETIME NULL, `OrderId` INT NULL COMMENT '核销订单Id', `LockExpireTime` DATETIME NULL COMMENT '下单预占过期', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_coupon_instance_code` (`CouponCode`), KEY `idx_coupon_instance_customer_status` (`CustomerId`, `Status`), KEY `idx_coupon_instance_order` (`OrderId`) ) COMMENT='客户优惠券实例'; -- --------------------------------------------------------------------------- -- 5. 推荐分成 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `t_referral_commission_rule` ( `Id` INT NOT NULL AUTO_INCREMENT, `RuleName` VARCHAR(64) NOT NULL DEFAULT '默认分成规则', `CommissionMode` VARCHAR(32) NOT NULL DEFAULT 'per_amount' COMMENT 'per_amount=每满X元得Y元', `BaseAmount` DECIMAL(18,2) NOT NULL DEFAULT 1000.00 COMMENT '基数金额', `CommissionAmount` DECIMAL(18,2) NOT NULL DEFAULT 2.00 COMMENT '每基数分成金额', `FreezeDays` INT NOT NULL DEFAULT 7 COMMENT '派送成功后的结算冻结天数', `SettleTriggerOrderStatus` VARCHAR(32) NOT NULL DEFAULT 'deliverySuccess' COMMENT '允许结算的订单状态,固定 deliverySuccess', `MonthlyCap` DECIMAL(18,2) NULL COMMENT '引荐人单月分成封顶,NULL=不限', `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None,1=Disabled,2=Enabled', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`) ) COMMENT='引荐分成规则'; CREATE TABLE IF NOT EXISTS `t_referral_commission_detail` ( `Id` INT NOT NULL AUTO_INCREMENT, `ReferrerCustomerId` INT NOT NULL COMMENT '引荐人主客户Id', `RefereeCustomerId` INT NOT NULL COMMENT '被引荐主客户Id', `OrderId` INT NOT NULL COMMENT '订单Id', `OrderNo` VARCHAR(64) NOT NULL COMMENT '运单号快照', `BasePayableAmount` DECIMAL(18,2) NOT NULL COMMENT '分成基数(实付)', `CommissionAmount` DECIMAL(18,2) NOT NULL COMMENT '分成金额', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'CommissionStatus:1=Pending,2=Settled,3=Cancelled', `EligibleTime` DATETIME NULL COMMENT '订单达到派送成功时间,分成计算触发点', `SettleTime` DATETIME NULL COMMENT '入账 CommissionBalance 时间', `RuleSnapshotJson` JSON NULL COMMENT '分成规则快照:BaseAmount/CommissionAmount/FreezeDays/MonthlyCap 等', `CancelReason` VARCHAR(256) NULL, `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_commission_order_referrer` (`OrderId`, `ReferrerCustomerId`), KEY `idx_commission_referrer_status` (`ReferrerCustomerId`, `Status`, `CreateTime`), KEY `idx_commission_referee` (`RefereeCustomerId`) ) COMMENT='引荐分成明细'; CREATE TABLE IF NOT EXISTS `t_commission_withdraw_request` ( `Id` INT NOT NULL AUTO_INCREMENT, `CustomerId` INT NOT NULL COMMENT '主客户Id', `SerialNumber` VARCHAR(64) NOT NULL COMMENT '提现单号', `Amount` DECIMAL(18,2) NOT NULL COMMENT '申请金额', `WithdrawType` TINYINT NOT NULL COMMENT '1=提现到外部,2=转入余额', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'WithdrawStatus:1=Pending,2=Approved,3=Rejected,4=Paid', `Remark` VARCHAR(512) NULL COMMENT '客户备注', `AuditRemark` VARCHAR(512) NULL COMMENT '审核备注', `AuditBy` VARCHAR(32) NULL, `AuditTime` DATETIME NULL, `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_commission_withdraw_serial` (`SerialNumber`), KEY `idx_commission_withdraw_customer` (`CustomerId`, `Status`, `CreateTime`) ) COMMENT='佣金提现/转余额申请'; -- --------------------------------------------------------------------------- -- 5.1 营销审计日志 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `t_marketing_audit_log` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `Action` VARCHAR(64) NOT NULL COMMENT 'grantCoupon/adjustPoints/rebindReferral 等', `OperatorId` INT NOT NULL DEFAULT 0 COMMENT '操作人 mapId', `TargetType` VARCHAR(32) NOT NULL COMMENT 'customer/template/order 等', `TargetId` INT NULL COMMENT '目标主键', `BeforeJson` JSON NULL COMMENT '变更前快照', `AfterJson` JSON NULL COMMENT '变更后快照', `Remark` VARCHAR(512) NULL COMMENT '原因/备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_marketing_audit_action_time` (`Action`, `CreateTime`), KEY `idx_marketing_audit_target` (`TargetType`, `TargetId`) ) COMMENT='营销高危操作审计'; -- --------------------------------------------------------------------------- -- 6. 订单营销快照 -- --------------------------------------------------------------------------- SET @col_exists := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_order' AND COLUMN_NAME = 'MemberLevelId' ); SET @sql := IF(@col_exists = 0, 'ALTER TABLE `t_order` ADD COLUMN `MemberLevelId` INT NULL COMMENT ''下单时会员等级快照'' AFTER `CustomerId`, ADD COLUMN `PriceTierKey` VARCHAR(32) NULL COMMENT ''下单时价区键快照'' AFTER `MemberLevelId`, ADD COLUMN `ReceivableSubtotal` DECIMAL(18,2) NULL COMMENT ''等级价后小计'' AFTER `PriceTierKey`, ADD COLUMN `LevelDiscountAmount` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT ''等级额外折扣额'' AFTER `ReceivableSubtotal`, ADD COLUMN `CouponInstanceId` INT NULL COMMENT ''核销券实例Id'' AFTER `LevelDiscountAmount`, ADD COLUMN `CouponDiscountAmount` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT ''优惠券抵扣额'' AFTER `CouponInstanceId`, ADD COLUMN `PayableAmount` DECIMAL(18,2) NULL COMMENT ''应付实付'' AFTER `CouponDiscountAmount`, ADD KEY `idx_ord_coupon` (`CouponInstanceId`)', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- --------------------------------------------------------------------------- -- 7. 种子:默认会员等级(映射原 CustomerGroup 价区) -- --------------------------------------------------------------------------- INSERT INTO `t_member_level` (`LevelCode`, `LevelName`, `MinPoints`, `PriceTierKey`, `ExtraDiscountRate`, `Sort`, `BenefitDesc`, `Status`, `CreateUserId`) VALUES ('normal', '普通会员', 0, '普通客户', 0.0000, 10, '标准运价', 2, 0), ('silver', '银卡会员', 5000, 'VIP1', 0.0000, 20, 'VIP1 价区', 2, 0), ('gold', '金卡会员', 20000, 'VIP2', 0.0100, 30, 'VIP2 价区 + 额外 1% 折', 2, 0), ('diamond', '钻石会员', 100000, 'VIP3', 0.0200, 40, 'VIP3 价区 + 额外 2% 折', 2, 0) ON DUPLICATE KEY UPDATE `LevelName` = VALUES(`LevelName`), `MinPoints` = VALUES(`MinPoints`), `PriceTierKey` = VALUES(`PriceTierKey`), `ExtraDiscountRate` = VALUES(`ExtraDiscountRate`), `Sort` = VALUES(`Sort`), `BenefitDesc` = VALUES(`BenefitDesc`); -- 主客户 MemberLevelId 迁移(按原 CustomerGroup) UPDATE `t_customer` c LEFT JOIN `t_member_level` ml ON ( (c.CustomerGroup IS NULL OR c.CustomerGroup = 0 OR c.CustomerGroup = 1) AND ml.LevelCode = 'normal' OR (c.CustomerGroup = 2 AND ml.LevelCode = 'silver') OR (c.CustomerGroup = 3 AND ml.LevelCode = 'gold') OR (c.CustomerGroup = 4 AND ml.LevelCode = 'diamond') OR (c.CustomerGroup >= 5 AND ml.LevelCode = 'diamond') ) SET c.MemberLevelId = ml.Id WHERE c.ParentCustomerId IS NULL AND c.MemberLevelId IS NULL AND ml.Id IS NOT NULL; -- 默认积分规则 INSERT INTO `t_member_points_rule` (`RuleName`, `PointsPerYuan`, `FirstOrderMultiplier`, `MaxPointsPerOrder`, `Status`, `CreateUserId`) SELECT '默认积分规则', 1.0000, 1.00, 10000, 2, 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `t_member_points_rule` WHERE `IsDeleted` = 0 LIMIT 1); -- 默认分成规则:每 1000 元 → 2 元 INSERT INTO `t_referral_commission_rule` (`RuleName`, `CommissionMode`, `BaseAmount`, `CommissionAmount`, `FreezeDays`, `Status`, `CreateUserId`) SELECT '默认分成', 'per_amount', 1000.00, 2.00, 7, 2, 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `t_referral_commission_rule` WHERE `IsDeleted` = 0 LIMIT 1);