|
|
@@ -3893,6 +3893,93 @@ try {
|
|
|
ensureColumn("products", "category_id", "BIGINT COMMENT '商品类目ID'");
|
|
|
ensureColumn("products", "distribution_system_id", "BIGINT COMMENT '分销体系ID'");
|
|
|
|
|
|
+ // 迁移33: 创建供应商分销体系表 + product_orders扩展字段
|
|
|
+ ensureColumn("product_orders", "supply_system_id", "BIGINT COMMENT '所属供应商体系ID'");
|
|
|
+ ensureColumn("product_orders", "supplier_id", "BIGINT COMMENT '收款供应商用户ID'");
|
|
|
+ ensureColumn("product_orders", "supply_commission", "INT COMMENT '分销佣金(分)'");
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("ALTER TABLE product_orders ADD KEY idx_supply_system_id (supply_system_id)");
|
|
|
+ log.info("已添加idx_supply_system_id索引到product_orders表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("添加idx_supply_system_id索引可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS supply_system (" +
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
+ "name VARCHAR(100) NOT NULL COMMENT '体系名称', " +
|
|
|
+ "admin_id BIGINT NOT NULL COMMENT '管理员用户ID', " +
|
|
|
+ "settlement_period_days INT NOT NULL DEFAULT 30 COMMENT '账期(天)', " +
|
|
|
+ "platform_profit_rate DECIMAL(5,2) NOT NULL DEFAULT 0 COMMENT '平台留利比例(%)', " +
|
|
|
+ "description VARCHAR(500) COMMENT '描述', " +
|
|
|
+ "status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active/disabled', " +
|
|
|
+ "created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
|
|
|
+ "KEY idx_admin_id (admin_id)" +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商体系'");
|
|
|
+ log.info("已创建supply_system表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建supply_system表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS supply_system_member (" +
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
+ "system_id BIGINT NOT NULL COMMENT '体系ID', " +
|
|
|
+ "user_id BIGINT NOT NULL COMMENT '用户ID', " +
|
|
|
+ "role VARCHAR(20) NOT NULL DEFAULT 'member' COMMENT '角色: admin/member', " +
|
|
|
+ "status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active/inactive', " +
|
|
|
+ "joined_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "UNIQUE KEY uk_system_user (system_id, user_id), " +
|
|
|
+ "KEY idx_user_id (user_id)" +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='体系成员'");
|
|
|
+ log.info("已创建supply_system_member表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建supply_system_member表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS supply_settlement (" +
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
+ "system_id BIGINT NOT NULL COMMENT '体系ID', " +
|
|
|
+ "period_start DATE NOT NULL COMMENT '结算周期开始', " +
|
|
|
+ "period_end DATE NOT NULL COMMENT '结算周期结束', " +
|
|
|
+ "total_sales INT NOT NULL DEFAULT 0 COMMENT '销售总额(分)', " +
|
|
|
+ "platform_profit INT NOT NULL DEFAULT 0 COMMENT '平台留利金额(分)', " +
|
|
|
+ "supplier_payout INT NOT NULL DEFAULT 0 COMMENT '供应商实付(分)', " +
|
|
|
+ "status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/settled', " +
|
|
|
+ "settled_at DATETIME COMMENT '结算时间', " +
|
|
|
+ "remark VARCHAR(500) COMMENT '备注', " +
|
|
|
+ "created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "KEY idx_system_id (system_id), " +
|
|
|
+ "KEY idx_period (period_start, period_end)" +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算记录'");
|
|
|
+ log.info("已创建supply_settlement表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建supply_settlement表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS supply_settlement_detail (" +
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
+ "settlement_id BIGINT NOT NULL COMMENT '结算ID', " +
|
|
|
+ "order_id BIGINT NOT NULL COMMENT '订单ID', " +
|
|
|
+ "order_no VARCHAR(64) NOT NULL COMMENT '订单号', " +
|
|
|
+ "product_name VARCHAR(200) NOT NULL COMMENT '商品名称', " +
|
|
|
+ "amount INT NOT NULL COMMENT '订单金额(分)', " +
|
|
|
+ "platform_fee INT NOT NULL COMMENT '平台留利(分)', " +
|
|
|
+ "supplier_id BIGINT COMMENT '收款供应商用户ID', " +
|
|
|
+ "supplier_name VARCHAR(100) COMMENT '收款供应商名称', " +
|
|
|
+ "payout INT NOT NULL COMMENT '供应商实付(分)', " +
|
|
|
+ "created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "KEY idx_settlement_id (settlement_id), " +
|
|
|
+ "KEY idx_order_id (order_id)" +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算明细'");
|
|
|
+ log.info("已创建supply_settlement_detail表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建supply_settlement_detail表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
// 迁移: growth_records表添加来源类型/去重/补充字段
|
|
|
try {
|
|
|
jdbcTemplate.execute("ALTER TABLE growth_records ADD COLUMN source_type VARCHAR(20) DEFAULT 'manual' COMMENT '来源类型: manual/platform_purchase/self_upload/supplement'");
|