Files
telegram-management-system/init-test-data.js
你的用户名 237c7802e5
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit: Telegram Management System
Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:37:50 +08:00

152 lines
6.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const sqlite3 = require('sqlite3').verbose();
const path = require('path');
// 连接到数据库
const dbPath = path.join(__dirname, 'backend', 'database.db');
const db = new sqlite3.Database(dbPath);
console.log('🗄️ 初始化测试数据...');
// 创建表和初始化数据
db.serialize(() => {
// 创建管理员表
db.run(`CREATE TABLE IF NOT EXISTS m_admins (
id INTEGER PRIMARY KEY AUTOINCREMENT,
account TEXT NOT NULL,
password TEXT NOT NULL,
salt TEXT NOT NULL,
status INTEGER DEFAULT 1,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
// 创建TG账号表
db.run(`CREATE TABLE IF NOT EXISTS accountss (
id INTEGER PRIMARY KEY AUTOINCREMENT,
phone TEXT NOT NULL,
username TEXT,
status INTEGER DEFAULT 0,
usage_purpose TEXT,
session_data TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
// 创建账号用途表
db.run(`CREATE TABLE IF NOT EXISTS m_account_usages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
usage_name TEXT NOT NULL,
description TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
// 创建名字表
db.run(`CREATE TABLE IF NOT EXISTS m_firstnames (
id INTEGER PRIMARY KEY AUTOINCREMENT,
firstname TEXT NOT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
// 创建姓氏表
db.run(`CREATE TABLE IF NOT EXISTS m_lastnames (
id INTEGER PRIMARY KEY AUTOINCREMENT,
lastname TEXT NOT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
// 插入管理员数据admin/111111
const salt = 'test_salt_123';
const crypto = require('crypto');
const passwordHash = crypto.createHash('md5').update(salt + '111111').digest('hex');
db.run(`INSERT OR IGNORE INTO m_admins (id, account, password, salt) VALUES (1, 'admin', ?, ?)`,
[passwordHash, salt], function(err) {
if (err) {
console.error('插入管理员数据失败:', err);
} else {
console.log('✅ 管理员账号创建成功 (admin/111111)');
}
});
// 插入测试TG账号数据
const testAccounts = [
{ phone: '+8613800138000', username: 'test_user_1', status: 1, usage_purpose: '营销推广' },
{ phone: '+8613800138001', username: 'test_user_2', status: 0, usage_purpose: '客服咨询' },
{ phone: '+8613800138002', username: 'test_user_3', status: 1, usage_purpose: '群组管理' },
{ phone: '+8613800138003', username: 'test_user_4', status: 2, usage_purpose: '自动回复' },
{ phone: '+8613800138004', username: 'test_user_5', status: 1, usage_purpose: '数据采集' }
];
testAccounts.forEach((account, index) => {
db.run(`INSERT OR IGNORE INTO accountss (phone, username, status, usage_purpose) VALUES (?, ?, ?, ?)`,
[account.phone, account.username, account.status, account.usage_purpose], function(err) {
if (err) {
console.error(`插入TG账号 ${account.phone} 失败:`, err);
} else if (this.changes > 0) {
console.log(`✅ TG账号 ${account.phone} 创建成功`);
}
});
});
// 插入账号用途数据
const usages = [
{ usage_name: '营销推广', description: '用于产品和服务的营销推广' },
{ usage_name: '客服咨询', description: '提供客户服务和咨询支持' },
{ usage_name: '群组管理', description: '管理Telegram群组和频道' },
{ usage_name: '自动回复', description: '自动回复用户消息' },
{ usage_name: '数据采集', description: '收集和分析用户数据' }
];
usages.forEach(usage => {
db.run(`INSERT OR IGNORE INTO m_account_usages (usage_name, description) VALUES (?, ?)`,
[usage.usage_name, usage.description], function(err) {
if (err) {
console.error(`插入用途 ${usage.usage_name} 失败:`, err);
} else if (this.changes > 0) {
console.log(`✅ 账号用途 ${usage.usage_name} 创建成功`);
}
});
});
// 插入测试名字数据(这些数据已经存在,保持原有的)
const firstnames = ['张', '王', '李', '刘', '陈', '杨', '赵', '黄', '周', '吴', '徐', '孙', '马', '朱', '胡'];
firstnames.forEach(name => {
db.run(`INSERT OR IGNORE INTO m_firstnames (firstname) VALUES (?)`, [name], function(err) {
if (err) {
console.error(`插入名字 ${name} 失败:`, err);
} else if (this.changes > 0) {
console.log(`✅ 名字 ${name} 创建成功`);
}
});
});
// 插入测试姓氏数据
const lastnames = ['伟', '芳', '娜', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '涛', '明'];
lastnames.forEach(name => {
db.run(`INSERT OR IGNORE INTO m_lastnames (lastname) VALUES (?)`, [name], function(err) {
if (err) {
console.error(`插入姓氏 ${name} 失败:`, err);
} else if (this.changes > 0) {
console.log(`✅ 姓氏 ${name} 创建成功`);
}
});
});
});
// 等待所有操作完成后关闭数据库
setTimeout(() => {
db.close((err) => {
if (err) {
console.error('关闭数据库失败:', err);
} else {
console.log('🎉 测试数据初始化完成!');
console.log('\n📊 创建的测试数据:');
console.log('• 管理员账号: admin/111111');
console.log('• TG账号: 5个测试账号');
console.log('• 账号用途: 5种用途类型');
console.log('• 名字列表: 15个常用名字');
console.log('• 姓氏列表: 15个常用姓氏');
console.log('\n🚀 现在可以重新测试前端页面数据加载了!');
}
});
}, 2000);