feat(spec-3): complete section 3.1/3.2/3.3 activity verify settlement, role_flags, and distribution_relations

这个提交包含在:
xcbyy
2026-10-14 11:41:03 +08:00
父节点 8fc4d601c3
当前提交 a14f27d641
共有 5 个文件被更改,包括 255 次插入 和 17 次删除

查看文件

@@ -458,12 +458,16 @@ export async function initDatabase(): Promise<void> {
try {
await conn.query('ALTER TABLE users ADD COLUMN is_expert TINYINT DEFAULT 0');
} catch (_) {}
try {
await conn.query('ALTER TABLE users ADD COLUMN role_flags TINYINT DEFAULT 1');
await conn.query('UPDATE users SET role_flags = 3 WHERE is_expert = 1 OR role = "认证大神"');
} catch (_) {}
// 确保存在 demo 账号 101 (金牌陪伴师/认证大神体验账号)
try {
await conn.query(`
INSERT INTO users (id, user_no, nickname, avatar, phone, gender, role, balance, commission, invited_count, order_count, activity_count, status, wechat_openid, signature, is_expert)
VALUES (101, 'U101', '糖心小糯米', 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200', '138****0101', '女', '认证大神', 2580.00, 128.50, 6, 88, 16, '正常', 'wx_openid_101', '人美声甜,擅长各类同城陪伴与开黑互动', 1)
ON DUPLICATE KEY UPDATE nickname = VALUES(nickname), is_expert = 1
INSERT INTO users (id, user_no, nickname, avatar, phone, gender, role, balance, commission, invited_count, order_count, activity_count, status, wechat_openid, signature, is_expert, role_flags)
VALUES (101, 'U101', '糖心小糯米', 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200', '138****0101', '女', '认证大神', 2580.00, 128.50, 6, 88, 16, '正常', 'wx_openid_101', '人美声甜,擅长各类同城陪伴与开黑互动', 1, 3)
ON DUPLICATE KEY UPDATE nickname = VALUES(nickname), is_expert = 1, role_flags = 3
`);
} catch (_) {}
@@ -517,11 +521,24 @@ export async function initDatabase(): Promise<void> {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
`);
// 23. 分销体系扩展 (下级团队与佣金订单记录)
// 23. 分销体系扩展 (父子终身绑定关系表、下级团队与佣金订单记录)
try {
await conn.query('ALTER TABLE users ADD COLUMN inviter_id INT DEFAULT NULL');
} catch (_) {}
await conn.query(`
CREATE TABLE IF NOT EXISTS distribution_relations (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT UNIQUE NOT NULL,
inviter_id INT NOT NULL,
level2_inviter_id INT DEFAULT NULL,
bind_source VARCHAR(64) DEFAULT 'INVITE_CODE',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_inviter (inviter_id),
INDEX idx_level2_inviter (level2_inviter_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
`);
await conn.query(`
CREATE TABLE IF NOT EXISTS distribution_records (
id VARCHAR(64) PRIMARY KEY,