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,108 @@
# 生产环境配置
spring.h2.console.enabled=false
# MySQL DataSource (PROD) - 使用环境变量
spring.datasource.url=jdbc:mysql://mysql:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username= aigc_user
spring.datasource.password= jRbHPZbbkdm24yTT
# 数据库连接池配置 (生产环境 - 支持50人并发)
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1200000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.leak-detection-threshold=60000
spring.datasource.hikari.validation-timeout=3000
spring.datasource.hikari.connection-test-query=SELECT 1
# 生产环境:使用 update 模式自动创建/更新表结构(首次部署)
# 部署完成后可改为 validate 模式以提高安全性
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# 禁用 SQL 脚本自动运行
spring.sql.init.mode=never
# Thymeleaf 可启用缓存
spring.thymeleaf.cache=true
# AI API配置 (生产环境)
# 文生视频、图生视频、分镜视频都使用Comfly API
ai.api.base-url=${AI_API_BASE_URL:https://ai.comfly.chat}
ai.api.key=${AI_API_KEY}
# 文生图使用Comfly API
ai.image.api.base-url=${AI_IMAGE_API_BASE_URL:https://ai.comfly.chat}
ai.image.api.key=${AI_IMAGE_API_KEY}
# 支付宝配置 (生产环境)
alipay.app-id=${ALIPAY_APP_ID}
alipay.private-key=${ALIPAY_PRIVATE_KEY}
alipay.public-key=${ALIPAY_PUBLIC_KEY}
alipay.gateway-url=https://openapi.alipay.com/gateway.do
alipay.charset=UTF-8
alipay.sign-type=RSA2
alipay.domain=${ALIPAY_DOMAIN:https://vionow.com}
alipay.notify-url=${ALIPAY_NOTIFY_URL:https://vionow.com/api/payments/alipay/notify}
alipay.return-url=${ALIPAY_RETURN_URL:https://vionow.com/payment/success}
# JWT配置 - 使用环境变量
jwt.secret=${JWT_SECRET}
jwt.expiration=${JWT_EXPIRATION:604800000}
# 腾讯云SES配置 (生产环境)
tencent.ses.secret-id=${TENCENT_SES_SECRET_ID}
tencent.ses.secret-key=${TENCENT_SES_SECRET_KEY}
tencent.ses.region=ap-hongkong
tencent.ses.from-email=${TENCENT_SES_FROM_EMAIL}
tencent.ses.from-name=AIGC平台
# 邮件模板ID在腾讯云SES控制台创建模板后获取
# 如果未配置或为0将使用开发模式仅记录日志
tencent.ses.template-id=${TENCENT_SES_TEMPLATE_ID}
# Tomcat线程池配置 (生产环境 - 支持50人并发)
server.tomcat.threads.max=150
server.tomcat.threads.min-spare=20
server.tomcat.max-connections=500
server.tomcat.accept-count=100
server.tomcat.connection-timeout=20000
# 生产环境日志配置
logging.level.root=INFO
logging.level.com.example.demo=INFO
logging.level.org.springframework.security=WARN
logging.file.name=${LOG_FILE_PATH:./logs/application.log}
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
# 视频处理配置
# 临时文件目录(相对路径:基于应用运行目录,或绝对路径)
# 生产环境建议使用绝对路径,如:/app/temp 或 C:\app\temp
app.temp.dir=${TEMP_DIR:./temp}
# FFmpeg路径如果FFmpeg在PATH中使用 "ffmpeg",否则使用完整路径)
# 生产环境建议使用完整路径,如:/usr/bin/ffmpeg 或 C:\ffmpeg\bin\ffmpeg.exe
app.ffmpeg.path=${FFMPEG_PATH:ffmpeg}
# 文件上传配置
# 上传文件保存目录(相对路径:基于应用运行目录,或绝对路径)
# 生产环境建议使用绝对路径,如:/app/uploads 或 C:\app\uploads
# 注意:确保应用有读写权限
app.upload.path=${UPLOAD_PATH:./uploads}
# SpringDoc OpenAPI (Swagger) 配置
# 生产环境建议禁用或限制访问
springdoc.api-docs.path=/v3/api-docs
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.swagger-ui.enabled=true
springdoc.swagger-ui.operationsSorter=method
springdoc.swagger-ui.tagsSorter=alpha
springdoc.swagger-ui.tryItOutEnabled=true
springdoc.swagger-ui.filter=true
springdoc.swagger-ui.display-request-duration=true
springdoc.swagger-ui.doc-expansion=none

View File

@@ -0,0 +1,49 @@
# 生产环境配置文件模板
# 复制此文件为 application-prod.properties 并修改相应配置
# 数据库配置
spring.datasource.url=jdbc:mysql://172.22.0.2:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.username=your_db_username
spring.datasource.password=your_db_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
# JWT配置
jwt.secret=your-jwt-secret-key-change-this-in-production
jwt.expiration=86400000
# AI API配置
ai.api.base-url=https://ai.comfly.chat
ai.api.key=your-ai-api-key
ai.image.api.base-url=https://ai.comfly.chat
ai.image.api.key=your-ai-image-api-key
# 文件上传配置
app.upload.path=./uploads
app.temp.dir=./temp
app.log.file.path=./logs/application.log
# FFmpeg配置
app.ffmpeg.path=ffmpeg
# 支付宝配置(可选)
alipay.app-id=your-alipay-app-id
alipay.private-key=your-alipay-private-key
alipay.public-key=your-alipay-public-key
alipay.domain=https://vionow.com
alipay.notify-url=https://vionow.com/api/payments/alipay/notify
alipay.return-url=https://vionow.com/payment/success
# 服务器配置
server.port=8080
server.servlet.context-path=/
# 日志配置
logging.level.root=INFO
logging.level.com.example.demo=INFO

View File

@@ -0,0 +1,111 @@
#!/bin/bash
# 宝塔面板后端启动脚本
# 设置JAVA_HOME根据实际Java安装路径修改
# export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
# export PATH=$JAVA_HOME/bin:$PATH
# 应用配置
APP_NAME="aigc-backend"
APP_JAR="app.jar"
APP_PORT=8080
APP_HOME=$(cd "$(dirname "$0")"; pwd)
LOG_DIR="$APP_HOME/logs"
PID_FILE="$APP_HOME/app.pid"
# JVM参数根据服务器内存调整
JAVA_OPTS="-Xms1g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Djava.security.egd=file:/dev/./urandom"
# 创建日志目录
mkdir -p $LOG_DIR
# 启动函数
start() {
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "$APP_NAME 已经在运行中 (PID: $PID)"
return 1
else
rm -f $PID_FILE
fi
fi
echo "启动 $APP_NAME..."
cd $APP_HOME
nohup java $JAVA_OPTS -jar $APP_JAR --spring.profiles.active=prod > $LOG_DIR/app.log 2>&1 &
echo $! > $PID_FILE
echo "$APP_NAME 启动成功 (PID: $(cat $PID_FILE))"
}
# 停止函数
stop() {
if [ ! -f "$PID_FILE" ]; then
echo "$APP_NAME 未运行"
return 1
fi
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "停止 $APP_NAME (PID: $PID)..."
kill $PID
sleep 3
if ps -p $PID > /dev/null 2>&1; then
kill -9 $PID
fi
rm -f $PID_FILE
echo "$APP_NAME 已停止"
else
echo "$APP_NAME 未运行"
rm -f $PID_FILE
fi
}
# 重启函数
restart() {
stop
sleep 2
start
}
# 状态检查
status() {
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "$APP_NAME 正在运行 (PID: $PID)"
return 0
else
echo "$APP_NAME 未运行"
rm -f $PID_FILE
return 1
fi
else
echo "$APP_NAME 未运行"
return 1
fi
}
# 主逻辑
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "用法: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0