Initial commit: Telegram Management System
Some checks failed
Deploy / deploy (push) Has been cancelled
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:
50
database/scripts/backup_database.sh
Executable file
50
database/scripts/backup_database.sh
Executable 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 "备份完成!"
|
||||
122
database/scripts/normalize_existing_tables.sql
Normal file
122
database/scripts/normalize_existing_tables.sql
Normal 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;
|
||||
57
database/scripts/normalize_existing_tables_safe.sql
Normal file
57
database/scripts/normalize_existing_tables_safe.sql
Normal 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;
|
||||
103
database/scripts/normalize_table_names.sql
Normal file
103
database/scripts/normalize_table_names.sql
Normal 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;
|
||||
30
database/scripts/rollback_table_names.sql
Normal file
30
database/scripts/rollback_table_names.sql
Normal 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;
|
||||
52
database/scripts/update_table_references.sh
Executable file
52
database/scripts/update_table_references.sh
Executable 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}\"' _ {} \;"
|
||||
Reference in New Issue
Block a user