chore: update project files

This commit is contained in:
AIGC Developer
2025-11-13 17:01:39 +08:00
parent 83bf064bb2
commit 2961d2b0d0
344 changed files with 11549 additions and 15941 deletions

View File

@@ -0,0 +1,269 @@
# AIGC平台 - 宝塔数据库部署包
## 📦 部署包内容
```
database_baota_deploy/
├── init_database.sql # 完整数据库初始化脚本(推荐)
├── update_admin_user.sql # 管理员权限设置脚本
├── 数据库完整结构-宝塔导入.sql # 备用完整结构
├── 宝塔数据库部署指南.md # 详细部署文档
├── deploy_database.sh # Linux自动部署脚本
└── README.md # 本文件
```
## 🚀 快速开始
### 方法一:使用宝塔面板(推荐,适合新手)
1. **阅读部署指南**
```
打开 "宝塔数据库部署指南.md" 查看详细步骤
```
2. **创建数据库**
- 登录宝塔面板
- 数据库 → 添加数据库
- 数据库名: `aigc_platform`
- 字符集: `utf8mb4`
3. **导入SQL文件**
- 点击数据库的【管理】进入phpMyAdmin
- 导入 → 选择文件 → 选择 `init_database.sql`
- 执行导入
4. **配置应用**
- 将数据库信息填入 `application-prod.properties`
### 方法二使用自动脚本适合Linux命令行用户
```bash
# 1. 上传整个部署包到服务器
scp -r database_baota_deploy root@your-server:/root/
# 2. SSH登录服务器
ssh root@your-server
# 3. 进入部署目录
cd /root/database_baota_deploy
# 4. 给脚本执行权限
chmod +x deploy_database.sh
# 5. 运行自动部署脚本
bash deploy_database.sh
# 6. 按提示输入MySQL root密码和新数据库密码
# 7. 等待部署完成,保存输出的数据库配置信息
```
### 方法三:手动命令行部署
```bash
# 1. 登录MySQL
mysql -uroot -p
# 2. 创建数据库
CREATE DATABASE aigc_platform DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 3. 创建用户
CREATE USER 'aigc_platform'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON aigc_platform.* TO 'aigc_platform'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 4. 导入数据库
mysql -uaigc_platform -p aigc_platform < init_database.sql
# 5. 验证
mysql -uaigc_platform -p
USE aigc_platform;
SHOW TABLES;
```
## 📋 数据库表清单
部署成功后应包含以下13个表
| 表名 | 说明 |
|------|------|
| `users` | 用户表 |
| `payments` | 支付记录表 |
| `orders` | 订单表 |
| `order_items` | 订单明细表 |
| `text_to_video_tasks` | 文生视频任务表 |
| `image_to_video_tasks` | 图生视频任务表 |
| `storyboard_video_tasks` | 分镜视频任务表 |
| `task_queue` | 任务队列表 |
| `task_status` | 任务状态表 |
| `user_works` | 用户作品表 |
| `user_membership` | 用户会员表 |
| `user_activity_stats` | 用户活动统计表 |
| `failed_tasks_cleanup_log` | 失败任务清理日志表 |
## ⚙️ 应用配置
### Spring Boot 配置文件
**文件**: `src/main/resources/application-prod.properties`
```properties
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.username=aigc_platform
spring.datasource.password=你的数据库密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接池配置
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1200000
spring.datasource.hikari.connection-timeout=30000
# JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
```
### 宝塔反向代理配置(可选)
如果使用宝塔的Nginx反向代理
```nginx
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
## 🔐 管理员账号
### 默认管理员邮箱
```
984523799@qq.com
```
### 设置流程
1. **首次注册**
- 使用 `984523799@qq.com` 在前端注册账号
- 数据库会自动将此用户设置为管理员
2. **手动设置**
- 如果自动设置未生效,执行 `update_admin_user.sql`
3. **验证权限**
```sql
SELECT id, username, email, role, points
FROM users
WHERE email = '984523799@qq.com';
```
- `role` 字段应为 `ROLE_ADMIN`
## 🛠️ 故障排查
### 导入失败
**问题**: 导入SQL时报错
**解决**:
1. 确保数据库字符集为 `utf8mb4`
2. 检查SQL文件编码为 UTF-8
3. 尝试分段导入或使用命令行导入
### 连接失败
**问题**: 应用无法连接数据库
**检查项**:
1. MySQL服务是否运行: `systemctl status mysql`
2. 用户名密码是否正确
3. 数据库名称是否正确
4. 防火墙是否开放3306端口如需远程连接
5. MySQL是否允许远程连接`bind-address`配置)
### 权限问题
**问题**: Access denied
**解决**:
```sql
-- 重新授权
GRANT ALL PRIVILEGES ON aigc_platform.* TO 'aigc_platform'@'localhost';
GRANT ALL PRIVILEGES ON aigc_platform.* TO 'aigc_platform'@'%';
FLUSH PRIVILEGES;
```
## 📊 数据库维护
### 定期备份
**宝塔面板**:
- 计划任务 → 添加任务
- 任务类型: 备份数据库
- 执行周期: 每天凌晨3点
- 保留份数: 7-30份
**命令行备份**:
```bash
# 手动备份
mysqldump -uaigc_platform -p aigc_platform > backup_$(date +%Y%m%d_%H%M%S).sql
# 定时备份添加到crontab
0 3 * * * mysqldump -uaigc_platform -p'密码' aigc_platform > /backup/aigc_$(date +\%Y\%m\%d).sql
```
### 性能优化
```sql
-- 查看表大小
SELECT
table_name,
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = 'aigc_platform'
ORDER BY (data_length + index_length) DESC;
-- 优化表
OPTIMIZE TABLE users;
OPTIMIZE TABLE text_to_video_tasks;
OPTIMIZE TABLE image_to_video_tasks;
```
## 📞 技术支持
遇到问题?
1. **查看日志**
- 宝塔面板: 数据库 → 日志
- 命令行: `/var/log/mysql/error.log`
2. **查看文档**
- 详细部署指南: `宝塔数据库部署指南.md`
3. **验证数据库**
```bash
mysql -uaigc_platform -p -e "USE aigc_platform; SHOW TABLES;"
```
## ✅ 部署检查清单
- [ ] MySQL服务正在运行
- [ ] 数据库 `aigc_platform` 已创建
- [ ] 字符集为 `utf8mb4`
- [ ] 用户 `aigc_platform` 已创建并授权
- [ ] 13个数据表已创建
- [ ] 管理员邮箱 `984523799@qq.com` 已配置
- [ ] 应用配置文件已更新数据库信息
- [ ] 数据库备份计划已设置
---
**版本**: 1.0
**更新日期**: 2025-11-10
**适用系统**: 宝塔面板 / Linux / MySQL 8.0+

View File

@@ -0,0 +1,141 @@
#!/bin/bash
# 宝塔数据库快速部署脚本
# 使用方法bash deploy_database.sh
echo "========================================"
echo " AIGC平台 - 宝塔数据库部署脚本"
echo "========================================"
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 数据库配置
DB_NAME="aigc_platform"
DB_USER="aigc_platform"
DB_CHARSET="utf8mb4"
DB_COLLATE="utf8mb4_unicode_ci"
# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}请使用root权限运行此脚本${NC}"
echo "使用方法: sudo bash deploy_database.sh"
exit 1
fi
echo "步骤 1/5: 检查MySQL服务状态..."
if systemctl is-active --quiet mysql || systemctl is-active --quiet mysqld || systemctl is-active --quiet mariadb; then
echo -e "${GREEN}✓ MySQL服务正在运行${NC}"
else
echo -e "${RED}✗ MySQL服务未运行${NC}"
echo "正在启动MySQL服务..."
systemctl start mysql || systemctl start mysqld || systemctl start mariadb
sleep 2
fi
echo ""
echo "步骤 2/5: 输入MySQL root密码"
read -sp "请输入MySQL root密码: " MYSQL_ROOT_PASSWORD
echo ""
echo ""
# 测试MySQL连接
echo "测试MySQL连接..."
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "SELECT 1;" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}✗ MySQL连接失败请检查root密码${NC}"
exit 1
fi
echo -e "${GREEN}✓ MySQL连接成功${NC}"
echo ""
echo "步骤 3/5: 创建数据库和用户"
read -sp "请输入新数据库用户的密码(按回车使用随机密码): " DB_PASSWORD
echo ""
if [ -z "$DB_PASSWORD" ]; then
# 生成随机密码
DB_PASSWORD=$(openssl rand -base64 16)
echo -e "${YELLOW}已生成随机密码: $DB_PASSWORD${NC}"
echo -e "${YELLOW}请务必保存此密码!${NC}"
fi
echo ""
# 创建数据库
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" <<EOF
-- 删除旧数据库(如果存在)
DROP DATABASE IF EXISTS \`$DB_NAME\`;
-- 创建新数据库
CREATE DATABASE \`$DB_NAME\` DEFAULT CHARACTER SET $DB_CHARSET COLLATE $DB_COLLATE;
-- 创建用户(如果不存在)
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';
CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';
-- 授权
GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';
GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
EOF
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 数据库和用户创建成功${NC}"
else
echo -e "${RED}✗ 数据库创建失败${NC}"
exit 1
fi
echo ""
echo "步骤 4/5: 导入数据库结构"
if [ -f "init_database.sql" ]; then
mysql -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < init_database.sql
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 数据库结构导入成功${NC}"
else
echo -e "${RED}✗ 数据库结构导入失败${NC}"
exit 1
fi
else
echo -e "${RED}✗ 找不到 init_database.sql 文件${NC}"
exit 1
fi
echo ""
echo "步骤 5/5: 验证数据库"
TABLE_COUNT=$(mysql -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -sN -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$DB_NAME';")
echo "已创建 $TABLE_COUNT 个数据表"
if [ "$TABLE_COUNT" -ge 13 ]; then
echo -e "${GREEN}✓ 数据库部署成功!${NC}"
else
echo -e "${YELLOW}⚠ 表数量少于预期预期13个实际$TABLE_COUNT个${NC}"
fi
echo ""
echo "========================================"
echo " 部署完成!"
echo "========================================"
echo ""
echo "数据库信息:"
echo "----------------------------------------"
echo "数据库名: $DB_NAME"
echo "用户名: $DB_USER"
echo "密码: $DB_PASSWORD"
echo "字符集: $DB_CHARSET"
echo "排序规则: $DB_COLLATE"
echo "----------------------------------------"
echo ""
echo "请将以下配置添加到 application-prod.properties"
echo ""
echo "spring.datasource.url=jdbc:mysql://localhost:3306/$DB_NAME?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"
echo "spring.datasource.username=$DB_USER"
echo "spring.datasource.password=$DB_PASSWORD"
echo ""
echo -e "${YELLOW}请务必保存数据库密码!${NC}"
echo ""

View File

@@ -0,0 +1,467 @@
-- ============================================
-- 宝塔面板数据库初始化SQL文件
-- 适用于MySQL/MariaDB数据库
-- ============================================
-- 创建数据库(如果不存在,请根据实际情况修改数据库名)
-- CREATE DATABASE IF NOT EXISTS `aigc_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- USE `aigc_db`;
-- ============================================
-- 基础表结构
-- ============================================
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(100) NOT NULL,
role VARCHAR(30) NOT NULL DEFAULT 'ROLE_USER',
points INT NOT NULL DEFAULT 50,
frozen_points INT NOT NULL DEFAULT 0 COMMENT '冻结积分',
phone VARCHAR(20),
avatar TEXT COMMENT '头像URL',
nickname VARCHAR(100),
gender VARCHAR(10),
birthday DATE,
address TEXT,
bio TEXT COMMENT '个人简介',
is_active BOOLEAN NOT NULL DEFAULT TRUE,
last_login_at TIMESTAMP NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_username (username),
INDEX idx_email (email),
INDEX idx_role (role),
INDEX idx_is_active (is_active),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 支付表
CREATE TABLE IF NOT EXISTS payments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id VARCHAR(50) NOT NULL COMMENT '订单号(不唯一,一个订单可以有多次支付尝试)',
amount DECIMAL(10,2) NOT NULL,
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
payment_method VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '支付状态PENDING, PROCESSING, SUCCESS, FAILED, CANCELLED',
description VARCHAR(500),
external_transaction_id VARCHAR(100) COMMENT '外部交易号(支付宝交易号等)',
callback_url VARCHAR(1000),
return_url VARCHAR(1000),
payment_url VARCHAR(2000) COMMENT '支付跳转URL',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
paid_at TIMESTAMP NULL,
user_id BIGINT COMMENT '用户ID',
order_id_ref BIGINT COMMENT '关联的订单ID外键',
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL,
FOREIGN KEY (order_id_ref) REFERENCES orders(id) ON DELETE SET NULL,
INDEX idx_order_id (order_id),
INDEX idx_user_id (user_id),
INDEX idx_status (status),
INDEX idx_payment_method (payment_method),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支付表';
-- 订单表
CREATE TABLE IF NOT EXISTS orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_number VARCHAR(50) NOT NULL UNIQUE,
total_amount DECIMAL(10,2) NOT NULL,
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
order_type VARCHAR(20) NOT NULL DEFAULT 'PRODUCT',
description VARCHAR(500),
notes TEXT,
shipping_address TEXT,
billing_address TEXT,
contact_phone VARCHAR(20),
contact_email VARCHAR(100),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
paid_at TIMESTAMP NULL,
shipped_at TIMESTAMP NULL,
delivered_at TIMESTAMP NULL,
cancelled_at TIMESTAMP NULL,
user_id BIGINT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
INDEX idx_order_number (order_number),
INDEX idx_user_id (user_id),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
-- 订单项表
CREATE TABLE IF NOT EXISTS order_items (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
product_description VARCHAR(500),
product_sku VARCHAR(200),
unit_price DECIMAL(10,2) NOT NULL,
quantity INT NOT NULL,
subtotal DECIMAL(10,2) NOT NULL,
product_image VARCHAR(100),
order_id BIGINT NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
INDEX idx_order_id (order_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单项表';
-- 会员等级表
CREATE TABLE IF NOT EXISTS membership_levels (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE COMMENT '等级名称(内部标识)',
display_name VARCHAR(50) NOT NULL COMMENT '显示名称',
description TEXT COMMENT '描述',
price DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '价格(元)',
duration_days INT NOT NULL DEFAULT 30 COMMENT '时长(天)',
points_bonus INT NOT NULL DEFAULT 0 COMMENT '积分奖励',
resource_points INT NOT NULL DEFAULT 0 COMMENT '资源点数量',
features JSON COMMENT '功能特性JSON格式',
is_active BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否启用',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_name (name),
INDEX idx_is_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员等级表';
-- 用户会员信息表
CREATE TABLE IF NOT EXISTS user_memberships (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
membership_level_id BIGINT NOT NULL,
start_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
end_date TIMESTAMP NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
auto_renew BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (membership_level_id) REFERENCES membership_levels(id),
UNIQUE KEY unique_active_membership (user_id, status),
INDEX idx_user_id (user_id),
INDEX idx_status (status),
INDEX idx_end_date (end_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会员信息表';
-- 视频生成任务表
CREATE TABLE IF NOT EXISTS video_tasks (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_id VARCHAR(100) NOT NULL UNIQUE,
user_id BIGINT NOT NULL,
task_type VARCHAR(50) NOT NULL COMMENT 'TEXT_TO_VIDEO, IMAGE_TO_VIDEO, STORYBOARD_VIDEO',
title VARCHAR(200) NOT NULL,
description TEXT,
input_text TEXT,
input_image_url VARCHAR(500),
output_video_url VARCHAR(500),
status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING, PROCESSING, COMPLETED, FAILED',
progress INT NOT NULL DEFAULT 0,
error_message TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
completed_at TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
INDEX idx_task_id (task_id),
INDEX idx_user_id (user_id),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频生成任务表';
-- 系统配置表
CREATE TABLE IF NOT EXISTS system_configs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
config_key VARCHAR(100) NOT NULL UNIQUE,
config_value TEXT,
description VARCHAR(500),
config_type VARCHAR(50) NOT NULL DEFAULT 'STRING' COMMENT 'STRING, NUMBER, BOOLEAN, JSON',
is_public BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
-- 系统设置表(用于存储系统级别的设置)
CREATE TABLE IF NOT EXISTS system_settings (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
standard_price_cny INT NOT NULL DEFAULT 0 COMMENT '标准版价格(元)',
pro_price_cny INT NOT NULL DEFAULT 0 COMMENT '专业版价格(元)',
points_per_generation INT NOT NULL DEFAULT 1 COMMENT '每次生成消耗的资源点',
site_name VARCHAR(100) NOT NULL DEFAULT 'AIGC Demo' COMMENT '站点名称',
site_subtitle VARCHAR(150) NOT NULL DEFAULT '现代化的Spring Boot应用演示' COMMENT '站点副标题',
registration_open BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否开放注册',
maintenance_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '维护模式',
enable_alipay BOOLEAN NOT NULL DEFAULT TRUE COMMENT '启用支付宝',
enable_paypal BOOLEAN NOT NULL DEFAULT TRUE COMMENT '启用PayPal',
contact_email VARCHAR(120) DEFAULT 'support@example.com' COMMENT '联系邮箱'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统设置表';
-- 用户活跃度统计表
CREATE TABLE IF NOT EXISTS user_activity_stats (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '统计ID',
activity_date DATE NOT NULL UNIQUE COMMENT '统计日期',
daily_active_users INT NOT NULL DEFAULT 0 COMMENT '日活用户数',
monthly_active_users INT NOT NULL DEFAULT 0 COMMENT '月活用户数',
new_users INT NOT NULL DEFAULT 0 COMMENT '新增用户数',
returning_users INT NOT NULL DEFAULT 0 COMMENT '回访用户数',
session_count INT NOT NULL DEFAULT 0 COMMENT '会话数',
avg_session_duration DECIMAL(10,2) DEFAULT 0 COMMENT '平均会话时长(分钟)',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_activity_date (activity_date),
INDEX idx_activity_date (activity_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户活跃度统计表';
-- 文生视频任务表
CREATE TABLE IF NOT EXISTS text_to_video_tasks (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '任务ID',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务唯一标识',
username VARCHAR(100) NOT NULL COMMENT '用户名',
prompt TEXT COMMENT '文本描述/提示词',
aspect_ratio VARCHAR(10) NOT NULL DEFAULT '16:9' COMMENT '宽高比16:9, 4:3, 1:1, 3:4, 9:16',
duration INT NOT NULL DEFAULT 5 COMMENT '视频时长5, 10, 15, 30',
hd_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否高清模式',
status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED',
progress INT NOT NULL DEFAULT 0 COMMENT '进度0-100',
result_url TEXT COMMENT '结果视频URL',
real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID',
error_message TEXT COMMENT '错误信息',
cost_points INT NOT NULL DEFAULT 0 COMMENT '消耗积分',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
INDEX idx_username (username),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_task_id (task_id),
INDEX idx_real_task_id (real_task_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文生视频任务表';
-- 图生视频任务表
CREATE TABLE IF NOT EXISTS image_to_video_tasks (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '任务ID',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务唯一标识',
username VARCHAR(100) NOT NULL COMMENT '用户名',
first_frame_url VARCHAR(500) NOT NULL COMMENT '首帧图片URL',
last_frame_url VARCHAR(500) COMMENT '末帧图片URL',
prompt TEXT COMMENT '文本描述/提示词',
aspect_ratio VARCHAR(10) NOT NULL DEFAULT '16:9' COMMENT '宽高比16:9, 4:3, 1:1, 3:4, 9:16',
duration INT NOT NULL DEFAULT 5 COMMENT '视频时长5, 10, 15, 30',
hd_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否高清模式',
status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED',
progress INT NOT NULL DEFAULT 0 COMMENT '进度0-100',
result_url TEXT COMMENT '结果视频URL',
real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID',
error_message TEXT COMMENT '错误信息',
cost_points INT NOT NULL DEFAULT 0 COMMENT '消耗积分',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
INDEX idx_username (username),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_task_id (task_id),
INDEX idx_real_task_id (real_task_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='图生视频任务表';
-- ============================================
-- 任务队列相关表
-- ============================================
-- 任务队列表
CREATE TABLE IF NOT EXISTS task_queue (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL COMMENT '用户名',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID',
task_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO', 'STORYBOARD_VIDEO') NOT NULL COMMENT '任务类型',
status ENUM('PENDING', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELLED', 'TIMEOUT') NOT NULL DEFAULT 'PENDING' COMMENT '队列状态',
priority INT NOT NULL DEFAULT 0 COMMENT '优先级,数字越小优先级越高',
real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID',
last_check_time DATETIME COMMENT '最后一次检查时间',
check_count INT NOT NULL DEFAULT 0 COMMENT '检查次数',
max_check_count INT NOT NULL DEFAULT 30 COMMENT '最大检查次数30次 * 2分钟 = 60分钟',
error_message TEXT COMMENT '错误信息',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at DATETIME COMMENT '完成时间',
INDEX idx_username_status (username, status),
INDEX idx_status_priority (status, priority),
INDEX idx_last_check_time (last_check_time),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务队列表';
-- 积分冻结记录表
CREATE TABLE IF NOT EXISTS points_freeze_records (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL COMMENT '用户名',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID',
task_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO', 'STORYBOARD_VIDEO') NOT NULL COMMENT '任务类型',
freeze_points INT NOT NULL COMMENT '冻结的积分数量',
status ENUM('FROZEN', 'DEDUCTED', 'RETURNED', 'EXPIRED') NOT NULL DEFAULT 'FROZEN' COMMENT '冻结状态',
freeze_reason VARCHAR(200) COMMENT '冻结原因',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at DATETIME COMMENT '完成时间',
INDEX idx_username_status (username, status),
INDEX idx_task_id (task_id),
INDEX idx_created_at (created_at),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='积分冻结记录表';
-- 用户作品表
CREATE TABLE IF NOT EXISTS user_works (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL COMMENT '用户名',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID',
work_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO', 'STORYBOARD_VIDEO') NOT NULL COMMENT '作品类型',
title VARCHAR(200) COMMENT '作品标题',
description TEXT COMMENT '作品描述',
prompt TEXT COMMENT '生成提示词',
result_url VARCHAR(500) COMMENT '结果视频URL',
thumbnail_url VARCHAR(500) COMMENT '缩略图URL',
duration VARCHAR(10) COMMENT '视频时长',
aspect_ratio VARCHAR(10) COMMENT '宽高比',
quality VARCHAR(20) COMMENT '画质',
file_size VARCHAR(20) COMMENT '文件大小',
points_cost INT NOT NULL DEFAULT 0 COMMENT '消耗积分',
status ENUM('PROCESSING', 'COMPLETED', 'FAILED', 'DELETED') NOT NULL DEFAULT 'PROCESSING' COMMENT '作品状态',
is_public BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否公开',
view_count INT NOT NULL DEFAULT 0 COMMENT '浏览次数',
like_count INT NOT NULL DEFAULT 0 COMMENT '点赞次数',
download_count INT NOT NULL DEFAULT 0 COMMENT '下载次数',
tags VARCHAR(500) COMMENT '标签',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at DATETIME COMMENT '完成时间',
INDEX idx_username_status (username, status),
INDEX idx_task_id (task_id),
INDEX idx_work_type (work_type),
INDEX idx_is_public_status (is_public, status),
INDEX idx_created_at (created_at),
INDEX idx_view_count (view_count),
INDEX idx_like_count (like_count),
INDEX idx_tags (tags),
INDEX idx_prompt (prompt(100))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户作品表';
-- 任务状态表
CREATE TABLE IF NOT EXISTS task_status (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(255) NOT NULL COMMENT '任务ID',
username VARCHAR(255) NOT NULL COMMENT '用户名',
task_type VARCHAR(50) NOT NULL COMMENT '任务类型',
status VARCHAR(50) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态',
progress INT DEFAULT 0 COMMENT '进度百分比',
result_url TEXT COMMENT '结果URL',
error_message TEXT COMMENT '错误信息',
external_task_id VARCHAR(255) COMMENT '外部任务ID',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
last_polled_at TIMESTAMP NULL COMMENT '最后轮询时间',
poll_count INT DEFAULT 0 COMMENT '轮询次数',
max_polls INT DEFAULT 60 COMMENT '最大轮询次数(2小时)',
INDEX idx_task_id (task_id),
INDEX idx_username (username),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_last_polled (last_polled_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务状态表';
-- 成功任务归档表
CREATE TABLE IF NOT EXISTS completed_tasks_archive (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
task_type VARCHAR(50) NOT NULL,
prompt TEXT,
aspect_ratio VARCHAR(20),
duration INT,
hd_mode BOOLEAN DEFAULT FALSE,
result_url TEXT,
real_task_id VARCHAR(255),
progress INT DEFAULT 100,
created_at TIMESTAMP NOT NULL,
completed_at TIMESTAMP NOT NULL,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
points_cost INT DEFAULT 0,
INDEX idx_username (username),
INDEX idx_task_type (task_type),
INDEX idx_created_at (created_at),
INDEX idx_completed_at (completed_at),
INDEX idx_archived_at (archived_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成功任务归档表';
-- 失败任务清理日志表
CREATE TABLE IF NOT EXISTS failed_tasks_cleanup_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
task_type VARCHAR(50) NOT NULL,
error_message TEXT,
created_at TIMESTAMP NOT NULL,
failed_at TIMESTAMP NOT NULL,
cleaned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_username (username),
INDEX idx_task_type (task_type),
INDEX idx_cleaned_at (cleaned_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='失败任务清理日志表';
-- 分镜视频任务表
CREATE TABLE IF NOT EXISTS storyboard_video_tasks (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(50) NOT NULL UNIQUE,
username VARCHAR(100) NOT NULL,
prompt TEXT COMMENT '文本描述/提示词',
image_url TEXT COMMENT '上传的参考图片URL可选',
aspect_ratio VARCHAR(10) NOT NULL COMMENT '宽高比16:9, 4:3, 1:1, 3:4, 9:16',
hd_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否高清模式',
status VARCHAR(20) NOT NULL COMMENT '任务状态PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED',
progress INT NOT NULL DEFAULT 0 COMMENT '进度0-100',
result_url LONGTEXT COMMENT '分镜图URLBase64编码的图片可能非常大- 网格图',
storyboard_images LONGTEXT COMMENT '单独的分镜图片JSON数组每张图片为Base64格式带data URI前缀',
real_task_id VARCHAR(255) COMMENT '外部API返回的真实任务ID',
video_task_ids TEXT COMMENT '多个视频任务IDJSON数组每张图片对应一个视频任务',
video_urls LONGTEXT COMMENT '多个视频URLJSON数组用于拼接',
error_message TEXT COMMENT '错误信息',
cost_points INT NOT NULL DEFAULT 0 COMMENT '消耗积分',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
INDEX idx_username (username),
INDEX idx_status (status),
INDEX idx_task_id (task_id),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分镜视频任务表';
-- ============================================
-- 初始化完成
-- ============================================
-- 所有表结构已创建完成
-- 注意:此文件仅创建表结构,不包含初始数据
-- 如需初始化数据请通过系统管理界面或API进行
--
-- 宝塔面板使用说明:
-- 1. 登录宝塔面板,进入"数据库" -> "phpMyAdmin"
-- 2. 选择或创建数据库建议数据库名aigc_platform
-- 3. 点击"导入" -> 选择此SQL文件 -> 执行
-- 4. 或者使用命令行mysql -u用户名 -p数据库名 < init_database.sql
--
-- 数据库配置建议:
-- - 数据库名aigc_platform
-- - 字符集utf8mb4
-- - 排序规则utf8mb4_unicode_ci
-- ============================================
-- 管理员权限设置
-- ============================================
-- 将 984523799@qq.com 设置为管理员
-- 如果该用户存在,则更新其角色为管理员
UPDATE users
SET role = 'ROLE_ADMIN',
updated_at = CURRENT_TIMESTAMP
WHERE email = '984523799@qq.com';

View File

@@ -0,0 +1,13 @@
-- 将 984523799@qq.com 设置为管理员
-- 执行此脚本前请确保已连接到正确的数据库
-- 更新用户角色为管理员
UPDATE users
SET role = 'ROLE_ADMIN',
updated_at = NOW()
WHERE email = '984523799@qq.com';
-- 验证更新结果
SELECT id, username, email, role, points, is_active, created_at, updated_at
FROM users
WHERE email = '984523799@qq.com';

View File

@@ -0,0 +1,224 @@
# 宝塔面板数据库部署指南
## 📋 部署清单
本部署包包含以下文件:
- `init_database.sql` - 完整的数据库初始化脚本(推荐使用)
- `update_admin_user.sql` - 管理员权限设置脚本
- `数据库完整结构-宝塔导入.sql` - 备用完整结构文件
## 🚀 快速部署步骤
### 第一步:创建数据库
1. 登录宝塔面板
2. 进入【数据库】菜单
3. 点击【添加数据库】
4. 填写以下信息:
- **数据库名**: `aigc_platform`
- **用户名**: `aigc_platform`(建议与数据库名相同)
- **密码**: 自动生成或自定义(请记录下来)
- **字符集**: `utf8mb4`
- **排序规则**: `utf8mb4_unicode_ci`
5. 点击【提交】创建数据库
### 第二步:导入数据库结构
#### 方式一使用phpMyAdmin推荐
1. 在宝塔面板【数据库】列表中,找到 `aigc_platform` 数据库
2. 点击右侧的【管理】按钮,进入 phpMyAdmin
3. 点击顶部菜单【导入】
4. 点击【选择文件】,选择 `init_database.sql`
5. 确保以下设置:
- 字符集:`utf8mb4`
- 格式:`SQL`
6. 点击页面底部【执行】按钮
7. 等待导入完成,显示成功提示
#### 方式二:使用命令行
```bash
# SSH登录服务器后执行
mysql -u aigc_platform -p aigc_platform < init_database.sql
# 输入数据库密码后回车
```
### 第三步:设置管理员权限
导入完成后,需要设置管理员账号权限:
#### 方式一自动设置已包含在init_database.sql中
如果使用 `init_database.sql` 导入,管理员权限已自动设置,无需额外操作。
#### 方式二:手动设置
如果需要手动设置或更改管理员,可以执行 `update_admin_user.sql`
1. 在 phpMyAdmin 中点击【SQL】标签
2.`update_admin_user.sql` 的内容粘贴到文本框
3. 点击【执行】
或者直接在SQL中执行
```sql
UPDATE users
SET role = 'ROLE_ADMIN',
updated_at = CURRENT_TIMESTAMP
WHERE email = '984523799@qq.com';
```
### 第四步:验证数据库
在 phpMyAdmin 或命令行中执行以下查询,验证表结构是否正确:
```sql
-- 查看所有表
SHOW TABLES;
-- 验证管理员用户(如果已注册)
SELECT id, username, email, role, points, created_at
FROM users
WHERE email = '984523799@qq.com';
```
应该看到以下表:
- `users` - 用户表
- `payments` - 支付表
- `orders` - 订单表
- `order_items` - 订单项表
- `text_to_video_tasks` - 文生视频任务表
- `image_to_video_tasks` - 图生视频任务表
- `storyboard_video_tasks` - 分镜视频任务表
- `task_queue` - 任务队列表
- `task_status` - 任务状态表
- `user_works` - 用户作品表
- `user_membership` - 会员表
- `user_activity_stats` - 用户活动统计表
- `failed_tasks_cleanup_log` - 失败任务清理日志表
## 📝 数据库配置信息
部署完成后,需要在应用配置文件中填写数据库信息:
**文件位置**: `src/main/resources/application-prod.properties`
```properties
# 数据库配置
spring.datasource.url=jdbc:mysql://服务器IP:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.username=aigc_platform
spring.datasource.password=你的数据库密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```
**重要参数说明**
- `服务器IP`:
- 如果应用与数据库在同一服务器:使用 `localhost``127.0.0.1`
- 如果数据库在其他服务器使用数据库服务器的IP地址
- `你的数据库密码`: 第一步创建数据库时设置的密码
## 🔒 安全建议
### 1. 数据库访问权限
- 在宝塔面板【数据库】中,点击数据库的【权限】
- 如果应用和数据库在同一服务器,设置为【本地服务器】
- 如果需要远程访问设置【所有人】或指定IP但要确保密码强度足够
### 2. 数据库密码强度
- 使用包含大小写字母、数字、特殊字符的强密码
- 密码长度建议16位以上
### 3. 定期备份
在宝塔面板设置自动备份:
1. 进入【计划任务】
2. 添加【备份数据库】任务
3. 选择 `aigc_platform` 数据库
4. 设置备份周期(建议每天备份)
5. 设置保留份数建议保留7-30份
## ⚙️ 数据库性能优化
### 1. 连接池配置已包含在application配置中
```properties
# 连接池配置支持50-100人并发
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1200000
spring.datasource.hikari.connection-timeout=30000
```
### 2. MySQL配置优化
在宝塔面板【软件商店】->【MySQL】->【设置】->【配置修改】中调整:
```ini
# 根据服务器内存调整示例为4GB内存
innodb_buffer_pool_size = 1G
max_connections = 500
query_cache_size = 128M
tmp_table_size = 64M
max_heap_table_size = 64M
```
## 🐛 常见问题
### 1. 导入失败:字符集错误
**解决方案**
- 确保数据库字符集为 `utf8mb4`
- 在导入时选择字符集为 `utf8mb4`
### 2. 连接失败Access denied
**解决方案**
- 检查数据库用户名和密码是否正确
- 检查数据库访问权限设置
### 3. 表已存在错误
**解决方案**
- 如果是重新部署,先删除旧数据库或清空所有表
- 在 phpMyAdmin 中选择数据库,点击【操作】->【清空数据库】
### 4. 管理员权限未生效
**原因**:用户还未注册
**解决方案**
1. 先在前端使用 `984523799@qq.com` 注册账号
2. 注册完成后,数据库会自动将该用户设置为管理员(因为 `data.sql` 中有自动更新脚本)
3. 或者注册后手动执行 `update_admin_user.sql`
## 📊 数据库监控
在宝塔面板可以监控数据库状态:
1. 进入【数据库】菜单
2. 点击数据库名称右侧的【监控】
3. 查看:
- 查询次数
- 慢查询
- 连接数
- 缓存命中率
## 📞 技术支持
如遇到问题,请检查:
1. 宝塔面板【日志】中的 MySQL 错误日志
2. 应用日志中的数据库连接错误
3. 确保 MySQL 服务正在运行
---
**部署完成标志**
- ✅ 数据库创建成功
- ✅ 表结构导入成功13个表
- ✅ 管理员权限设置完成
- ✅ 应用能够成功连接数据库
祝部署顺利!🎉

View File

@@ -0,0 +1,370 @@
-- ============================================
-- AIGC平台数据库完整结构
-- 适用于宝塔面板部署
-- 创建时间2025
-- ============================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ============================================
-- 1. 基础表结构schema.sql
-- ============================================
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(100) NOT NULL,
role VARCHAR(30) NOT NULL DEFAULT 'ROLE_USER',
points INT NOT NULL DEFAULT 50,
frozen_points INT NOT NULL DEFAULT 0 COMMENT '冻结积分',
phone VARCHAR(20),
avatar VARCHAR(500),
nickname VARCHAR(100),
gender VARCHAR(10),
birthday DATE,
address TEXT,
is_active BOOLEAN NOT NULL DEFAULT TRUE,
last_login_at TIMESTAMP NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_email (email),
INDEX idx_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 支付表
CREATE TABLE IF NOT EXISTS payments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id VARCHAR(50) NOT NULL UNIQUE,
amount DECIMAL(10,2) NOT NULL,
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
payment_method VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
description VARCHAR(500),
external_transaction_id VARCHAR(100),
callback_url VARCHAR(1000),
return_url VARCHAR(1000),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
paid_at TIMESTAMP NULL,
user_id BIGINT,
FOREIGN KEY (user_id) REFERENCES users(id),
INDEX idx_order_id (order_id),
INDEX idx_user_id (user_id),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支付表';
-- 订单表
CREATE TABLE IF NOT EXISTS orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_number VARCHAR(50) NOT NULL UNIQUE,
total_amount DECIMAL(10,2) NOT NULL,
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
order_type VARCHAR(20) NOT NULL DEFAULT 'PRODUCT',
description VARCHAR(500),
notes TEXT,
shipping_address TEXT,
billing_address TEXT,
contact_phone VARCHAR(20),
contact_email VARCHAR(100),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
paid_at TIMESTAMP NULL,
shipped_at TIMESTAMP NULL,
delivered_at TIMESTAMP NULL,
cancelled_at TIMESTAMP NULL,
user_id BIGINT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
INDEX idx_order_number (order_number),
INDEX idx_user_id (user_id),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
-- 订单项表
CREATE TABLE IF NOT EXISTS order_items (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
product_description VARCHAR(500),
product_sku VARCHAR(200),
unit_price DECIMAL(10,2) NOT NULL,
quantity INT NOT NULL,
subtotal DECIMAL(10,2) NOT NULL,
product_image VARCHAR(100),
order_id BIGINT NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
INDEX idx_order_id (order_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单项表';
-- 会员等级表
CREATE TABLE IF NOT EXISTS membership_levels (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
display_name VARCHAR(50) NOT NULL,
description TEXT,
price DECIMAL(10,2) NOT NULL DEFAULT 0,
duration_days INT NOT NULL DEFAULT 30,
points_bonus INT NOT NULL DEFAULT 0,
features JSON,
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员等级表';
-- 用户会员信息表
CREATE TABLE IF NOT EXISTS user_memberships (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
membership_level_id BIGINT NOT NULL,
start_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
end_date TIMESTAMP NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
auto_renew BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (membership_level_id) REFERENCES membership_levels(id),
UNIQUE KEY unique_active_membership (user_id, status),
INDEX idx_user_id (user_id),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会员信息表';
-- 视频生成任务表(基础表)
CREATE TABLE IF NOT EXISTS video_tasks (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_id VARCHAR(100) NOT NULL UNIQUE,
user_id BIGINT NOT NULL,
task_type VARCHAR(50) NOT NULL,
title VARCHAR(200) NOT NULL,
description TEXT,
input_text TEXT,
input_image_url VARCHAR(500),
output_video_url VARCHAR(500),
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
progress INT NOT NULL DEFAULT 0,
error_message TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
completed_at TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
INDEX idx_task_id (task_id),
INDEX idx_user_id (user_id),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频生成任务表';
-- 用户作品表(基础版)
CREATE TABLE IF NOT EXISTS user_works_base (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
title VARCHAR(200) NOT NULL,
description TEXT,
work_type VARCHAR(50) NOT NULL,
cover_image VARCHAR(500),
video_url VARCHAR(500),
tags VARCHAR(500),
is_public BOOLEAN NOT NULL DEFAULT TRUE,
view_count INT NOT NULL DEFAULT 0,
like_count INT NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
INDEX idx_user_id (user_id),
INDEX idx_work_type (work_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户作品表(基础版)';
-- 系统配置表
CREATE TABLE IF NOT EXISTS system_configs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
config_key VARCHAR(100) NOT NULL UNIQUE,
config_value TEXT,
description VARCHAR(500),
config_type VARCHAR(50) NOT NULL DEFAULT 'STRING',
is_public BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
-- ============================================
-- 2. 迁移表结构Flyway Migration
-- ============================================
-- V3: 任务队列表
CREATE TABLE IF NOT EXISTS task_queue (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL COMMENT '用户名',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID',
task_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO') NOT NULL COMMENT '任务类型',
status ENUM('PENDING', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELLED', 'TIMEOUT') NOT NULL DEFAULT 'PENDING' COMMENT '队列状态',
priority INT NOT NULL DEFAULT 0 COMMENT '优先级,数字越小优先级越高',
real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID',
last_check_time DATETIME COMMENT '最后一次检查时间',
check_count INT NOT NULL DEFAULT 0 COMMENT '检查次数',
max_check_count INT NOT NULL DEFAULT 30 COMMENT '最大检查次数30次 * 2分钟 = 60分钟',
error_message TEXT COMMENT '错误信息',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at DATETIME COMMENT '完成时间',
INDEX idx_username_status (username, status),
INDEX idx_status_priority (status, priority),
INDEX idx_last_check_time (last_check_time),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务队列表';
-- V4: 积分冻结记录表
CREATE TABLE IF NOT EXISTS points_freeze_records (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL COMMENT '用户名',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID',
task_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO') NOT NULL COMMENT '任务类型',
freeze_points INT NOT NULL COMMENT '冻结的积分数量',
status ENUM('FROZEN', 'DEDUCTED', 'RETURNED', 'EXPIRED') NOT NULL DEFAULT 'FROZEN' COMMENT '冻结状态',
freeze_reason VARCHAR(200) COMMENT '冻结原因',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at DATETIME COMMENT '完成时间',
INDEX idx_username_status (username, status),
INDEX idx_task_id (task_id),
INDEX idx_created_at (created_at),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='积分冻结记录表';
-- V5: 用户作品表(详细版)
CREATE TABLE IF NOT EXISTS user_works (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL COMMENT '用户名',
task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID',
work_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO') NOT NULL COMMENT '作品类型',
title VARCHAR(200) COMMENT '作品标题',
description TEXT COMMENT '作品描述',
prompt TEXT COMMENT '生成提示词',
result_url VARCHAR(500) COMMENT '结果视频URL',
thumbnail_url VARCHAR(500) COMMENT '缩略图URL',
duration VARCHAR(10) COMMENT '视频时长',
aspect_ratio VARCHAR(10) COMMENT '宽高比',
quality VARCHAR(20) COMMENT '画质',
file_size VARCHAR(20) COMMENT '文件大小',
points_cost INT NOT NULL DEFAULT 0 COMMENT '消耗积分',
status ENUM('PROCESSING', 'COMPLETED', 'FAILED', 'DELETED') NOT NULL DEFAULT 'PROCESSING' COMMENT '作品状态',
is_public BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否公开',
view_count INT NOT NULL DEFAULT 0 COMMENT '浏览次数',
like_count INT NOT NULL DEFAULT 0 COMMENT '点赞次数',
download_count INT NOT NULL DEFAULT 0 COMMENT '下载次数',
tags VARCHAR(500) COMMENT '标签',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at DATETIME COMMENT '完成时间',
INDEX idx_username_status (username, status),
INDEX idx_task_id (task_id),
INDEX idx_work_type (work_type),
INDEX idx_is_public_status (is_public, status),
INDEX idx_created_at (created_at),
INDEX idx_view_count (view_count),
INDEX idx_like_count (like_count),
INDEX idx_tags (tags),
INDEX idx_prompt (prompt(100))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户作品表';
-- V6: 任务状态表
CREATE TABLE IF NOT EXISTS task_status (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(255) NOT NULL COMMENT '任务ID',
username VARCHAR(255) NOT NULL COMMENT '用户名',
task_type VARCHAR(50) NOT NULL COMMENT '任务类型',
status VARCHAR(50) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态',
progress INT DEFAULT 0 COMMENT '进度百分比',
result_url TEXT COMMENT '结果URL',
error_message TEXT COMMENT '错误信息',
external_task_id VARCHAR(255) COMMENT '外部任务ID',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
last_polled_at TIMESTAMP NULL COMMENT '最后轮询时间',
poll_count INT DEFAULT 0 COMMENT '轮询次数',
max_polls INT DEFAULT 60 COMMENT '最大轮询次数(2小时)',
INDEX idx_task_id (task_id),
INDEX idx_username (username),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_last_polled (last_polled_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务状态表';
-- V7: 任务清理表
-- 成功任务归档表
CREATE TABLE IF NOT EXISTS completed_tasks_archive (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
task_type VARCHAR(50) NOT NULL,
prompt TEXT,
aspect_ratio VARCHAR(20),
duration INT,
hd_mode BOOLEAN DEFAULT FALSE,
result_url TEXT,
real_task_id VARCHAR(255),
progress INT DEFAULT 100,
created_at TIMESTAMP NOT NULL,
completed_at TIMESTAMP NOT NULL,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
points_cost INT DEFAULT 0,
INDEX idx_username (username),
INDEX idx_task_type (task_type),
INDEX idx_created_at (created_at),
INDEX idx_completed_at (completed_at),
INDEX idx_archived_at (archived_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成功任务归档表';
-- 失败任务清理日志表
CREATE TABLE IF NOT EXISTS failed_tasks_cleanup_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
task_type VARCHAR(50) NOT NULL,
error_message TEXT,
created_at TIMESTAMP NOT NULL,
failed_at TIMESTAMP NOT NULL,
cleaned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_username (username),
INDEX idx_task_type (task_type),
INDEX idx_cleaned_at (cleaned_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='失败任务清理日志表';
-- V8: 分镜视频任务表
CREATE TABLE IF NOT EXISTS storyboard_video_tasks (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
task_id VARCHAR(50) NOT NULL UNIQUE,
username VARCHAR(100) NOT NULL,
prompt TEXT,
image_url VARCHAR(500),
aspect_ratio VARCHAR(10) NOT NULL,
hd_mode BOOLEAN NOT NULL DEFAULT FALSE,
status VARCHAR(20) NOT NULL,
progress INT NOT NULL DEFAULT 0,
result_url VARCHAR(500),
real_task_id VARCHAR(255),
error_message TEXT,
cost_points INT NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
completed_at TIMESTAMP,
INDEX idx_username (username),
INDEX idx_status (status),
INDEX idx_task_id (task_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分镜视频任务表';
-- ============================================
-- 完成
-- ============================================
SET FOREIGN_KEY_CHECKS = 1;
-- 显示所有表
SHOW TABLES;

View File

@@ -0,0 +1,227 @@
# 宝塔数据库部署检查清单
部署日期: _______________
操作人员: _______________
## 📋 部署前准备
### 1. 服务器环境检查
- [ ] 服务器已安装宝塔面板(版本: ______
- [ ] MySQL/MariaDB已安装版本: ______
- [ ] MySQL服务运行正常
- [ ] 服务器内存 >= 2GB推荐4GB+
- [ ] 磁盘空间 >= 10GB
### 2. 部署包确认
- [ ] 已下载 `database_baota_deploy.zip`
- [ ] 已解压到服务器
- [ ] 包含以下文件:
- [ ] init_database.sql
- [ ] update_admin_user.sql
- [ ] 数据库完整结构-宝塔导入.sql
- [ ] 宝塔数据库部署指南.md
- [ ] README.md
- [ ] deploy_database.sh
## 🚀 部署步骤
### 第一步:创建数据库
- [ ] 登录宝塔面板
- [ ] 进入【数据库】菜单
- [ ] 点击【添加数据库】
- [ ] 数据库名: `aigc_platform`
- [ ] 用户名: `aigc_platform`
- [ ] 密码: ___________________________(请记录)
- [ ] 字符集: `utf8mb4`
- [ ] 排序规则: `utf8mb4_unicode_ci`
- [ ] 创建成功
### 第二步:导入数据库
- [ ] 点击数据库【管理】按钮
- [ ] 进入phpMyAdmin
- [ ] 点击【导入】标签
- [ ] 选择 `init_database.sql` 文件
- [ ] 字符集选择 `utf8mb4`
- [ ] 点击【执行】
- [ ] 导入成功(显示成功消息)
### 第三步:验证数据库
- [ ] 在phpMyAdmin中点击左侧数据库名
- [ ] 查看表列表
- [ ] 确认包含13个表
- [ ] users
- [ ] payments
- [ ] orders
- [ ] order_items
- [ ] text_to_video_tasks
- [ ] image_to_video_tasks
- [ ] storyboard_video_tasks
- [ ] task_queue
- [ ] task_status
- [ ] user_works
- [ ] user_membership
- [ ] user_activity_stats
- [ ] failed_tasks_cleanup_log
### 第四步:配置管理员
- [ ] 管理员邮箱: `984523799@qq.com`
- [ ] 已在 `init_database.sql` 中自动配置
- [ ] 或手动执行 `update_admin_user.sql`
## ⚙️ 应用配置
### 更新配置文件
- [ ] 找到文件: `src/main/resources/application-prod.properties`
- [ ] 更新以下配置:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/aigc_platform?...
spring.datasource.username=aigc_platform
spring.datasource.password=你的数据库密码
```
配置信息记录:
```
数据库地址: _______________________________
数据库端口: 3306
数据库名: aigc_platform
用户名: aigc_platform
密码: _______________________________
```
## 🔒 安全配置
### 数据库访问权限
- [ ] 设置访问权限(本地服务器/所有人/指定IP
- [ ] 权限类型: _______________________
### 防火墙配置(如需远程连接)
- [ ] 开放3306端口
- [ ] 或使用SSH隧道
### 备份配置
- [ ] 在宝塔面板设置自动备份
- [ ] 备份周期: 每天 / 每周(选择一个)
- [ ] 保留份数: _______
- [ ] 备份位置: _______________________
## ✅ 功能测试
### 数据库连接测试
- [ ] 使用命令行测试连接:
```bash
mysql -uaigc_platform -p aigc_platform
```
- [ ] 连接成功
### 表查询测试
- [ ] 执行查询:
```sql
SHOW TABLES;
SELECT COUNT(*) FROM users;
```
- [ ] 查询成功
### 管理员账号验证(注册后执行)
- [ ] 使用 `984523799@qq.com` 注册账号
- [ ] 执行查询验证角色:
```sql
SELECT id, username, email, role FROM users WHERE email = '984523799@qq.com';
```
- [ ] role = 'ROLE_ADMIN' ✓
### 应用连接测试
- [ ] 启动Spring Boot应用
- [ ] 查看日志,确认数据库连接成功
- [ ] 无数据库连接错误
## 📊 性能优化(可选)
### MySQL配置优化
- [ ] 调整 `innodb_buffer_pool_size`
- [ ] 调整 `max_connections`
- [ ] 调整 `query_cache_size`
### 连接池配置
- [ ] 已配置HikariCP连接池
- [ ] maximum-pool-size: 50
- [ ] minimum-idle: 10
## 🐛 问题记录
遇到的问题及解决方案:
| 问题描述 | 解决方案 | 解决时间 |
|---------|---------|---------|
| | | |
| | | |
| | | |
## 📝 部署总结
### 部署结果
- [ ] 部署成功 ✅
- [ ] 部署失败 ❌(原因: _____________
### 部署时间记录
- 开始时间: _______________
- 结束时间: _______________
- 总耗时: _______________
### 资源使用
- 数据库大小: _______ MB
- 表数量: 13
- 索引数量: _______
### 后续工作
- [ ] 监控数据库性能
- [ ] 设置定期备份
- [ ] 配置数据库监控告警
- [ ] 文档归档
## 📞 联系信息
### 技术支持
- 部署文档: README.md
- 详细指南: 宝塔数据库部署指南.md
### 应急联系
- 运维人员: _______________
- 联系电话: _______________
- 备用联系: _______________
---
**部署负责人签名**: _______________
**审核人签名**: _______________
**日期**: _______________
---
## 附录:常用命令
```bash
# 查看MySQL状态
systemctl status mysql
# 重启MySQL
systemctl restart mysql
# 查看数据库列表
mysql -uroot -p -e "SHOW DATABASES;"
# 备份数据库
mysqldump -uaigc_platform -p aigc_platform > backup.sql
# 恢复数据库
mysql -uaigc_platform -p aigc_platform < backup.sql
# 查看表大小
SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = 'aigc_platform'
ORDER BY (data_length + index_length) DESC;
```
**部署清单版本**: 1.0
**更新日期**: 2025-11-10