Initial commit: Telegram Management System
Some checks failed
Deploy / deploy (push) Has been cancelled

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>
This commit is contained in:
你的用户名
2025-11-04 15:37:50 +08:00
commit 237c7802e5
3674 changed files with 525172 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
#!/bin/bash
# 数据库备份脚本
# 使用方法: ./backup_database.sh
# 配置
DB_HOST="127.0.0.1"
DB_USER="root"
DB_PASSWORD=""
DB_NAME="tg_manage"
BACKUP_DIR="../backups"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="tg_manage_backup_${DATE}.sql"
# 创建备份目录
mkdir -p $BACKUP_DIR
echo "开始备份数据库..."
echo "数据库: $DB_NAME"
echo "备份文件: $BACKUP_DIR/$BACKUP_FILE"
# 执行备份
mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASSWORD \
--single-transaction \
--routines \
--triggers \
--complete-insert \
--add-drop-table \
--extended-insert=FALSE \
$DB_NAME > $BACKUP_DIR/$BACKUP_FILE
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "✅ 数据库备份成功!"
echo "备份文件大小: $(du -h $BACKUP_DIR/$BACKUP_FILE | cut -f1)"
# 压缩备份文件
gzip $BACKUP_DIR/$BACKUP_FILE
echo "✅ 备份文件已压缩: $BACKUP_DIR/$BACKUP_FILE.gz"
# 清理7天前的备份文件
find $BACKUP_DIR -name "tg_manage_backup_*.sql.gz" -mtime +7 -delete
echo "✅ 已清理7天前的旧备份文件"
else
echo "❌ 数据库备份失败!"
exit 1
fi
echo "备份完成!"

View File

@@ -0,0 +1,122 @@
-- 针对现有表的规范化脚本
-- 基于实际数据库状态
USE tg_manage;
-- 禁用外键检查
SET FOREIGN_KEY_CHECKS = 0;
-- 显示当前表状态
SELECT 'Current tables before normalization:' as status;
SHOW TABLES;
-- 重命名tg_前缀的表只处理存在的表
-- 账号相关
RENAME TABLE IF EXISTS tg_account TO accounts_new;
RENAME TABLE IF EXISTS tg_account_health TO account_health;
RENAME TABLE IF EXISTS tg_account_pool TO account_pools;
RENAME TABLE IF EXISTS tg_account_usage TO account_usages;
RENAME TABLE IF EXISTS tg_account_usage_log TO account_usage_logs;
-- 群组相关
RENAME TABLE IF EXISTS tg_group TO chat_groups_new;
RENAME TABLE IF EXISTS tg_group_listener TO group_listeners;
RENAME TABLE IF EXISTS tg_group_marketing_log TO group_marketing_logs;
RENAME TABLE IF EXISTS tg_group_muster TO group_musters;
RENAME TABLE IF EXISTS tg_group_send_log TO group_send_logs;
RENAME TABLE IF EXISTS tg_group_task TO group_tasks;
RENAME TABLE IF EXISTS tg_group_user TO group_users;
-- 消息相关
RENAME TABLE IF EXISTS tg_message TO messages_new;
RENAME TABLE IF EXISTS tg_message_muster TO message_musters;
-- 脚本相关
RENAME TABLE IF EXISTS tg_script TO scripts_new;
RENAME TABLE IF EXISTS tg_script_article TO script_articles_new;
RENAME TABLE IF EXISTS tg_script_project TO script_projects_new;
RENAME TABLE IF EXISTS tg_script_task TO script_tasks_new;
-- 任务相关
RENAME TABLE IF EXISTS tg_pull_member_task TO pull_member_tasks;
RENAME TABLE IF EXISTS tg_smart_task_execution TO smart_task_executions;
RENAME TABLE IF EXISTS tg_smart_group_task TO smart_group_tasks;
-- 日志相关
RENAME TABLE IF EXISTS tg_login_code_log TO login_code_logs;
RENAME TABLE IF EXISTS tg_register_log TO register_logs;
RENAME TABLE IF EXISTS tg_pull_member_log TO pull_member_logs;
RENAME TABLE IF EXISTS tg_join_group_log TO join_group_logs;
RENAME TABLE IF EXISTS tg_project_invite_log TO project_invite_logs;
-- 统计相关
RENAME TABLE IF EXISTS tg_pull_member_statistic TO pull_member_statistics;
RENAME TABLE IF EXISTS tg_pull_member_project_statistic TO pull_member_project_statistics;
-- 系统配置相关
RENAME TABLE IF EXISTS tg_config TO configs_new;
RENAME TABLE IF EXISTS tg_dc TO data_centers_new;
RENAME TABLE IF EXISTS tg_exchange TO exchanges;
RENAME TABLE IF EXISTS tg_api_data TO api_data;
-- 其他
RENAME TABLE IF EXISTS tg_telegram_users TO telegram_users_new;
RENAME TABLE IF EXISTS tg_user TO users;
RENAME TABLE IF EXISTS tg_lines TO lines;
RENAME TABLE IF EXISTS tg_performer TO performers;
-- 清理c_前缀的旧表
DROP TABLE IF EXISTS c_account_usage;
DROP TABLE IF EXISTS c_api_data;
DROP TABLE IF EXISTS c_config;
DROP TABLE IF EXISTS c_dc;
DROP TABLE IF EXISTS c_exchange;
DROP TABLE IF EXISTS c_firstname;
DROP TABLE IF EXISTS c_group;
DROP TABLE IF EXISTS c_group_listener;
DROP TABLE IF EXISTS c_group_muster;
DROP TABLE IF EXISTS c_group_send_log;
DROP TABLE IF EXISTS c_group_task;
DROP TABLE IF EXISTS c_join_group_log;
DROP TABLE IF EXISTS c_lastname;
DROP TABLE IF EXISTS c_lines;
DROP TABLE IF EXISTS c_message;
DROP TABLE IF EXISTS c_message_muster;
DROP TABLE IF EXISTS c_performer;
DROP TABLE IF EXISTS c_pull_member_log;
DROP TABLE IF EXISTS c_pull_member_project_statistic;
DROP TABLE IF EXISTS c_pull_member_statistic;
DROP TABLE IF EXISTS c_pull_member_task;
DROP TABLE IF EXISTS c_script;
DROP TABLE IF EXISTS c_script_article;
DROP TABLE IF EXISTS c_script_project;
DROP TABLE IF EXISTS c_script_task;
DROP TABLE IF EXISTS c_smart_task;
DROP TABLE IF EXISTS c_task_execution;
DROP TABLE IF EXISTS c_tg_account;
DROP TABLE IF EXISTS c_tg_login_code_log;
DROP TABLE IF EXISTS c_tg_register_log;
-- 清理m_前缀的重复表
DROP TABLE IF EXISTS m_admin;
DROP TABLE IF EXISTS m_api_data;
DROP TABLE IF EXISTS m_config;
DROP TABLE IF EXISTS m_group;
DROP TABLE IF EXISTS m_group_listener;
DROP TABLE IF EXISTS m_group_task;
DROP TABLE IF EXISTS m_message;
DROP TABLE IF EXISTS m_tg_account;
-- 重新启用外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- 显示最终结果
SELECT 'Table normalization completed!' as status;
SHOW TABLES;
-- 显示表记录统计
SELECT 'accounts' as table_name, COUNT(*) as count FROM accounts
UNION ALL
SELECT 'firstnames', COUNT(*) FROM firstnames
UNION ALL
SELECT 'lastnames', COUNT(*) FROM lastnames;

View File

@@ -0,0 +1,57 @@
-- 安全的表名规范化脚本
-- 只处理存在的表
USE tg_manage;
-- 禁用外键检查
SET FOREIGN_KEY_CHECKS = 0;
-- 重命名存在的tg_前缀表
RENAME TABLE tg_account_health TO account_health;
RENAME TABLE tg_account_pool TO account_pools;
RENAME TABLE tg_account_usage TO account_usages;
RENAME TABLE tg_account_usage_log TO account_usage_logs;
RENAME TABLE tg_group TO chat_groups;
RENAME TABLE tg_group_listener TO group_listeners;
RENAME TABLE tg_group_marketing_log TO group_marketing_logs;
RENAME TABLE tg_group_muster TO group_musters;
RENAME TABLE tg_group_send_log TO group_send_logs;
RENAME TABLE tg_group_task TO group_tasks;
RENAME TABLE tg_group_user TO group_users;
RENAME TABLE tg_message TO messages;
RENAME TABLE tg_message_muster TO message_musters;
RENAME TABLE tg_script TO scripts;
RENAME TABLE tg_script_article TO script_articles;
RENAME TABLE tg_script_project TO script_projects;
RENAME TABLE tg_script_task TO script_tasks;
RENAME TABLE tg_pull_member_task TO pull_member_tasks;
RENAME TABLE tg_smart_task_execution TO smart_task_executions;
RENAME TABLE tg_smart_group_task TO smart_group_tasks;
RENAME TABLE tg_login_code_log TO login_code_logs;
RENAME TABLE tg_register_log TO register_logs;
RENAME TABLE tg_pull_member_log TO pull_member_logs;
RENAME TABLE tg_join_group_log TO join_group_logs;
RENAME TABLE tg_project_invite_log TO project_invite_logs;
RENAME TABLE tg_pull_member_statistic TO pull_member_statistics;
RENAME TABLE tg_pull_member_project_statistic TO pull_member_project_statistics;
RENAME TABLE tg_config TO configs;
RENAME TABLE tg_dc TO data_centers;
RENAME TABLE tg_exchange TO exchanges;
RENAME TABLE tg_api_data TO api_data;
RENAME TABLE tg_telegram_users TO telegram_users;
RENAME TABLE tg_user TO users;
RENAME TABLE tg_lines TO lines;
RENAME TABLE tg_performer TO performers;
-- 重新启用外键检查
SET FOREIGN_KEY_CHECKS = 1;
SELECT 'Table normalization completed successfully!' as status;

View File

@@ -0,0 +1,103 @@
-- 数据库表名规范化脚本
-- 执行前请备份数据库!
USE tg_manage;
-- 禁用外键检查
SET FOREIGN_KEY_CHECKS = 0;
-- 1. 备份当前表(创建备份表)
CREATE TABLE IF NOT EXISTS backup_tg_account AS SELECT * FROM tg_account WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_firstname AS SELECT * FROM tg_firstname WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_lastname AS SELECT * FROM tg_lastname WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_group AS SELECT * FROM tg_group WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_message AS SELECT * FROM tg_message WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_config AS SELECT * FROM tg_config WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_script AS SELECT * FROM tg_script WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_script_article AS SELECT * FROM tg_script_article WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_script_project AS SELECT * FROM tg_script_project WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_script_task AS SELECT * FROM tg_script_task WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_dc AS SELECT * FROM tg_dc WHERE 1=0;
CREATE TABLE IF NOT EXISTS backup_tg_telegram_users AS SELECT * FROM tg_telegram_users WHERE 1=0;
-- 插入备份数据
INSERT INTO backup_tg_account SELECT * FROM tg_account;
INSERT INTO backup_tg_firstname SELECT * FROM tg_firstname;
INSERT INTO backup_tg_lastname SELECT * FROM tg_lastname;
INSERT INTO backup_tg_group SELECT * FROM tg_group;
INSERT INTO backup_tg_message SELECT * FROM tg_message;
INSERT INTO backup_tg_config SELECT * FROM tg_config;
INSERT INTO backup_tg_script SELECT * FROM tg_script;
INSERT INTO backup_tg_script_article SELECT * FROM tg_script_article;
INSERT INTO backup_tg_script_project SELECT * FROM tg_script_project;
INSERT INTO backup_tg_script_task SELECT * FROM tg_script_task;
INSERT INTO backup_tg_dc SELECT * FROM tg_dc;
INSERT INTO backup_tg_telegram_users SELECT * FROM tg_telegram_users;
-- 2. 重命名表到新的规范化名称
RENAME TABLE tg_account TO accounts;
RENAME TABLE tg_firstname TO firstnames;
RENAME TABLE tg_lastname TO lastnames;
RENAME TABLE tg_group TO chat_groups;
RENAME TABLE tg_message TO messages;
RENAME TABLE tg_config TO configs;
RENAME TABLE tg_script TO scripts;
RENAME TABLE tg_script_article TO script_articles;
RENAME TABLE tg_script_project TO script_projects;
RENAME TABLE tg_script_task TO script_tasks;
RENAME TABLE tg_dc TO data_centers;
RENAME TABLE tg_telegram_users TO telegram_users;
-- 3. 删除旧的c_前缀表如果存在
DROP TABLE IF EXISTS c_tg_account;
DROP TABLE IF EXISTS c_firstname;
DROP TABLE IF EXISTS c_lastname;
DROP TABLE IF EXISTS c_group;
DROP TABLE IF EXISTS c_message;
DROP TABLE IF EXISTS c_config;
DROP TABLE IF EXISTS c_script;
DROP TABLE IF EXISTS c_script_article;
DROP TABLE IF EXISTS c_script_project;
DROP TABLE IF EXISTS c_script_task;
-- 4. 删除m_前缀重复表如果存在
DROP TABLE IF EXISTS m_tg_account;
DROP TABLE IF EXISTS m_firstname;
DROP TABLE IF EXISTS m_lastname;
DROP TABLE IF EXISTS m_group;
DROP TABLE IF EXISTS m_message;
DROP TABLE IF EXISTS m_config;
-- 重新启用外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- 5. 验证重命名结果
SELECT 'Table normalization completed successfully!' as status;
-- 显示所有表
SHOW TABLES;
-- 显示每个表的记录数
SELECT 'accounts' as table_name, COUNT(*) as count FROM accounts
UNION ALL
SELECT 'firstnames', COUNT(*) FROM firstnames
UNION ALL
SELECT 'lastnames', COUNT(*) FROM lastnames
UNION ALL
SELECT 'chat_groups', COUNT(*) FROM chat_groups
UNION ALL
SELECT 'messages', COUNT(*) FROM messages
UNION ALL
SELECT 'configs', COUNT(*) FROM configs
UNION ALL
SELECT 'scripts', COUNT(*) FROM scripts
UNION ALL
SELECT 'script_articles', COUNT(*) FROM script_articles
UNION ALL
SELECT 'script_projects', COUNT(*) FROM script_projects
UNION ALL
SELECT 'script_tasks', COUNT(*) FROM script_tasks
UNION ALL
SELECT 'data_centers', COUNT(*) FROM data_centers
UNION ALL
SELECT 'telegram_users', COUNT(*) FROM telegram_users;

View File

@@ -0,0 +1,30 @@
-- 数据库表名规范化回滚脚本
-- 用于恢复到原始表名
USE tg_manage;
-- 禁用外键检查
SET FOREIGN_KEY_CHECKS = 0;
-- 回滚表名到原始tg_前缀
RENAME TABLE accounts TO tg_account;
RENAME TABLE firstnames TO tg_firstname;
RENAME TABLE lastnames TO tg_lastname;
RENAME TABLE chat_groups TO tg_group;
RENAME TABLE messages TO tg_message;
RENAME TABLE configs TO tg_config;
RENAME TABLE scripts TO tg_script;
RENAME TABLE script_articles TO tg_script_article;
RENAME TABLE script_projects TO tg_script_project;
RENAME TABLE script_tasks TO tg_script_task;
RENAME TABLE data_centers TO tg_dc;
RENAME TABLE telegram_users TO tg_telegram_users;
-- 重新启用外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- 验证回滚结果
SELECT 'Table names rolled back successfully!' as status;
-- 显示所有表
SHOW TABLES;

View File

@@ -0,0 +1,52 @@
#!/bin/bash
# 批量更新代码中的表名引用脚本
PROJECT_ROOT="/Users/hahaha/telegram-management-system"
echo "开始更新代码中的表名引用..."
# 查找所有需要更新的文件排除node_modules和database目录
find $PROJECT_ROOT -name "*.js" -type f ! -path "*/node_modules/*" ! -path "*/database/*" | while read file; do
# 检查文件是否包含旧表名
if grep -q "tg_account\|tg_group\|tg_message\|tg_config\|tg_script\|m_tg_account\|c_tg_account" "$file"; then
echo "更新文件: $file"
# 创建备份
cp "$file" "$file.bak"
# 执行替换
sed -i.tmp "
s/m_tg_account/accounts/g
s/c_tg_account/accounts/g
s/tg_account/accounts/g
s/tg_group/chat_groups/g
s/tg_message/messages/g
s/tg_config/configs/g
s/tg_script/scripts/g
s/tg_firstname/firstnames/g
s/tg_lastname/lastnames/g
s/tg_dc/data_centers/g
s/tg_telegram_users/telegram_users/g
s/tg_account_health/account_health/g
s/tg_account_pool/account_pools/g
s/tg_account_usage/account_usages/g
s/tg_account_usage_log/account_usage_logs/g
s/tg_group_listener/group_listeners/g
s/tg_group_task/group_tasks/g
s/tg_login_code_log/login_code_logs/g
s/tg_register_log/register_logs/g
s/tg_pull_member_log/pull_member_logs/g
s/tg_pull_member_task/pull_member_tasks/g
" "$file"
# 删除临时文件
rm "$file.tmp" 2>/dev/null
echo "✅ 已更新: $file"
fi
done
echo "批量更新完成!"
echo "注意:原文件已备份为 .bak 扩展名"
echo "如需回滚,请运行: find $PROJECT_ROOT -name '*.bak' -exec sh -c 'mv \"\$1\" \"\${1%.bak}\"' _ {} \;"