From b6add404b3631c5820322d59aa602ef9ac6fe9f2 Mon Sep 17 00:00:00 2001 From: xupei Date: Fri, 28 Nov 2025 13:36:46 +0800 Subject: [PATCH 01/11] =?UTF-8?q?BUGFIX:=20=E6=B7=BB=E5=8A=A0=E5=B7=B2?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=9A=84=E8=B4=A6=E5=8F=B7=E4=B8=BA=E5=AD=90?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=EF=BC=8C=E8=AF=A5=E8=B4=A6=E5=8F=B7=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=9C=9F=E6=B2=A1=E6=9C=89=E5=90=8C=E6=AD=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/AccountServiceImpl.java | 5 +++++ src/main/java/com/ai/da/service/impl/StripeServiceImpl.java | 1 + 2 files changed, 6 insertions(+) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 09286981..4a9e4a49 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -2572,6 +2572,11 @@ public class AccountServiceImpl extends ServiceImpl impl throw new BusinessException("Access denied. Insufficient permissions."); } + // 判断当前账号的有效期是否与管理员同步 + if (exAccountInfo.getValidEndTime() < adminAcc.getValidEndTime()){ + exAccountInfo.setValidEndTime(adminAcc.getValidEndTime()); + } + // 校验用户名是否同名 if (!StringUtil.isNullOrEmpty(addSubAccountDTO.getUserName()) && !exAccountInfo.getUserName().equals(addSubAccountDTO.getUserName()) diff --git a/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java b/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java index 373942e0..47a2bf36 100644 --- a/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java @@ -167,6 +167,7 @@ public class StripeServiceImpl implements StripeService { String orderId = orderInfo.getOrderNo(); + // Alipay - Not supported when using Checkout in subscription mode or setup mode. if (payType.equals("recurring")){ sessionBuilder.setMode(SessionCreateParams.Mode.SUBSCRIPTION); sessionBuilder.setSubscriptionData(SessionCreateParams.SubscriptionData.builder().setDescription("AiDA - " + orderId).build()); From 6c8b316dfd6e6b448b2edce742f69bd4ba52db4b Mon Sep 17 00:00:00 2001 From: xupei Date: Fri, 28 Nov 2025 14:40:09 +0800 Subject: [PATCH 02/11] =?UTF-8?q?BUGFIX:=20=E6=B7=BB=E5=8A=A0=E5=B7=B2?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=9A=84=E8=B4=A6=E5=8F=B7=E4=B8=BA=E5=AD=90?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=EF=BC=8C=E8=AF=A5=E8=B4=A6=E5=8F=B7=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=9C=9F=E6=B2=A1=E6=9C=89=E5=90=8C=E6=AD=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/service/impl/AccountServiceImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 4a9e4a49..463e5282 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -2492,8 +2492,15 @@ public class AccountServiceImpl extends ServiceImpl impl if (Objects.nonNull(subAccount) && personAccRole.contains(subAccount.getSystemUser())) { log.info("将用户{} 加入组织{}", addSubAccountDTO.getUserEmail(), adminAcc.getOrganizationName()); subAccount.setUserName(addSubAccountDTO.getUserName()); - if (!StringUtil.isNullOrEmpty(addSubAccountDTO.getUserPassword())) + if (!StringUtil.isNullOrEmpty(addSubAccountDTO.getUserPassword())){ subAccount.setUserPassword(addSubAccountDTO.getUserPassword()); + } + + // 判断当前账号的有效期是否与管理员同步 + if (subAccount.getValidEndTime() < adminAcc.getValidEndTime()){ + subAccount.setValidEndTime(adminAcc.getValidEndTime()); + } + subAccount.setSystemUser(subUserRole); subAccount.setOrganizationName(adminAcc.getOrganizationName()); subAccount.setParentId(adminAcc.getId()); @@ -2572,11 +2579,6 @@ public class AccountServiceImpl extends ServiceImpl impl throw new BusinessException("Access denied. Insufficient permissions."); } - // 判断当前账号的有效期是否与管理员同步 - if (exAccountInfo.getValidEndTime() < adminAcc.getValidEndTime()){ - exAccountInfo.setValidEndTime(adminAcc.getValidEndTime()); - } - // 校验用户名是否同名 if (!StringUtil.isNullOrEmpty(addSubAccountDTO.getUserName()) && !exAccountInfo.getUserName().equals(addSubAccountDTO.getUserName()) From 3aa744895fe407cf9811776deec7542651a17241 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 14:55:50 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20.gitea/workflows/dev?= =?UTF-8?q?elop=5Fbuild=5Fmanual.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/develop_build_manual.yaml | 143 +++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 .gitea/workflows/develop_build_manual.yaml diff --git a/.gitea/workflows/develop_build_manual.yaml b/.gitea/workflows/develop_build_manual.yaml new file mode 100644 index 00000000..04da5c7f --- /dev/null +++ b/.gitea/workflows/develop_build_manual.yaml @@ -0,0 +1,143 @@ +name: 手动 AiDA back-java Develop 分支构建部署 +on: + workflow_dispatch: + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-version-aida-back-test + + steps: + - name: 1.检出代码 + uses: actions/checkout@v4 + with: + ref: dev/3.1_release_merge + + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: '8' + distribution: 'temurin' + + - name: 2.设置JAVA Maven 环境 + run: | + # 适配act的root用户和Gitea Runner普通用户 + SUDO="" + [ "$(id -u)" != "0" ] && SUDO="sudo" + + # 安装依赖 + $SUDO apt update && $SUDO apt install -y wget tar --no-install-recommends + + # 下载并安装Maven + MAVEN_VERSION="3.9.11" + MAVEN_TAR="apache-maven-${MAVEN_VERSION}-bin.tar.gz" + MAVEN_URL="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_TAR}" + wget --no-verbose -O /tmp/${MAVEN_TAR} ${MAVEN_URL} + + # 解压+软链接 + $SUDO tar -xzf /tmp/${MAVEN_TAR} -C /usr/local/ + $SUDO ln -sf /usr/local/apache-maven-${MAVEN_VERSION} /usr/local/maven + + # 配置PATH + echo "/usr/local/maven/bin" >> $GITHUB_PATH + export PATH="/usr/local/maven/bin:$PATH" + + # 验证 + mvn -v + + - name: 2.构建jar包 + run: + mvn -B clean package -DskipTests --file pom.xml + + - name: 3.检查 Runner 本地文件 + run: | + echo "当前目录:$(pwd)" + echo "target 目录内容:" + ls -la ./target/ + + # 容错:处理通配符无匹配的情况 + JAR_FILE=$(ls ./target/*.jar 2>/dev/null | head -n1) + if [ -z "$JAR_FILE" ] || [ ! -f "$JAR_FILE" ]; then + echo "❌ Runner 本地无有效 JAR 包!" + exit 1 + fi + + # 检查Docker配置文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "./$FILE" ]; then + echo "❌ 缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 本地文件校验通过!" + + - name: 4. 同步文件到远程服务器 + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + source: "./target/*.jar,./Dockerfile,./docker-compose.yml" + target: ${{ env.REMOTE_DEPLOY_PATH }} + ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" + strip_components: 0 + + - name: 5. 验证远程文件 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 远程部署目录文件列表 =====" + ls -la ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:检查JAR包 + REMOTE_JAR=$(ls ${{ env.REMOTE_DEPLOY_PATH }}/target/*.jar 2>/dev/null | head -n1) + if [ -z "$REMOTE_JAR" ] || [ ! -f "$REMOTE_JAR" ]; then + echo "❌ 远程服务器无有效 JAR 包!" + exit 1 + fi + + # 检查Docker文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "${{ env.REMOTE_DEPLOY_PATH }}/$FILE" ]; then + echo "❌ 远程缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 远程文件校验通过!" + + - name: 6. 部署和运行服务 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 开始部署服务 =====" + cd ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:停止旧容器(不存在则跳过) + echo "停止旧容器..." + docker compose down || true + + # 清理无效镜像(可选,释放空间) + docker system prune -f + + # 构建并启动新容器 + echo "构建Docker镜像..." + docker compose build --no-cache + echo "启动服务..." + docker compose up -d + + # 验证服务状态 + echo "验证容器状态..." + docker compose ps + echo "✅ 部署完成!" \ No newline at end of file From dac51afe730abb484da0b13eff4008e7a40ec254 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:04:01 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20docker-compose.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..2399eac0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +services: + aida_back: + container_name: develop-version-aida-back-test + build: . + volumes: + # 数据挂载 + - ./log:/log + ports: + - '10091:5567' \ No newline at end of file From a91f9ccdd458c78ecfdee57b76a0dec3a3455b74 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:09:33 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?elop=5Fbuild=5Fmanual.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/develop_build_manual.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/develop_build_manual.yaml b/.gitea/workflows/develop_build_manual.yaml index 04da5c7f..c75493d0 100644 --- a/.gitea/workflows/develop_build_manual.yaml +++ b/.gitea/workflows/develop_build_manual.yaml @@ -11,7 +11,7 @@ jobs: packages: write env: - REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-version-aida-back-test + REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-version-aida-back steps: - name: 1.检出代码 From dbf9b2d72277ad78c98fd92dce9422c1b1181e44 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:13:48 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20.gitea/workflows/dev?= =?UTF-8?q?elop=5Fbuild.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/develop_build.yaml | 146 ++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 .gitea/workflows/develop_build.yaml diff --git a/.gitea/workflows/develop_build.yaml b/.gitea/workflows/develop_build.yaml new file mode 100644 index 00000000..4f005b4f --- /dev/null +++ b/.gitea/workflows/develop_build.yaml @@ -0,0 +1,146 @@ +name: 手动 AiDA back-java Develop 分支构建部署 +on: + workflow_dispatch: + push: + branches: + - dev/3.1_release_merge + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-version-aida-back + + steps: + - name: 1.检出代码 + uses: actions/checkout@v4 + with: + ref: dev/3.1_release_merge + + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: '8' + distribution: 'temurin' + + - name: 2.设置JAVA Maven 环境 + run: | + # 适配act的root用户和Gitea Runner普通用户 + SUDO="" + [ "$(id -u)" != "0" ] && SUDO="sudo" + + # 安装依赖 + $SUDO apt update && $SUDO apt install -y wget tar --no-install-recommends + + # 下载并安装Maven + MAVEN_VERSION="3.9.11" + MAVEN_TAR="apache-maven-${MAVEN_VERSION}-bin.tar.gz" + MAVEN_URL="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_TAR}" + wget --no-verbose -O /tmp/${MAVEN_TAR} ${MAVEN_URL} + + # 解压+软链接 + $SUDO tar -xzf /tmp/${MAVEN_TAR} -C /usr/local/ + $SUDO ln -sf /usr/local/apache-maven-${MAVEN_VERSION} /usr/local/maven + + # 配置PATH + echo "/usr/local/maven/bin" >> $GITHUB_PATH + export PATH="/usr/local/maven/bin:$PATH" + + # 验证 + mvn -v + + - name: 2.构建jar包 + run: + mvn -B clean package -DskipTests --file pom.xml + + - name: 3.检查 Runner 本地文件 + run: | + echo "当前目录:$(pwd)" + echo "target 目录内容:" + ls -la ./target/ + + # 容错:处理通配符无匹配的情况 + JAR_FILE=$(ls ./target/*.jar 2>/dev/null | head -n1) + if [ -z "$JAR_FILE" ] || [ ! -f "$JAR_FILE" ]; then + echo "❌ Runner 本地无有效 JAR 包!" + exit 1 + fi + + # 检查Docker配置文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "./$FILE" ]; then + echo "❌ 缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 本地文件校验通过!" + + - name: 4. 同步文件到远程服务器 + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + source: "./target/*.jar,./Dockerfile,./docker-compose.yml" + target: ${{ env.REMOTE_DEPLOY_PATH }} + ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" + strip_components: 0 + + - name: 5. 验证远程文件 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 远程部署目录文件列表 =====" + ls -la ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:检查JAR包 + REMOTE_JAR=$(ls ${{ env.REMOTE_DEPLOY_PATH }}/target/*.jar 2>/dev/null | head -n1) + if [ -z "$REMOTE_JAR" ] || [ ! -f "$REMOTE_JAR" ]; then + echo "❌ 远程服务器无有效 JAR 包!" + exit 1 + fi + + # 检查Docker文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "${{ env.REMOTE_DEPLOY_PATH }}/$FILE" ]; then + echo "❌ 远程缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 远程文件校验通过!" + + - name: 6. 部署和运行服务 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 开始部署服务 =====" + cd ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:停止旧容器(不存在则跳过) + echo "停止旧容器..." + docker compose down || true + + # 清理无效镜像(可选,释放空间) + docker system prune -f + + # 构建并启动新容器 + echo "构建Docker镜像..." + docker compose build --no-cache + echo "启动服务..." + docker compose up -d + + # 验证服务状态 + echo "验证容器状态..." + docker compose ps + echo "✅ 部署完成!" \ No newline at end of file From 37ddf6f44120575a963d57ff5c9dda7a7f5a5f37 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:14:57 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?elop=5Fbuild.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/develop_build.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitea/workflows/develop_build.yaml b/.gitea/workflows/develop_build.yaml index 4f005b4f..37a1a3bb 100644 --- a/.gitea/workflows/develop_build.yaml +++ b/.gitea/workflows/develop_build.yaml @@ -8,6 +8,8 @@ on: jobs: build_and_deploy: runs-on: ubuntu-latest + if: "contains(github.event.head_commit.message, '[run build]')" + permissions: contents: read From 8f72686809465b933275a290e71d5b6054eaa878 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:18:20 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20.gitea/workflows/pro?= =?UTF-8?q?d=5Fbuild=5Fschedule.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/prod_build_schedule.yaml | 146 ++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 .gitea/workflows/prod_build_schedule.yaml diff --git a/.gitea/workflows/prod_build_schedule.yaml b/.gitea/workflows/prod_build_schedule.yaml new file mode 100644 index 00000000..9fd03a1e --- /dev/null +++ b/.gitea/workflows/prod_build_schedule.yaml @@ -0,0 +1,146 @@ +name: 定时 AiDA back-java Develop 分支构建部署 +on: + schedule: + # cron为UTC时区,构建时间=部署时间-8小时 {*分 (-8)时 *日 *月 *周} --- + # 示例: 1月1日22点22分触发构建 cron写作 - '22 14 1 1 *' + - cron: '19 7 28 11 *' + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-version-aida-back + + steps: + - name: 1.检出代码 + uses: actions/checkout@v4 + with: + ref: dev/3.1_release_merge + + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: '8' + distribution: 'temurin' + + - name: 2.设置JAVA Maven 环境 + run: | + # 适配act的root用户和Gitea Runner普通用户 + SUDO="" + [ "$(id -u)" != "0" ] && SUDO="sudo" + + # 安装依赖 + $SUDO apt update && $SUDO apt install -y wget tar --no-install-recommends + + # 下载并安装Maven + MAVEN_VERSION="3.9.11" + MAVEN_TAR="apache-maven-${MAVEN_VERSION}-bin.tar.gz" + MAVEN_URL="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_TAR}" + wget --no-verbose -O /tmp/${MAVEN_TAR} ${MAVEN_URL} + + # 解压+软链接 + $SUDO tar -xzf /tmp/${MAVEN_TAR} -C /usr/local/ + $SUDO ln -sf /usr/local/apache-maven-${MAVEN_VERSION} /usr/local/maven + + # 配置PATH + echo "/usr/local/maven/bin" >> $GITHUB_PATH + export PATH="/usr/local/maven/bin:$PATH" + + # 验证 + mvn -v + + - name: 2.构建jar包 + run: + mvn -B clean package -DskipTests --file pom.xml + + - name: 3.检查 Runner 本地文件 + run: | + echo "当前目录:$(pwd)" + echo "target 目录内容:" + ls -la ./target/ + + # 容错:处理通配符无匹配的情况 + JAR_FILE=$(ls ./target/*.jar 2>/dev/null | head -n1) + if [ -z "$JAR_FILE" ] || [ ! -f "$JAR_FILE" ]; then + echo "❌ Runner 本地无有效 JAR 包!" + exit 1 + fi + + # 检查Docker配置文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "./$FILE" ]; then + echo "❌ 缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 本地文件校验通过!" + + - name: 4. 同步文件到远程服务器 + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + source: "./target/*.jar,./Dockerfile,./docker-compose.yml" + target: ${{ env.REMOTE_DEPLOY_PATH }} + ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" + strip_components: 0 + + - name: 5. 验证远程文件 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 远程部署目录文件列表 =====" + ls -la ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:检查JAR包 + REMOTE_JAR=$(ls ${{ env.REMOTE_DEPLOY_PATH }}/target/*.jar 2>/dev/null | head -n1) + if [ -z "$REMOTE_JAR" ] || [ ! -f "$REMOTE_JAR" ]; then + echo "❌ 远程服务器无有效 JAR 包!" + exit 1 + fi + + # 检查Docker文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "${{ env.REMOTE_DEPLOY_PATH }}/$FILE" ]; then + echo "❌ 远程缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 远程文件校验通过!" + + - name: 6. 部署和运行服务 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 开始部署服务 =====" + cd ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:停止旧容器(不存在则跳过) + echo "停止旧容器..." + docker compose down || true + + # 清理无效镜像(可选,释放空间) + docker system prune -f + + # 构建并启动新容器 + echo "构建Docker镜像..." + docker compose build --no-cache + echo "启动服务..." + docker compose up -d + + # 验证服务状态 + echo "验证容器状态..." + docker compose ps + echo "✅ 部署完成!" \ No newline at end of file From 1917fd518d4af8afc06c1e272a27d783dd824a4f Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:35:50 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20docker-compose.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [run build] --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2399eac0..1510982e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,4 +6,4 @@ services: # 数据挂载 - ./log:/log ports: - - '10091:5567' \ No newline at end of file + - '10090:5567' \ No newline at end of file From d622195f9d2f500f521433e41b52b78fd04a06dd Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 16:06:56 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?elop=5Fbuild=5Fcommit.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflows/{develop_build.yaml => develop_build_commit.yaml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .gitea/workflows/{develop_build.yaml => develop_build_commit.yaml} (98%) diff --git a/.gitea/workflows/develop_build.yaml b/.gitea/workflows/develop_build_commit.yaml similarity index 98% rename from .gitea/workflows/develop_build.yaml rename to .gitea/workflows/develop_build_commit.yaml index 37a1a3bb..c778021a 100644 --- a/.gitea/workflows/develop_build.yaml +++ b/.gitea/workflows/develop_build_commit.yaml @@ -1,4 +1,4 @@ -name: 手动 AiDA back-java Develop 分支构建部署 +name: git commit 控制 AiDA back-java Develop 分支构建部署 on: workflow_dispatch: push: From cbca666e7b7305992bdcf4172581194b84736bdb Mon Sep 17 00:00:00 2001 From: xupei Date: Fri, 28 Nov 2025 16:36:34 +0800 Subject: [PATCH 11/11] =?UTF-8?q?BUGFIX:=20=E8=B4=A6=E5=8F=B7=E9=87=8D?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA=E6=B8=B8=E5=AE=A2=E5=90=8E=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=B7=B7=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/AccountServiceImpl.java | 4 ++-- src/main/resources/messages_en.properties | 1 + src/main/resources/messages_zh.properties | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 463e5282..885f3eb8 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -306,8 +306,8 @@ public class AccountServiceImpl extends ServiceImpl impl setEduAdminToExpire(account); } else { toVisitor(account); - return; - // throw new BusinessException("user.expired"); +// return; + throw new BusinessException("account.expired", ResultEnum.PROMPT.getCode()); } } } diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 8adfeeab..11bce256 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -204,6 +204,7 @@ hsv.value.cannot.exceed.the.maximum.of.8=hsv value cannot exceed the maximum of the.workspaceName.already.exists=A workspace with this name already exists. unable.to.delete.the.workspace.you.are.currently.using=The workspace you are currently using cannot be deleted. Please select another workspace before trying to delete. classificationName.already.exists=The label name you've entered already exists. Please enter a different label name to avoid duplication. +account.expired=Your subscription has expired, and your account has been reset to a visitor account. Please log in again from the [Individual] entry. If you have any questions, please contact us at info@code-create.com.hk # Warnings: # 用来提醒用户可能会导致不良后果的操作,但不一定是错误。用户需要认真考虑是否继续当前操作。 diff --git a/src/main/resources/messages_zh.properties b/src/main/resources/messages_zh.properties index 91893351..051a4194 100644 --- a/src/main/resources/messages_zh.properties +++ b/src/main/resources/messages_zh.properties @@ -222,6 +222,7 @@ generate.interface.error=生成接口出现错误。(请稍后再试。如果 chat-bot.interface.exception=聊天机器人接口出现错误。(请稍后再试。如果问题持续,请联系我们的help@aida.com.hk) compose-layer.interface.exception=图层合并时出现问题。(请稍后再试。如果问题持续,请联系我们的help@aida.com.hk) cloth-classification.interface.exception=获取服装类别时出现问题。(请稍后再试。如果问题持续,请联系我们的help@aida.com.hk) +account.expired=您的订阅已过期,账号已被重置为访客身份,请从【个人账号】入口重新登录。如有疑问,请联系 info@code-create.com.hk。 # 多语言返回 OVERALL=整体