first commit

This commit is contained in:
2025-11-27 13:09:54 +08:00
commit 3440744179
570 changed files with 61861 additions and 0 deletions

View File

@@ -0,0 +1,386 @@
-- ============================================
-- 新代理系统数据表创建脚本
-- 说明:创建新代理系统的所有数据表
-- ============================================
-- ============================================
-- 1. 代理基本信息表
-- ============================================
CREATE TABLE `agent` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`level` tinyint NOT NULL DEFAULT 1 COMMENT '代理等级1=普通2=黄金3=钻石',
`region` varchar(50) DEFAULT NULL COMMENT '区域(可选)',
`mobile` varchar(50) NOT NULL DEFAULT '' COMMENT '手机号(加密)',
`wechat_id` varchar(100) DEFAULT NULL COMMENT '微信号',
`team_leader_id` bigint DEFAULT NULL COMMENT '团队首领ID钻石代理的ID普通/黄金代理指向其团队首领)',
`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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_id` (`user_id`),
KEY `idx_mobile` (`mobile`),
KEY `idx_level` (`level`),
KEY `idx_team_leader_id` (`team_leader_id`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理基本信息表';
-- ============================================
-- 2. 代理钱包表注意agent_audit 表已废弃,新系统通过邀请码直接成为代理,无需审核)
-- ============================================
-- ============================================
CREATE TABLE `agent_wallet` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`balance` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '可用余额',
`frozen_balance` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '冻结余额',
`total_earnings` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '累计收益',
`withdrawn_amount` decimal(10,2) NOT NULL DEFAULT 0.00 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_id` (`agent_id`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理钱包表';
-- ============================================
-- 4. 代理上下级关系表(支持脱离关系)
-- ============================================
CREATE TABLE `agent_relation` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`parent_id` bigint NOT NULL COMMENT '上级代理ID',
`child_id` bigint NOT NULL COMMENT '下级代理ID',
`relation_type` tinyint NOT NULL DEFAULT 1 COMMENT '关系类型1=直接关系2=已脱离(历史记录)',
`detach_reason` varchar(100) DEFAULT NULL COMMENT '脱离原因upgrade=升级脱离',
`detach_time` datetime DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_parent_child_type` (`parent_id`, `child_id`, `relation_type`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_child_id` (`child_id`),
KEY `idx_relation_type` (`relation_type`),
KEY `idx_parent_relation` (`parent_id`, `relation_type`) COMMENT '复合索引:查询有效下级',
KEY `idx_child_relation` (`child_id`, `relation_type`) COMMENT '复合索引:查询有效上级',
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理上下级关系表';
-- ============================================
-- 5. 代理推广链接表
-- ============================================
CREATE TABLE `agent_link` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`link_identifier` varchar(200) NOT NULL COMMENT '推广链接标识(加密)',
`set_price` decimal(10,2) NOT NULL COMMENT '代理设定价格',
`actual_base_price` decimal(10,2) NOT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_link_identifier` (`link_identifier`),
UNIQUE KEY `uk_agent_product_price` (`agent_id`, `product_id`, `set_price`, `del_state`) COMMENT '唯一约束:同一代理、同一产品、同一价格只能有一个有效链接',
KEY `idx_agent_id` (`agent_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理推广链接表';
-- ============================================
-- 6. 代理订单关联表
-- ============================================
CREATE TABLE `agent_order` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`order_id` bigint NOT NULL COMMENT '订单ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`order_amount` decimal(10,2) NOT NULL COMMENT '订单金额(用户实际支付金额,冗余字段)',
`set_price` decimal(10,2) NOT NULL COMMENT '代理设定价格',
`actual_base_price` decimal(10,2) NOT NULL COMMENT '实际底价(基础底价+等级加成)',
`price_cost` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '提价成本((设定价格-提价标准阈值)×提价手续费比例)',
`agent_profit` decimal(10,2) NOT NULL COMMENT '代理收益(设定价格-实际底价-提价成本)',
`process_status` tinyint NOT NULL DEFAULT 0 COMMENT '处理状态0=待处理1=处理成功2=处理失败',
`process_time` datetime DEFAULT NULL COMMENT '处理时间',
`process_remark` varchar(500) DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_id` (`order_id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_process_status` (`process_status`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理订单关联表';
-- ============================================
-- 7. 代理佣金记录表
-- ============================================
CREATE TABLE `agent_commission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`order_id` bigint NOT NULL COMMENT '订单ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`amount` decimal(10,2) NOT NULL COMMENT '佣金金额',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1=已发放2=已冻结3=已取消',
`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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_order_id` (`order_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_status` (`status`),
KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引:查询代理的佣金记录',
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理佣金记录表';
-- ============================================
-- 8. 代理返佣记录表(等级加成返佣)
-- ============================================
CREATE TABLE `agent_rebate` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '获得返佣的代理ID',
`source_agent_id` bigint NOT NULL COMMENT '来源代理ID推广订单的代理',
`order_id` bigint NOT NULL COMMENT '订单ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`rebate_type` tinyint NOT NULL COMMENT '返佣类型1=直接上级返佣2=钻石上级返佣3=黄金上级返佣',
`level_bonus` decimal(10,2) NOT NULL COMMENT '等级加成金额(来源代理的等级加成)',
`rebate_amount` decimal(10,2) NOT NULL COMMENT '返佣金额',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1=已发放2=已冻结3=已取消',
`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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_source_agent_id` (`source_agent_id`),
KEY `idx_order_id` (`order_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_rebate_type` (`rebate_type`),
KEY `idx_status` (`status`),
KEY `idx_order_rebate_type` (`order_id`, `rebate_type`) COMMENT '复合索引:查询订单的返佣明细',
KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引:查询代理的返佣记录',
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理返佣记录表(等级加成返佣)';
-- ============================================
-- 9. 代理升级记录表
-- ============================================
CREATE TABLE `agent_upgrade` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '被升级的代理ID',
`from_level` tinyint NOT NULL COMMENT '原等级1=普通2=黄金3=钻石',
`to_level` tinyint NOT NULL COMMENT '目标等级1=普通2=黄金3=钻石',
`upgrade_type` tinyint NOT NULL COMMENT '升级类型1=自主付费2=钻石升级下级',
`upgrade_fee` decimal(10,2) DEFAULT 0.00 COMMENT '升级费用',
`rebate_amount` decimal(10,2) DEFAULT 0.00 COMMENT '返佣金额(给原直接上级)',
`rebate_agent_id` bigint DEFAULT NULL COMMENT '返佣代理ID原直接上级',
`operator_agent_id` bigint DEFAULT NULL COMMENT '操作代理ID如果是钻石升级下级记录操作者',
`order_no` varchar(100) DEFAULT NULL COMMENT '支付订单号(如果是自主付费)',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1=待处理2=已完成3=已失败',
`remark` varchar(500) DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_rebate_agent_id` (`rebate_agent_id`),
KEY `idx_operator_agent_id` (`operator_agent_id`),
KEY `idx_upgrade_type` (`upgrade_type`),
KEY `idx_status` (`status`),
KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引:查询代理的升级记录',
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理升级记录表';
-- ============================================
-- 10. 代理提现表
-- ============================================
CREATE TABLE `agent_withdrawal` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`withdraw_no` varchar(100) NOT NULL COMMENT '提现单号',
`payee_account` varchar(100) NOT NULL COMMENT '收款账户',
`payee_name` varchar(50) NOT NULL COMMENT '收款人姓名',
`amount` decimal(10,2) NOT NULL COMMENT '提现金额',
`actual_amount` decimal(10,2) NOT NULL COMMENT '实际到账金额(扣除税费后)',
`tax_amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '税费金额',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1=处理中2=成功3=失败',
`remark` varchar(500) DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_withdraw_no` (`withdraw_no`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_status` (`status`),
KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引:查询代理的提现记录',
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理提现表';
-- ============================================
-- 11. 代理系统配置表
-- ============================================
CREATE TABLE `agent_config` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`config_key` varchar(100) NOT NULL COMMENT '配置键',
`config_value` varchar(500) NOT NULL COMMENT '配置值',
`config_type` varchar(50) NOT NULL COMMENT '配置类型price=价格bonus=等级加成upgrade=升级费用rebate=返佣tax=税费',
`description` varchar(500) DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_config_key` (`config_key`),
KEY `idx_config_type` (`config_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理系统配置表';
-- ============================================
-- 12. 代理产品配置表(简化版)
-- ============================================
CREATE TABLE `agent_product_config` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`product_name` varchar(100) NOT NULL COMMENT '产品名称',
`base_price` decimal(10,2) NOT NULL COMMENT '基础底价BasePrice',
`system_max_price` decimal(10,2) NOT NULL COMMENT '系统价格上限SystemMaxPrice',
`price_threshold` decimal(10,2) DEFAULT NULL COMMENT '提价标准阈值PriceThreshold',
`price_fee_rate` decimal(5,4) DEFAULT NULL COMMENT '提价手续费比例PriceFeeRate',
`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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_product_id` (`product_id`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理产品配置表';
-- ============================================
-- 13. 代理实名认证表
-- ============================================
CREATE TABLE `agent_real_name` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`name` varchar(50) NOT NULL COMMENT '真实姓名',
`id_card` varchar(50) NOT NULL COMMENT '身份证号(加密)',
`mobile` varchar(50) NOT NULL COMMENT '手机号(加密)',
`verify_time` datetime DEFAULT NULL COMMENT '验证时间三要素验证通过时间NULL表示未验证',
`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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_id` (`agent_id`),
KEY `idx_verify_time` (`verify_time`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理实名认证表';
-- ============================================
-- 14. 代理提现扣税记录表
-- ============================================
CREATE TABLE `agent_withdrawal_tax` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '代理ID',
`withdrawal_id` bigint NOT NULL COMMENT '提现记录ID',
`year_month` int NOT NULL COMMENT '年月格式YYYYMM',
`withdrawal_amount` decimal(10,2) NOT NULL COMMENT '提现金额',
`taxable_amount` decimal(10,2) NOT NULL COMMENT '应税金额',
`tax_rate` decimal(5,4) NOT NULL COMMENT '税率',
`tax_amount` decimal(10,2) NOT NULL COMMENT '税费金额',
`actual_amount` decimal(10,2) NOT NULL COMMENT '实际到账金额',
`tax_status` tinyint NOT NULL DEFAULT 1 COMMENT '扣税状态1=待扣税2=已扣税3=扣税失败',
`tax_time` datetime DEFAULT NULL COMMENT '扣税时间',
`remark` varchar(500) DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_withdrawal_id` (`withdrawal_id`),
KEY `idx_year_month` (`year_month`),
KEY `idx_tax_status` (`tax_status`),
KEY `idx_agent_year_month` (`agent_id`, `year_month`) COMMENT '复合索引:查询代理的月度扣税记录'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理提现扣税记录表';
-- ============================================
-- 初始化系统配置数据
-- ============================================
INSERT INTO `agent_config` (`config_key`, `config_value`, `config_type`, `description`) VALUES
('base_price', '0.00', 'price', '系统基础底价BasePrice'),
('system_max_price', '9999.99', 'price', '系统价格上限SystemMaxPrice'),
('price_threshold', '0.00', 'price', '提价标准阈值PriceThreshold'),
('price_fee_rate', '0.0000', 'price', '提价手续费比例PriceFeeRate'),
('level_bonus_normal', '6.00', 'bonus', '普通代理等级加成6元'),
('level_bonus_gold', '3.00', 'bonus', '黄金代理等级加成3元'),
('level_bonus_diamond', '0.00', 'bonus', '钻石代理等级加成0元'),
('upgrade_fee_normal_to_gold', '199.00', 'upgrade', '普通→黄金升级费用199元'),
('upgrade_fee_to_diamond', '980.00', 'upgrade', '升级为钻石费用980元'),
('upgrade_rebate_normal_to_gold', '139.00', 'upgrade', '普通→黄金返佣金额139元'),
('upgrade_rebate_to_diamond', '680.00', 'upgrade', '升级为钻石返佣金额680元'),
('direct_parent_amount_diamond', '6.00', 'rebate', '直接上级是钻石的返佣金额6元'),
('direct_parent_amount_gold', '3.00', 'rebate', '直接上级是黄金的返佣金额3元'),
('direct_parent_amount_normal', '2.00', 'rebate', '直接上级是普通的返佣金额2元'),
('max_gold_rebate_amount', '3.00', 'rebate', '黄金代理最大返佣金额3元'),
('tax_rate', '0.0600', 'tax', '提现税率6%');
-- ============================================
-- 15. 代理邀请码表
-- ============================================
CREATE TABLE `agent_invite_code` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` varchar(50) NOT NULL COMMENT '邀请码(唯一)',
`agent_id` bigint DEFAULT NULL COMMENT '发放代理IDNULL表示平台发放的钻石邀请码',
`target_level` tinyint NOT NULL DEFAULT 1 COMMENT '目标等级1=普通2=黄金3=钻石',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '状态0=未使用1=已使用2=已失效(钻石邀请码只能使用一次,普通邀请码可无限使用)',
`used_user_id` bigint DEFAULT NULL COMMENT '使用用户ID',
`used_agent_id` bigint DEFAULT NULL COMMENT '使用代理ID',
`used_time` datetime DEFAULT NULL COMMENT '使用时间',
`expire_time` datetime DEFAULT NULL COMMENT '过期时间(可选)',
`remark` varchar(500) DEFAULT NULL 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 '删除时间',
`del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态0=未删除1=已删除',
`version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_status` (`status`),
KEY `idx_target_level` (`target_level`),
KEY `idx_used_user_id` (`used_user_id`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理邀请码表';
-- ============================================
-- 表创建完成
-- ============================================
-- 执行完成后请使用goctl生成新的Model代码
-- 参考命令见 generate_agent_models.md 文件

View File

@@ -0,0 +1,190 @@
# 生成新代理系统Model说明
## 一、执行数据库迁移
### 1.1 备份数据库(重要!)
```bash
# 备份整个数据库
mysqldump -u root -p your_database > backup_before_migration.sql
# 或者只备份agent相关表
mysqldump -u root -p your_database agent agent_audit agent_closure agent_commission agent_wallet agent_link agent_order agent_rewards agent_membership_config agent_product_config agent_real_name agent_withdrawal agent_withdrawal_tax agent_withdrawal_tax_exemption agent_active_stat agent_platform_deduction agent_commission_deduction agent_membership_recharge_order agent_membership_user_config > agent_tables_backup.sql
```
### 1.2 执行迁移SQL
```bash
# 方式1使用mysql命令行
mysql -u root -p your_database < deploy/sql/agent_system_migration.sql
# 方式2使用数据库客户端工具如Navicat、DBeaver等
# 直接执行 deploy/sql/agent_system_migration.sql 文件
```
## 二、生成Model代码
### 2.1 方式一:使用脚本批量生成(推荐)
**Windows (PowerShell):**
```powershell
# 修改脚本中的数据库配置
# 然后执行需要安装goctl工具
cd deploy/sql
bash generate_agent_models.sh
```
**Linux/Mac:**
```bash
# 修改脚本中的数据库配置
chmod +x deploy/sql/generate_agent_models.sh
cd deploy/sql
./generate_agent_models.sh
```
### 2.2 方式二使用goctl命令逐个生成
```bash
# 1. agent表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 2. agent_audit表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_audit" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 3. agent_wallet表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_wallet" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 4. agent_relation表新表替代agent_closure
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_relation" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 5. agent_link表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_link" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 6. agent_order表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_order" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 7. agent_commission表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_commission" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 8. agent_rebate表新表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_rebate" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 9. agent_upgrade表新表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_upgrade" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 10. agent_withdrawal表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_withdrawal" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 11. agent_config表新表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_config" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 12. agent_product_config表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_product_config" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 13. agent_real_name表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_real_name" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
# 14. agent_withdrawal_tax表
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent_withdrawal_tax" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
```
### 2.3 方式三使用goctl一次性生成所有表
```bash
# 生成所有agent相关表的Model
goctl model mysql datasource -url="root:password@tcp(localhost:3306)/database" -table="agent,agent_audit,agent_wallet,agent_relation,agent_link,agent_order,agent_commission,agent_rebate,agent_upgrade,agent_withdrawal,agent_config,agent_product_config,agent_real_name,agent_withdrawal_tax" -dir="app/main/model" -cache=true --style=goZero --home="./deploy/template"
```
## 三、表结构变化说明
### 3.1 删除的旧表
以下表在新系统中已删除,不再需要:
- `agent_closure` → 被 `agent_relation` 替代
- `agent_commission_deduction` → 新系统不需要
- `agent_rewards` → 新系统不需要
- `agent_membership_config` → 新系统不需要
- `agent_membership_recharge_order` → 新系统不需要
- `agent_membership_user_config` → 新系统不需要
- `agent_platform_deduction` → 新系统不需要
- `agent_active_stat` → 新系统不需要
- `agent_withdrawal_tax_exemption` → 新系统不需要
### 3.2 新增的表
- `agent_relation` - 替代 `agent_closure`,支持关系脱离
- `agent_rebate` - 等级加成返佣记录表
- `agent_upgrade` - 代理升级记录表
- `agent_config` - 代理系统配置表
### 3.3 结构变化的表
以下表结构有变化需要重新生成Model
- `agent` - 等级字段改为数值型,新增 `team_leader_id`
- `agent_audit` - 新增 `ancestor_mobile``audit_user_id` 字段
- `agent_wallet` - 字段保持不变
- `agent_link` - 新增唯一约束
- `agent_order` - 新增 `order_amount``process_status` 等字段
- `agent_commission` - 字段保持不变
- `agent_product_config` - 字段保持不变
- `agent_real_name` - 新增 `audit_user_id` 字段
- `agent_withdrawal` - 字段保持不变
- `agent_withdrawal_tax` - 字段保持不变
## 四、生成后的文件结构
生成后,会在 `app/main/model` 目录下创建以下文件:
```
app/main/model/
├── agentModel.go # agent表Model自定义方法
├── agentModel_gen.go # agent表Model自动生成
├── agentAuditModel.go # agent_audit表Model自定义方法
├── agentAuditModel_gen.go # agent_audit表Model自动生成
├── agentWalletModel.go # agent_wallet表Model自定义方法
├── agentWalletModel_gen.go # agent_wallet表Model自动生成
├── agentRelationModel.go # agent_relation表Model自定义方法
├── agentRelationModel_gen.go # agent_relation表Model自动生成
├── agentLinkModel.go # agent_link表Model自定义方法
├── agentLinkModel_gen.go # agent_link表Model自动生成
├── agentOrderModel.go # agent_order表Model自定义方法
├── agentOrderModel_gen.go # agent_order表Model自动生成
├── agentCommissionModel.go # agent_commission表Model自定义方法
├── agentCommissionModel_gen.go # agent_commission表Model自动生成
├── agentRebateModel.go # agent_rebate表Model自定义方法
├── agentRebateModel_gen.go # agent_rebate表Model自动生成
├── agentUpgradeModel.go # agent_upgrade表Model自定义方法
├── agentUpgradeModel_gen.go # agent_upgrade表Model自动生成
├── agentWithdrawalModel.go # agent_withdrawal表Model自定义方法
├── agentWithdrawalModel_gen.go # agent_withdrawal表Model自动生成
├── agentConfigModel.go # agent_config表Model自定义方法
├── agentConfigModel_gen.go # agent_config表Model自动生成
├── agentProductConfigModel.go # agent_product_config表Model自定义方法
├── agentProductConfigModel_gen.go # agent_product_config表Model自动生成
├── agentRealNameModel.go # agent_real_name表Model自定义方法
├── agentRealNameModel_gen.go # agent_real_name表Model自动生成
├── agentWithdrawalTaxModel.go # agent_withdrawal_tax表Model自定义方法
└── agentWithdrawalTaxModel_gen.go # agent_withdrawal_tax表Model自动生成
```
## 五、注意事项
1. **备份数据**:执行迁移前务必备份数据库
2. **测试环境**:建议先在测试环境执行,验证无误后再在生产环境执行
3. **代码兼容**生成新Model后需要更新相关业务代码以适配新的表结构
4. **删除旧Model**生成新Model后需要删除旧的Model文件`agentClosureModel.go`
5. **更新ServiceContext**:需要在 `svc/servicecontext.go` 中更新Model初始化代码
## 六、验证
生成Model后请验证
1. 所有新表都有对应的Model文件
2. Model文件可以正常编译
3. 数据库连接正常
4. 基本的CRUD操作可以正常执行

View File

@@ -0,0 +1,70 @@
#!/bin/bash
# ============================================
# 生成新代理系统Model脚本
# 使用goctl工具根据数据库表生成Model代码
# ============================================
# 数据库配置(请根据实际情况修改)
DB_HOST="localhost"
DB_PORT="3306"
DB_USER="root"
DB_PASSWORD="your_password"
DB_NAME="your_database"
# Model输出目录
MODEL_DIR="app/main/model"
# goctl模板目录
TEMPLATE_DIR="./deploy/template"
echo "============================================"
echo "开始生成新代理系统Model..."
echo "============================================"
# 生成各个表的Model
echo "1. 生成 agent Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "2. 生成 agent_audit Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_audit" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "3. 生成 agent_wallet Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_wallet" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "4. 生成 agent_relation Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_relation" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "5. 生成 agent_link Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_link" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "6. 生成 agent_order Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_order" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "7. 生成 agent_commission Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_commission" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "8. 生成 agent_rebate Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_rebate" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "9. 生成 agent_upgrade Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_upgrade" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "10. 生成 agent_withdrawal Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_withdrawal" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "11. 生成 agent_config Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_config" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "12. 生成 agent_product_config Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_product_config" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "13. 生成 agent_real_name Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_real_name" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "14. 生成 agent_withdrawal_tax Model..."
goctl model mysql datasource -url="${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}" -table="agent_withdrawal_tax" -dir="${MODEL_DIR}" -cache=true --style=goZero --home="${TEMPLATE_DIR}"
echo "============================================"
echo "Model生成完成"
echo "============================================"

20
deploy/sql/template.sql Normal file
View File

@@ -0,0 +1,20 @@
CREATE TABLE `` (
`id` bigint NOT NULL AUTO_INCREMENT,
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
`del_state` tinyint NOT NULL DEFAULT '0',
`version` bigint NOT NULL DEFAULT '0' COMMENT '版本号',
/* 业务字段开始 */
`1` [] [DEFAULT ] [COMMENT '字段说明'],
`2` [] [DEFAULT ] [COMMENT '字段说明'],
/* 关联字段 - 软关联 */
`id` bigint [NOT NULL] [DEFAULT '0'] COMMENT '关联到XX表的id',
/* 业务字段结束 */
PRIMARY KEY (`id`),
/* 索引定义 */
UNIQUE KEY `` (``),
KEY `idx_关联字段` (`id`) COMMENT '优化关联查询'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表说明';