-- ============================================================ -- 范氏国香商城 fsgx 改造数据库迁移脚本 -- 执行顺序:按 Step 编号依次执行 -- ============================================================ -- Step 1: eb_store_product 新增报单商品标记字段 -- 注:MySQL 5.7 不支持 ADD COLUMN IF NOT EXISTS,重复执行会报错,已存在时跳过即可 ALTER TABLE `eb_store_product` ADD COLUMN `is_queue_goods` tinyint(1) NOT NULL DEFAULT 0 COMMENT '报单商品:1=是,0=否' AFTER `is_brokerage`; -- Step 1b: eb_store_order 新增报单商品标记(冗余存储,加速佣金周期计数) ALTER TABLE `eb_store_order` ADD COLUMN `is_queue_goods` tinyint(1) NOT NULL DEFAULT 0 COMMENT '报单商品订单:1=是,0=否' AFTER `spread_two_uid`; -- Step 2: eb_user 新增积分字段与不考核字段 ALTER TABLE `eb_user` ADD COLUMN `frozen_points` int(11) NOT NULL DEFAULT 0 COMMENT '待释放积分' AFTER `integral`, ADD COLUMN `available_points` int(11) NOT NULL DEFAULT 0 COMMENT '已释放积分' AFTER `frozen_points`, ADD COLUMN `no_assess` tinyint(1) NOT NULL DEFAULT 0 COMMENT '不考核:1=是,0=否' AFTER `available_points`; -- Step 2b: eb_agent_level 新增直推/伞下奖励积分字段 + 返佣比例展示字段 ALTER TABLE `eb_agent_level` ADD COLUMN `direct_reward_points` int(11) NOT NULL DEFAULT 0 COMMENT '直推奖励积分' AFTER `two_brokerage`, ADD COLUMN `umbrella_reward_points` int(11) NOT NULL DEFAULT 0 COMMENT '伞下奖励积分' AFTER `direct_reward_points`, ADD COLUMN `one_brokerage_ratio` decimal(5,2) NOT NULL DEFAULT 0 COMMENT '一级返佣比例(上浮后)' AFTER `umbrella_reward_points`, ADD COLUMN `two_brokerage_ratio` decimal(5,2) NOT NULL DEFAULT 0 COMMENT '二级返佣比例(上浮后)' AFTER `one_brokerage_ratio`; -- Step 3: eb_system_timer 新增每日积分释放定时任务 -- type=4 表示"每天",cycle 格式为"小时/分钟"(如 2/0 = 凌晨2点整) -- 表中无 status 字段,is_open 控制是否启用;mark 无唯一索引,先删再插保证幂等 DELETE FROM `eb_system_timer` WHERE `mark` = 'fsgx_release_frozen_points'; INSERT INTO `eb_system_timer` (`name`, `title`, `mark`, `type`, `cycle`, `is_open`, `add_time`) VALUES ('fsgx每日积分释放', 'fsgx每日释放待释放积分(0.4‰转入可用积分)', 'fsgx_release_frozen_points', 4, '2/0', 1, UNIX_TIMESTAMP()); -- Step 4: eb_system_config 新增返佣周期配置键和提现手续费 -- 实际表字段:value(非 config_value)、config_tab_id(非 group_id),desc 为保留字需加反引号 -- 使用 DELETE+INSERT 保证幂等 DELETE FROM `eb_system_config` WHERE `menu_name` IN ('brokerage_cycle_count','brokerage_cycle_rates','brokerage_scope','brokerage_timing','extract_fee'); -- value 字段存储 JSON 编码后的值(与 save_basics 的 json_encode 行为一致) -- 字符串类型:用双引号括起来,如 "queue_only";数字直接写;数组写 JSON 数组 INSERT INTO `eb_system_config` (`menu_name`, `info`, `config_tab_id`, `type`, `input_type`, `value`, `desc`, `sort`, `status`) VALUES ('brokerage_cycle_count', '佣金周期人数', 0, 'text', 'input', '3', '推荐N人为一个周期,循环计算各档佣金比例', 10, 1), ('brokerage_cycle_rates', '佣金分档比例(JSON)', 0, 'text', 'input', '[20,30,50]', '各档佣金比例JSON数组,如[20,30,50]表示20%/30%/50%', 9, 1), ('brokerage_scope', '返佣范围', 0, 'text', 'input', '"queue_only"', '返佣范围:all=所有商品 queue_only=仅报单商品', 8, 1), ('brokerage_timing', '佣金发放时机', 0, 'text', 'input', '"on_pay"', '发放时机:on_pay=支付即发 on_confirm=确认收货后', 7, 1), ('extract_fee', '提现手续费率(%)', 0, 'text', 'input', '7', '提现时扣除的手续费百分比,默认7%', 6, 1); -- Step 5: 新建公排池表和积分释放日志表 CREATE TABLE IF NOT EXISTS `eb_queue_pool` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL DEFAULT 0, `order_id` varchar(50) NOT NULL DEFAULT '', `amount` decimal(10,2) NOT NULL DEFAULT 3600.00, `queue_no` int(11) NOT NULL DEFAULT 0, `status` tinyint(1) NOT NULL DEFAULT 0, `refund_time` int(11) NOT NULL DEFAULT 0, `trigger_batch` int(11) NOT NULL DEFAULT 0, `add_time` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `uniq_queue_no` (`queue_no`), INDEX `idx_uid` (`uid`), INDEX `idx_status_add_time` (`status`, `add_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公排池'; CREATE TABLE IF NOT EXISTS `eb_points_release_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL DEFAULT 0, `points` int(11) NOT NULL DEFAULT 0, `pm` tinyint(1) NOT NULL DEFAULT 1, `type` varchar(50) NOT NULL DEFAULT '', `title` varchar(255) NOT NULL DEFAULT '', `mark` varchar(500) NOT NULL DEFAULT '', `status` varchar(30) NOT NULL DEFAULT 'frozen', `order_id` varchar(50) NOT NULL DEFAULT '', `release_date` date DEFAULT NULL, `add_time` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), INDEX `idx_uid_type` (`uid`, `type`), INDEX `idx_uid_add_time` (`uid`, `add_time`), INDEX `idx_release_date` (`release_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分释放明细日志'; -- Step 6: 更新分销等级升级任务配置(对齐验收清单) DELETE FROM `eb_agent_level_task`; INSERT INTO `eb_agent_level_task` (`level_id`, `name`, `type`, `number`, `is_must`, `sort`, `status`, `is_del`, `add_time`) VALUES (1, '直推人数>=1人', 8, 1, 1, 1, 1, 0, UNIX_TIMESTAMP()), (2, '直推人数>=3人', 8, 3, 1, 1, 1, 0, UNIX_TIMESTAMP()), (3, '直推人数>=10人', 8, 10, 1, 1, 1, 0, UNIX_TIMESTAMP()), (3, '伞下队列订单>=30', 7, 30, 1, 2, 1, 0, UNIX_TIMESTAMP()), (4, '直推人数>=30人', 8, 30, 1, 1, 1, 0, UNIX_TIMESTAMP()), (4, '伞下队列订单>=100',7, 100, 1, 2, 1, 0, UNIX_TIMESTAMP());