168 lines
7.0 KiB
SQL
168 lines
7.0 KiB
SQL
-- ===================================================================
|
||
-- 模拟邀请数据 SQL - 用于测试 Agent/Invite APIs
|
||
-- ===================================================================
|
||
-- 说明:
|
||
-- 1. 假设当前登录用户 ID = 524(邀请者)
|
||
-- 2. 创建 5 个被邀请用户(user_id: 10001-10005)
|
||
-- 3. 其中 3 个用户有付费订单(user_id: 10001, 10002, 10003)
|
||
-- 4. 2 个用户没有订单(user_id: 10004, 10005)
|
||
-- ===================================================================
|
||
|
||
-- 1. 插入被邀请用户(referer_id = 524,即当前登录用户)
|
||
-- 注意:如果这些 ID 已存在,请先手动修改为其他未使用的 ID
|
||
|
||
-- 用户 10001:有2个已支付订单
|
||
INSERT INTO `user` (
|
||
`id`, `referer_id`, `refer_code`, `password`, `is_admin`,
|
||
`balance`, `commission`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10001, 524, 'MOCK_CODE_01', '$2a$10$mock.hash.for.testing.only.password.bcrypt.hash', 0,
|
||
0, 0, NOW(), NOW()
|
||
) ON DUPLICATE KEY UPDATE `referer_id` = 524;
|
||
|
||
-- 为用户 10001 添加 email 认证方式
|
||
INSERT INTO `user_auth_methods` (`user_id`, `auth_type`, `auth_identifier`, `verified`, `created_at`, `updated_at`)
|
||
VALUES (10001, 'email', 'mock_user_001@test.com', 1, NOW(), NOW())
|
||
ON DUPLICATE KEY UPDATE `auth_identifier` = 'mock_user_001@test.com';
|
||
|
||
-- 用户 10002:有1个已支付订单
|
||
INSERT INTO `user` (
|
||
`id`, `referer_id`, `refer_code`, `password`, `is_admin`,
|
||
`balance`, `commission`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10002, 524, 'MOCK_CODE_02', '$2a$10$mock.hash.for.testing.only.password.bcrypt.hash', 0,
|
||
0, 0, NOW(), NOW()
|
||
) ON DUPLICATE KEY UPDATE `referer_id` = 524;
|
||
|
||
INSERT INTO `user_auth_methods` (`user_id`, `auth_type`, `auth_identifier`, `verified`, `created_at`, `updated_at`)
|
||
VALUES (10002, 'email', 'mock_user_002@test.com', 1, NOW(), NOW())
|
||
ON DUPLICATE KEY UPDATE `auth_identifier` = 'mock_user_002@test.com';
|
||
|
||
-- 用户 10003:有1个已完成订单
|
||
INSERT INTO `user` (
|
||
`id`, `referer_id`, `refer_code`, `password`, `is_admin`,
|
||
`balance`, `commission`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10003, 524, 'MOCK_CODE_03', '$2a$10$mock.hash.for.testing.only.password.bcrypt.hash', 0,
|
||
0, 0, NOW(), NOW()
|
||
) ON DUPLICATE KEY UPDATE `referer_id` = 524;
|
||
|
||
INSERT INTO `user_auth_methods` (`user_id`, `auth_type`, `auth_identifier`, `verified`, `created_at`, `updated_at`)
|
||
VALUES (10003, 'email', 'mock_user_003@test.com', 1, NOW(), NOW())
|
||
ON DUPLICATE KEY UPDATE `auth_identifier` = 'mock_user_003@test.com';
|
||
|
||
-- 用户 10004:没有订单(历史邀请但未付费)
|
||
INSERT INTO `user` (
|
||
`id`, `referer_id`, `refer_code`, `password`, `is_admin`,
|
||
`balance`, `commission`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10004, 524, 'MOCK_CODE_04', '$2a$10$mock.hash.for.testing.only.password.bcrypt.hash', 0,
|
||
0, 0, NOW(), NOW()
|
||
) ON DUPLICATE KEY UPDATE `referer_id` = 524;
|
||
|
||
INSERT INTO `user_auth_methods` (`user_id`, `auth_type`, `auth_identifier`, `verified`, `created_at`, `updated_at`)
|
||
VALUES (10004, 'email', 'mock_user_004@test.com', 1, NOW(), NOW())
|
||
ON DUPLICATE KEY UPDATE `auth_identifier` = 'mock_user_004@test.com';
|
||
|
||
-- 用户 10005:没有订单(历史邀请但未付费)
|
||
INSERT INTO `user` (
|
||
`id`, `referer_id`, `refer_code`, `password`, `is_admin`,
|
||
`balance`, `commission`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10005, 524, 'MOCK_CODE_05', '$2a$10$mock.hash.for.testing.only.password.bcrypt.hash', 0,
|
||
0, 0, NOW(), NOW()
|
||
) ON DUPLICATE KEY UPDATE `referer_id` = 524;
|
||
|
||
INSERT INTO `user_auth_methods` (`user_id`, `auth_type`, `auth_identifier`, `verified`, `created_at`, `updated_at`)
|
||
VALUES (10005, 'email', 'mock_user_005@test.com', 1, NOW(), NOW())
|
||
ON DUPLICATE KEY UPDATE `auth_identifier` = 'mock_user_005@test.com';
|
||
|
||
|
||
|
||
-- ===================================================================
|
||
-- 2. 插入订单数据
|
||
-- status: 2 = Paid(已支付), 5 = Finished(已完成)
|
||
-- ===================================================================
|
||
|
||
-- 订单 1:用户 10001,已支付,金额 $9.99,佣金 $0.99
|
||
INSERT INTO `order` (
|
||
`user_id`, `order_no`, `type`, `status`, `amount`, `commission`, `quantity`,
|
||
`payment_id`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10001, 'MOCK_ORDER_001', 1, 2, 999, 99, 1,
|
||
1, DATE_SUB(NOW(), INTERVAL 10 DAY), DATE_SUB(NOW(), INTERVAL 10 DAY)
|
||
);
|
||
|
||
-- 订单 2:用户 10001,已支付,金额 $19.99,佣金 $1.99
|
||
INSERT INTO `order` (
|
||
`user_id`, `order_no`, `type`, `status`, `amount`, `commission`, `quantity`,
|
||
`payment_id`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10001, 'MOCK_ORDER_002', 1, 2, 1999, 199, 1,
|
||
1, DATE_SUB(NOW(), INTERVAL 5 DAY), DATE_SUB(NOW(), INTERVAL 5 DAY)
|
||
);
|
||
|
||
-- 订单 3:用户 10002,已支付,金额 $29.99,佣金 $2.99
|
||
INSERT INTO `order` (
|
||
`user_id`, `order_no`, `type`, `status`, `amount`, `commission`, `quantity`,
|
||
`payment_id`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10002, 'MOCK_ORDER_003', 1, 2, 2999, 299, 1,
|
||
1, DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_SUB(NOW(), INTERVAL 3 DAY)
|
||
);
|
||
|
||
-- 订单 4:用户 10003,已完成,金额 $49.99,佣金 $4.99
|
||
INSERT INTO `order` (
|
||
`user_id`, `order_no`, `type`, `status`, `amount`, `commission`, `quantity`,
|
||
`payment_id`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10003, 'MOCK_ORDER_004', 1, 5, 4999, 499, 1,
|
||
1, DATE_SUB(NOW(), INTERVAL 1 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY)
|
||
);
|
||
|
||
-- 订单 5:用户 10001,待支付(status=1,不会被统计)
|
||
INSERT INTO `order` (
|
||
`user_id`, `order_no`, `type`, `status`, `amount`, `quantity`,
|
||
`payment_id`, `created_at`, `updated_at`
|
||
) VALUES (
|
||
10001, 'MOCK_ORDER_005', 1, 1, 999, 1,
|
||
1, NOW(), NOW()
|
||
);
|
||
|
||
|
||
-- ===================================================================
|
||
-- 3. 验证查询
|
||
-- ===================================================================
|
||
|
||
-- 查询当前用户(524)的邀请统计
|
||
-- 应返回:
|
||
-- - friendlyCount: 3 (user_id 10001, 10002, 10003 有已支付/完成订单)
|
||
-- - historyCount: 5 (user_id 10001-10005 都是被邀请用户)
|
||
SELECT
|
||
(SELECT COUNT(*) FROM user WHERE referer_id = 524
|
||
AND EXISTS (SELECT 1 FROM `order` o WHERE o.user_id = user.id AND o.status IN (2, 5))
|
||
) as friendlyCount,
|
||
(SELECT COUNT(*) FROM user WHERE referer_id = 524) as historyCount;
|
||
|
||
-- 查询销售记录(分页查询,前10条)
|
||
-- 应返回 4 条记录(MOCK_ORDER_001 到 MOCK_ORDER_004)
|
||
SELECT
|
||
o.amount,
|
||
UNIX_TIMESTAMP(o.created_at) * 1000 as created_at,
|
||
u.id as user_id,
|
||
COALESCE(am.auth_identifier, 'no_email') as user_email
|
||
FROM `order` o
|
||
JOIN user u ON o.user_id = u.id
|
||
LEFT JOIN user_auth_methods am ON am.user_id = u.id AND am.auth_type = 'email'
|
||
WHERE u.referer_id = 524 AND o.status IN (2, 5)
|
||
ORDER BY o.created_at DESC
|
||
LIMIT 10 OFFSET 0;
|
||
|
||
|
||
|
||
-- ===================================================================
|
||
-- 清理命令(如需删除测试数据,请执行以下语句)
|
||
-- ===================================================================
|
||
-- DELETE FROM `order` WHERE order_no LIKE 'MOCK_ORDER_%';
|
||
-- DELETE FROM `user` WHERE id BETWEEN 10001 AND 10005;
|