From 30225afcba223da43da82e831bd347f6432f400e Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Mon, 8 Sep 2025 21:10:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=AE=BF=E9=97=AEtush?= =?UTF-8?q?are=E6=8E=A5=E5=8F=A3=E8=BF=87=E5=BF=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + leopard-server/bin/deploy.sh | 27 +++++++++++++++ leopard-server/bin/restart.sh | 4 +++ leopard-server/bin/start.sh | 3 ++ leopard-server/bin/stop.sh | 33 +++++++++++++++++++ .../server/service/task/CheckDailyNode.java | 5 +-- 6 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 leopard-server/bin/deploy.sh create mode 100644 leopard-server/bin/restart.sh create mode 100644 leopard-server/bin/start.sh create mode 100644 leopard-server/bin/stop.sh diff --git a/.gitignore b/.gitignore index b4f6c71..6a81ed2 100644 --- a/.gitignore +++ b/.gitignore @@ -251,3 +251,4 @@ gradle-app.setting !.yarn/versions !.yarn/cache nohup.out +!leopard*/bin diff --git a/leopard-server/bin/deploy.sh b/leopard-server/bin/deploy.sh new file mode 100644 index 0000000..fed7bad --- /dev/null +++ b/leopard-server/bin/deploy.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +sudo rm -rf /tmp/leopard +git clone --depth 1 https://gitea.lanyuanxiaoyao.com/lanyuanxiaoyao/leopard.git /tmp/leopard + +docker run \ + --rm \ + -v /root/.m2:/root/.m2 \ + -v /tmp/leopard:/tmp/leopard \ + -w /tmp/leopard \ + maven:3.9.11-eclipse-temurin-17-alpine \ + mvn -pl leopard-server clean package -D skipTests + +docker run \ + --rm \ + -v /root/.pnpm-store:/root/.pnpm-store \ + -v /tmp/leopard:/tmp/leopard \ + -w /tmp/leopard/leopard-web \ + guergeiro/pnpm:22-10-alpine \ + /bin/sh -c "pnpm install && pnpm build" + +sudo chown -R ubuntu:ubuntu /tmp/leopard + +mv /tmp/leopard/leopard-server/target/leopard-server-1.0.0.jar /home/ubuntu/app/leopard-server-1.0.0.jar + +bash /home/ubuntu/app/stop.sh +bash /home/ubuntu/app/start.sh diff --git a/leopard-server/bin/restart.sh b/leopard-server/bin/restart.sh new file mode 100644 index 0000000..3a30b14 --- /dev/null +++ b/leopard-server/bin/restart.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +/home/ubuntu/app/stop.sh +/home/ubuntu/app/start.sh diff --git a/leopard-server/bin/start.sh b/leopard-server/bin/start.sh new file mode 100644 index 0000000..1badc6b --- /dev/null +++ b/leopard-server/bin/start.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +nohup /home/ubuntu/jdk-17.0.16+8/bin/java -jar /home/ubuntu/app/leopard-server-1.0.0.jar --spring.profiles.active=build --spring.web.resources.static-locations=file:/home/ubuntu/app/web --logging.parent=/home/ubuntu/app > /dev/null 2>&1 & diff --git a/leopard-server/bin/stop.sh b/leopard-server/bin/stop.sh new file mode 100644 index 0000000..3d6023b --- /dev/null +++ b/leopard-server/bin/stop.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +original_command="$0" +application_name="/home/ubuntu/app/leopard-server-1.0.0.jar" + +function get_pid() { + echo $(ps ef | grep "$application_name" | grep -v grep | awk '{ print $1 }') +} + +pid=$(get_pid) + +if [[ -z "$pid" ]]; then + echo "Application is already stopped." + exit 0 +fi + +echo "Stopping $pid..." +kill $pid + +LOOPS=0 +while (true); do + cpid=$(get_pid) + if [[ -z "$cpid" ]]; then + echo "Oook! cost:$LOOPS" + break + fi + LOOPS=$(($LOOPS+1)) + if [[ $(($LOOPS%15)) -eq 0 ]]; then + echo "Wait timeout, try to force kill $pid..." + kill -9 $pid + fi + sleep 1s +done diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java index f1015af..b6f1c71 100644 --- a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/service/task/CheckDailyNode.java @@ -1,5 +1,6 @@ package com.lanyuanxiaoyao.leopard.server.service.task; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.lanyuanxiaoyao.leopard.core.entity.Stock; @@ -41,14 +42,14 @@ public class CheckDailyNode extends NodeComponent { .map(item -> LocalDate.parse(item.get(0), TuShareService.TRADE_FORMAT)) .filter(date -> date.isBefore(nowDate) || date.isEqual(nowDate)) .toList(); - stocks.parallelStream() - .forEach(stock -> { + stocks.forEach(stock -> { if (exchange.equals(stock.getMarket())) { var existsTradeDates = dailyService.findDistinctTradeDateByStockId(stock.getId()); var missedTradeDates = allTradeDates.stream() .filter(date -> date.isAfter(stock.getListedDate()) || date.isEqual(stock.getListedDate())) .filter(date -> !existsTradeDates.contains(date)) .filter(date -> { + ThreadUtil.safeSleep(100); var response = tuShareService.dailyList(date, stock.getCode()); return !response.data().items().isEmpty(); })