From 1e22b202db61f758e0966778751c9376e2c771ba Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Wed, 8 Oct 2025 19:22:55 +0800 Subject: [PATCH 01/40] =?UTF-8?q?feat(13):=20=E5=A2=9E=E5=8A=A0dev?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile-dev | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Jenkinsfile-dev diff --git a/Jenkinsfile-dev b/Jenkinsfile-dev new file mode 100644 index 0000000..28441ab --- /dev/null +++ b/Jenkinsfile-dev @@ -0,0 +1,67 @@ +pipeline { + agent none // 全局不指定,局部自己声明 + environment { + IMAGE_NAME = 'lpt:0.0' + CONTAINER_NAME = 'LPT' + HOST_PORT = '5157' + CONTAINER_PORT = '5157' + } + stages { + stage('Build') { + agent { + docker { + image 'maven:3.9.6-eclipse-temurin-17' + args '-v /root/.m2:/root/.m2' + } + } + steps { + sh 'mvn -B -DskipTests clean package' + } + } + + stage('Build Docker Image') { + agent any // 使用 Jenkins 默认节点(宿主机),前提是宿主有 docker 命令 + steps { + sh 'docker build -t $IMAGE_NAME .' + } + } + + stage('Run Docker Container') { + agent any + steps { + sh ''' + docker rm -f $CONTAINER_NAME || true + docker run -d --name $CONTAINER_NAME --network mysql_default \\ + --restart=always \\ + -p $HOST_PORT:$CONTAINER_PORT -e SPRING_PROFILES_ACTIVE=dev \\ + --log-driver=loki \\ + --log-opt loki-url="http://192.168.123.199:3100/loki/api/v1/push" \\ + $IMAGE_NAME + ''' + } + } + + stage('Check Docker Status') { + agent any + steps { + script { + def lastStatus = '' + timeout(time: 60, unit: 'SECONDS') { + waitUntil { + def status = sh( + script: "docker inspect -f '{{.State.Health.Status}}' $CONTAINER_NAME || echo 'unhealthy'", + returnStdout: true + ).trim() + + if (status != lastStatus) { + echo "Container health: ${status}" + lastStatus = status + } + return (status == 'healthy') + } + } + } + } + } + } +} From 8cb96e7d305e60457f2318926fc38cc9470c5480 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Wed, 8 Oct 2025 20:58:17 +0800 Subject: [PATCH 02/40] =?UTF-8?q?feat(13):=20=E9=85=8D=E7=BD=AEprod?= =?UTF-8?q?=E3=80=81dev=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 8 ++++---- Jenkinsfile-dev | 8 ++++---- .../{application-dev.yml => application-prod.yml} | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) rename src/main/resources/{application-dev.yml => application-prod.yml} (63%) diff --git a/Jenkinsfile b/Jenkinsfile index 28441ab..8927ebd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,8 +1,8 @@ pipeline { agent none // 全局不指定,局部自己声明 environment { - IMAGE_NAME = 'lpt:0.0' - CONTAINER_NAME = 'LPT' + IMAGE_NAME = 'lpt-prod:0.0' + CONTAINER_NAME = 'LPT-prod' HOST_PORT = '5157' CONTAINER_PORT = '5157' } @@ -31,9 +31,9 @@ pipeline { steps { sh ''' docker rm -f $CONTAINER_NAME || true - docker run -d --name $CONTAINER_NAME --network mysql_default \\ + docker run -d --name $CONTAINER_NAME --network prod_mysql-prod \\ --restart=always \\ - -p $HOST_PORT:$CONTAINER_PORT -e SPRING_PROFILES_ACTIVE=dev \\ + -p $HOST_PORT:$CONTAINER_PORT -e SPRING_PROFILES_ACTIVE=prod \\ --log-driver=loki \\ --log-opt loki-url="http://192.168.123.199:3100/loki/api/v1/push" \\ $IMAGE_NAME diff --git a/Jenkinsfile-dev b/Jenkinsfile-dev index 28441ab..2ec0623 100644 --- a/Jenkinsfile-dev +++ b/Jenkinsfile-dev @@ -1,10 +1,10 @@ pipeline { agent none // 全局不指定,局部自己声明 environment { - IMAGE_NAME = 'lpt:0.0' - CONTAINER_NAME = 'LPT' - HOST_PORT = '5157' - CONTAINER_PORT = '5157' + IMAGE_NAME = 'lpt-dev:0.0' + CONTAINER_NAME = 'LPT-dev' + HOST_PORT = '5156' + CONTAINER_PORT = '5156' } stages { stage('Build') { diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-prod.yml similarity index 63% rename from src/main/resources/application-dev.yml rename to src/main/resources/application-prod.yml index 6edf93c..c3e7e83 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-prod.yml @@ -2,9 +2,9 @@ spring: # 配置数据库 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://mysql8:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://mysql8:3307/lpt_prod?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root - password: GUOxy5157 + password: GUOxy.5157 server: port: 5157 From afedfe3a3efc2dd7fa0dcaabb10c5c227d71f863 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Wed, 8 Oct 2025 22:13:09 +0800 Subject: [PATCH 03/40] =?UTF-8?q?feat(13):=20=E9=85=8D=E7=BD=AEprod?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 79063040994c30cb6ed8f1b1ec3356445752accb) --- src/main/resources/application-prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index c3e7e83..1b65b25 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -2,7 +2,7 @@ spring: # 配置数据库 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://mysql8:3307/lpt_prod?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://lpt-prod-mysql8:3307/lpt_prod?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root password: GUOxy.5157 server: From 2b401feb825247a31d4439eaafcb3347fb349465 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Wed, 8 Oct 2025 22:41:20 +0800 Subject: [PATCH 04/40] =?UTF-8?q?feat(13):=20=E9=85=8D=E7=BD=AEprod?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 1dcff5d81165871b6a1464bdb37a69a47ee3449b) --- src/main/resources/application-prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 1b65b25..4555500 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -2,7 +2,7 @@ spring: # 配置数据库 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://lpt-prod-mysql8:3307/lpt_prod?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://lpt-prod-mysql8:3306/lpt_prod?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root password: GUOxy.5157 server: From cdacb1f83e7b24a16cbe0128526b39580b87516f Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Wed, 8 Oct 2025 23:16:14 +0800 Subject: [PATCH 05/40] =?UTF-8?q?feat(13):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/resources/application-dev.yml diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..6edf93c --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,19 @@ +spring: + # 配置数据库 + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://mysql8:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + username: root + password: GUOxy5157 +server: + port: 5157 + +cors: + allowed-origins: + - http://192.168.123.199:5158 + - http://39.105.149.197:8115 + - https://lpt.cat-shark.xyz + +sa-token: + cookie: + secure: true From 96362b62f3b7624fd3065db255e48fe6c70b7c5b Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 11:40:13 +0800 Subject: [PATCH 06/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20allowed-origins=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 6edf93c..a6c1de8 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -10,7 +10,7 @@ server: cors: allowed-origins: - - http://192.168.123.199:5158 + - http://192.168.123.199:5157 - http://39.105.149.197:8115 - https://lpt.cat-shark.xyz From 5b369b1963bc116476f436a900693bb1205c4caa Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 11:45:48 +0800 Subject: [PATCH 07/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20allowed-origins=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a6c1de8..06c8362 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -10,7 +10,7 @@ server: cors: allowed-origins: - - http://192.168.123.199:5157 + - http://192.168.123.199:5156 - http://39.105.149.197:8115 - https://lpt.cat-shark.xyz From d2aafe3a196967387589aef10240cf4c5654efd3 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 11:50:25 +0800 Subject: [PATCH 08/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20allowed-origins=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 06c8362..5488916 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -10,7 +10,8 @@ server: cors: allowed-origins: - - http://192.168.123.199:5156 + - http://192.168.123.199:5158 + - http://192.168.40.1:5158 - http://39.105.149.197:8115 - https://lpt.cat-shark.xyz From 72463b9dcad4558e3d24de71bbf6102e427f6512 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 12:11:01 +0800 Subject: [PATCH 09/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20allowed-origins=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 5488916..f65db13 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -10,10 +10,7 @@ server: cors: allowed-origins: - - http://192.168.123.199:5158 - - http://192.168.40.1:5158 - - http://39.105.149.197:8115 - - https://lpt.cat-shark.xyz + - * sa-token: cookie: From 3174da4825ecb1a67f1129df592bb304b027d73f Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 12:17:54 +0800 Subject: [PATCH 10/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20allowed-origins=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f65db13..a2104b5 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -10,7 +10,7 @@ server: cors: allowed-origins: - - * + - '*' sa-token: cookie: From d3a8dcbcde359eebff1045ba78d61130a5da9f84 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 12:27:53 +0800 Subject: [PATCH 11/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20=E7=AB=AF=E5=8F=A3=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E5=A2=9E=E5=8A=A0uat=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- src/main/resources/application-uat.yml | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/application-uat.yml diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a2104b5..35def61 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -6,7 +6,7 @@ spring: username: root password: GUOxy5157 server: - port: 5157 + port: 5155 cors: allowed-origins: diff --git a/src/main/resources/application-uat.yml b/src/main/resources/application-uat.yml new file mode 100644 index 0000000..3e28ea1 --- /dev/null +++ b/src/main/resources/application-uat.yml @@ -0,0 +1,17 @@ +spring: + # 配置数据库 + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://mysql8:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + username: root + password: GUOxy5157 +server: + port: 5156 + +cors: + allowed-origins: + - '*' + +sa-token: + cookie: + secure: true From 53af940914b041d84ac7592f62cb267bd273e7df Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 12:32:34 +0800 Subject: [PATCH 12/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20jenkins=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile-dev | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile-dev b/Jenkinsfile-dev index 2ec0623..ed6cd13 100644 --- a/Jenkinsfile-dev +++ b/Jenkinsfile-dev @@ -3,8 +3,8 @@ pipeline { environment { IMAGE_NAME = 'lpt-dev:0.0' CONTAINER_NAME = 'LPT-dev' - HOST_PORT = '5156' - CONTAINER_PORT = '5156' + HOST_PORT = '5155' + CONTAINER_PORT = '5155' } stages { stage('Build') { From 45c5c7b97f3bdfd0e936686d631dbe7480141ddc Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 12:39:22 +0800 Subject: [PATCH 13/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/guo/learningprogresstracker/config/CorsProperties.java | 1 + .../com/guo/learningprogresstracker/config/WebCorsConfig.java | 2 +- src/main/resources/application-dev.yml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/CorsProperties.java b/src/main/java/com/guo/learningprogresstracker/config/CorsProperties.java index f2731f2..91dacad 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/CorsProperties.java +++ b/src/main/java/com/guo/learningprogresstracker/config/CorsProperties.java @@ -9,5 +9,6 @@ import org.springframework.context.annotation.Configuration; @ConfigurationProperties(prefix = "cors") public class CorsProperties { private String[] allowedOrigins; + private Boolean allowCredentials; } diff --git a/src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java b/src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java index 5fbd691..fbd16e3 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java @@ -24,6 +24,6 @@ public class WebCorsConfig implements WebMvcConfigurer { .allowedOrigins(corsProperties.getAllowedOrigins()) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*") - .allowCredentials(true); + .allowCredentials(null == corsProperties.getAllowCredentials() || corsProperties.getAllowCredentials()); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 35def61..7d8c2dc 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -9,6 +9,7 @@ server: port: 5155 cors: + allowCredentials: false allowed-origins: - '*' From ab25cf81ee5aa546a4742f351eb4577d106d3192 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 14:15:55 +0800 Subject: [PATCH 14/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 7d8c2dc..d66d8a6 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -9,7 +9,7 @@ server: port: 5155 cors: - allowCredentials: false + allowCredentials: true allowed-origins: - '*' From 56a0820fc26b4cfd335534aa6761374c07eaed9d Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 14:26:08 +0800 Subject: [PATCH 15/40] =?UTF-8?q?Revert=20"feat(N/A):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?dev=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ab25cf81ee5aa546a4742f351eb4577d106d3192. --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index d66d8a6..7d8c2dc 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -9,7 +9,7 @@ server: port: 5155 cors: - allowCredentials: true + allowCredentials: false allowed-origins: - '*' From a18156af469f2d1cb2b5515f2d373890e6dc17cb Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 14:45:23 +0800 Subject: [PATCH 16/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9cors?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...bCorsConfig.java => DevWebCorsConfig.java} | 8 ++--- .../config/ProdWebCorsConfig.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) rename src/main/java/com/guo/learningprogresstracker/config/{WebCorsConfig.java => DevWebCorsConfig.java} (77%) create mode 100644 src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java diff --git a/src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java b/src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java similarity index 77% rename from src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java rename to src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java index fbd16e3..51eead9 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/WebCorsConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java @@ -2,18 +2,18 @@ package com.guo.learningprogresstracker.config; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.Arrays; +@Profile("dev") @Slf4j @Configuration @RequiredArgsConstructor -public class WebCorsConfig implements WebMvcConfigurer { +public class DevWebCorsConfig implements WebMvcConfigurer { private final CorsProperties corsProperties; @@ -21,7 +21,7 @@ public class WebCorsConfig implements WebMvcConfigurer { public void addCorsMappings(CorsRegistry registry) { log.info("允许cors的地址配置:{}", Arrays.toString(corsProperties.getAllowedOrigins())); registry.addMapping("/**") - .allowedOrigins(corsProperties.getAllowedOrigins()) + .allowedOriginPatterns("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*") .allowCredentials(null == corsProperties.getAllowCredentials() || corsProperties.getAllowCredentials()); diff --git a/src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java b/src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java new file mode 100644 index 0000000..e6b03df --- /dev/null +++ b/src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java @@ -0,0 +1,29 @@ +package com.guo.learningprogresstracker.config; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.Arrays; + +@Profile("prod") +@Slf4j +@Configuration +@RequiredArgsConstructor +public class ProdWebCorsConfig implements WebMvcConfigurer { + + private final CorsProperties corsProperties; + + @Override + public void addCorsMappings(CorsRegistry registry) { + log.info("允许cors的地址配置:{}", Arrays.toString(corsProperties.getAllowedOrigins())); + registry.addMapping("/**") + .allowedOrigins(corsProperties.getAllowedOrigins()) + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .allowCredentials(true); + } +} From 009c2f1564f6ec14b8c92e1ed6acf2d4fdd26ba1 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 14:46:14 +0800 Subject: [PATCH 17/40] =?UTF-8?q?feat(N/A):=20=E4=BF=AE=E6=94=B9cors?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 7d8c2dc..d66d8a6 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -9,7 +9,7 @@ server: port: 5155 cors: - allowCredentials: false + allowCredentials: true allowed-origins: - '*' From 365f996f9caa2686005045e07b9910e3bd96c654 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 15:00:55 +0800 Subject: [PATCH 18/40] =?UTF-8?q?feat(N/A):=20=E8=B0=83=E6=95=B4=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E5=86=85=E8=BF=90=E8=A1=8C=E7=AB=AF=E5=8F=A3=E4=B8=BA?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E7=9A=848888=EF=BC=8C=E6=96=B9=E4=BE=BF?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=B8=80=E4=B8=AAdockerfile=EF=BC=8C?= =?UTF-8?q?=E5=B0=B1=E5=8F=AF=E4=BB=A5=E9=85=8D=E7=BD=AE=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E7=9A=84=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 4 ++-- Jenkinsfile | 2 +- Jenkinsfile-dev | 2 +- src/main/resources/application-dev.yml | 2 +- src/main/resources/application-prod.yml | 2 +- src/main/resources/application-uat.yml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7844a1f..80992d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,10 +8,10 @@ WORKDIR /app COPY target/LPT.jar LPT.jar # 暴露应用运行的端口 -EXPOSE 5157 +EXPOSE 8888 # 启动应用 ENTRYPOINT ["java", "-jar", "LPT.jar"] # 健康检查 -HEALTHCHECK --interval=10s --timeout=5s CMD curl --fail http://localhost:5157/actuator/health || exit 1 +HEALTHCHECK --interval=10s --timeout=5s CMD curl --fail http://localhost:8888/actuator/health || exit 1 diff --git a/Jenkinsfile b/Jenkinsfile index 8927ebd..92f742e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,7 +4,7 @@ pipeline { IMAGE_NAME = 'lpt-prod:0.0' CONTAINER_NAME = 'LPT-prod' HOST_PORT = '5157' - CONTAINER_PORT = '5157' + CONTAINER_PORT = '8888' } stages { stage('Build') { diff --git a/Jenkinsfile-dev b/Jenkinsfile-dev index ed6cd13..4b826fa 100644 --- a/Jenkinsfile-dev +++ b/Jenkinsfile-dev @@ -4,7 +4,7 @@ pipeline { IMAGE_NAME = 'lpt-dev:0.0' CONTAINER_NAME = 'LPT-dev' HOST_PORT = '5155' - CONTAINER_PORT = '5155' + CONTAINER_PORT = '8888' } stages { stage('Build') { diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index d66d8a6..aea6a3a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -6,7 +6,7 @@ spring: username: root password: GUOxy5157 server: - port: 5155 + port: 8888 cors: allowCredentials: true diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 4555500..31c650a 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -6,7 +6,7 @@ spring: username: root password: GUOxy.5157 server: - port: 5157 + port: 8888 cors: allowed-origins: diff --git a/src/main/resources/application-uat.yml b/src/main/resources/application-uat.yml index 3e28ea1..e440077 100644 --- a/src/main/resources/application-uat.yml +++ b/src/main/resources/application-uat.yml @@ -6,7 +6,7 @@ spring: username: root password: GUOxy5157 server: - port: 5156 + port: 8888 cors: allowed-origins: From cfbe1cd029d4021a0c728ca2e0ded397a0d3fad1 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 15:19:04 +0800 Subject: [PATCH 19/40] =?UTF-8?q?feat(N/A):=20=E5=85=B3=E9=97=ADdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84secure=E9=85=8D=E7=BD=AE,sameSite?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=BALax,=E5=85=81=E8=AE=B8=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E5=99=A8=E4=BF=9D=E5=AD=98cookie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index aea6a3a..82957aa 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -15,4 +15,5 @@ cors: sa-token: cookie: - secure: true + secure: false + sameSite: Lax From 00e59b785ba1ef5a80e68fae6429ee53ba377b42 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 16:04:30 +0800 Subject: [PATCH 20/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenConfigure.java | 2 ++ .../config/SaTokenDevFilterConfig.java | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java index fdd4c1b..d044ec0 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java @@ -4,11 +4,13 @@ import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @Slf4j +@Profile("prod") public class SaTokenConfigure implements WebMvcConfigurer { // 注册拦截器 diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java new file mode 100644 index 0000000..a7e4203 --- /dev/null +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -0,0 +1,30 @@ +package com.guo.learningprogresstracker.config; + +import cn.dev33.satoken.context.SaHolder; +import cn.dev33.satoken.filter.SaServletFilter; +import cn.dev33.satoken.router.SaRouter; +import cn.dev33.satoken.stp.StpUtil; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +@Configuration +@Profile("dev") +public class SaTokenDevFilterConfig { + + @Bean + public SaServletFilter getSaServletFilter() { + return new SaServletFilter() + .addInclude("/**") + .addExclude("/login") + .setBeforeAuth(r -> { + if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { + SaHolder.getResponse().setStatus(200); + SaRouter.back(); + } + }) + .setAuth(obj -> { + StpUtil.checkLogin(); + }); + } +} From 2fffd11c000cdced12480dcd221f6f7313921162 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 16:15:51 +0800 Subject: [PATCH 21/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guo/learningprogresstracker/config/SaTokenConfigure.java | 2 -- .../learningprogresstracker/config/SaTokenDevFilterConfig.java | 1 - 2 files changed, 3 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java index d044ec0..fdd4c1b 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java @@ -4,13 +4,11 @@ import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @Slf4j -@Profile("prod") public class SaTokenConfigure implements WebMvcConfigurer { // 注册拦截器 diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index a7e4203..dba80d7 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -24,7 +24,6 @@ public class SaTokenDevFilterConfig { } }) .setAuth(obj -> { - StpUtil.checkLogin(); }); } } From 516b05f40aa4f5108300f7d34545a1da60565c8e Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 16:18:35 +0800 Subject: [PATCH 22/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learningprogresstracker/config/SaTokenDevFilterConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index dba80d7..bfe99da 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration -@Profile("dev") +@Profile("dev1") public class SaTokenDevFilterConfig { @Bean From b74fddc2a608323ffdebcf58e2a2f7584bb2d86d Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 16:29:41 +0800 Subject: [PATCH 23/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenDevFilterConfig.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index bfe99da..807b1d4 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration -@Profile("dev1") +@Profile("dev") public class SaTokenDevFilterConfig { @Bean @@ -23,7 +23,6 @@ public class SaTokenDevFilterConfig { SaRouter.back(); } }) - .setAuth(obj -> { - }); + .setAuth(obj -> {}); } } From 915b27580fd0ab9e38c21c0adf4034806915d38e Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 16:43:54 +0800 Subject: [PATCH 24/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenDevFilterConfig.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index 807b1d4..f6b940a 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -4,12 +4,14 @@ import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.filter.SaServletFilter; import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration @Profile("dev") +@Slf4j public class SaTokenDevFilterConfig { @Bean @@ -18,6 +20,9 @@ public class SaTokenDevFilterConfig { .addInclude("/**") .addExclude("/login") .setBeforeAuth(r -> { + String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 + String method = SaHolder.getRequest().getMethod(); + log.debug("[DEV] {} {}", method, path); if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { SaHolder.getResponse().setStatus(200); SaRouter.back(); From 951ef50defc37de4c502e360a565a86559915603 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 16:49:35 +0800 Subject: [PATCH 25/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learningprogresstracker/config/SaTokenDevFilterConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index f6b940a..1b590af 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -22,7 +22,7 @@ public class SaTokenDevFilterConfig { .setBeforeAuth(r -> { String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 String method = SaHolder.getRequest().getMethod(); - log.debug("[DEV] {} {}", method, path); + log.info("[DEV] {} {}", method, path); if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { SaHolder.getResponse().setStatus(200); SaRouter.back(); From 0194433a6a8eaa1d4ccf6dd1671fee618faffe9a Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 17:01:28 +0800 Subject: [PATCH 26/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenDevFilterConfig.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index 1b590af..02e622e 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -20,11 +20,12 @@ public class SaTokenDevFilterConfig { .addInclude("/**") .addExclude("/login") .setBeforeAuth(r -> { - String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 - String method = SaHolder.getRequest().getMethod(); - log.info("[DEV] {} {}", method, path); + String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 + String method = SaHolder.getRequest().getMethod(); + log.info("[DEV] {} {}", method, path); if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { SaHolder.getResponse().setStatus(200); + SaHolder.getResponse().setHeader("access-control-allow-origin","*"); SaRouter.back(); } }) From c45f995cff8599cd38a88bfbd09ecd2558400182 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 17:06:01 +0800 Subject: [PATCH 27/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenDevFilterConfig.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index 02e622e..2e05bb5 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -22,10 +22,12 @@ public class SaTokenDevFilterConfig { .setBeforeAuth(r -> { String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 String method = SaHolder.getRequest().getMethod(); + log.info("[dev]{}", SaHolder.getRequest().getRequestPath()); log.info("[DEV] {} {}", method, path); if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { SaHolder.getResponse().setStatus(200); - SaHolder.getResponse().setHeader("access-control-allow-origin","*"); + SaHolder.getResponse().setHeader("access-control-allow-origin", SaHolder.getRequest().getRequestPath().replace(SaHolder.getRequest().getRequestPath(), "")); + SaHolder.getResponse().setHeader("access-control-allow-credentials", "true"); SaRouter.back(); } }) From 57200b7d4f829eeb2dd56bd92adc56b2b1acda28 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 17:08:58 +0800 Subject: [PATCH 28/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenDevFilterConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index 2e05bb5..8887816 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -22,11 +22,11 @@ public class SaTokenDevFilterConfig { .setBeforeAuth(r -> { String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 String method = SaHolder.getRequest().getMethod(); - log.info("[dev]{}", SaHolder.getRequest().getRequestPath()); + log.info("[dev]【url】{}", SaHolder.getRequest().getUrl()); log.info("[DEV] {} {}", method, path); if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { SaHolder.getResponse().setStatus(200); - SaHolder.getResponse().setHeader("access-control-allow-origin", SaHolder.getRequest().getRequestPath().replace(SaHolder.getRequest().getRequestPath(), "")); + SaHolder.getResponse().setHeader("access-control-allow-origin", SaHolder.getRequest().getUrl().replace(SaHolder.getRequest().getRequestPath(), "")); SaHolder.getResponse().setHeader("access-control-allow-credentials", "true"); SaRouter.back(); } From de14d6446197d5ed21da7c4a572536dccf3e3dd5 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 17:39:45 +0800 Subject: [PATCH 29/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learningprogresstracker/config/SaTokenDevFilterConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java index 8887816..edd78b9 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java @@ -10,7 +10,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration -@Profile("dev") +@Profile("dev1") @Slf4j public class SaTokenDevFilterConfig { From 3aa90d29eca701090b38f11a62f05365d5ce8cee Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 17:50:23 +0800 Subject: [PATCH 30/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenConfigure.java | 13 +++++++ .../config/SaTokenDevConfigure.java | 35 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java index fdd4c1b..f6fe506 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java @@ -4,9 +4,12 @@ import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +@Profile("prod") @Configuration @Slf4j public class SaTokenConfigure implements WebMvcConfigurer { @@ -19,4 +22,14 @@ public class SaTokenConfigure implements WebMvcConfigurer { .addPathPatterns("/**") .excludePathPatterns("/login"); } + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .allowCredentials(true) + .maxAge(3600); + } } diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java new file mode 100644 index 0000000..049c648 --- /dev/null +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java @@ -0,0 +1,35 @@ +package com.guo.learningprogresstracker.config; + +import cn.dev33.satoken.interceptor.SaInterceptor; +import cn.dev33.satoken.stp.StpUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Profile("dev") +@Configuration +@Slf4j +public class SaTokenDevConfigure implements WebMvcConfigurer { + + // 注册拦截器 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 + registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) + .addPathPatterns("/**") + .excludePathPatterns("/login"); + } + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .allowCredentials(true) + .maxAge(3600); + } +} From 949b39d6df07273ca3bb884d80ae15ae6951717c Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 17:59:28 +0800 Subject: [PATCH 31/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenDevConfigure.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java index 049c648..606d2db 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java @@ -1,5 +1,6 @@ package com.guo.learningprogresstracker.config; +import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; import lombok.extern.slf4j.Slf4j; @@ -17,8 +18,13 @@ public class SaTokenDevConfigure implements WebMvcConfigurer { // 注册拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { - // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 - registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) + registry.addInterceptor(new SaInterceptor(handle -> { + // OPTIONS 请求直接放行 + if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { + return; + } + StpUtil.checkLogin(); + })) .addPathPatterns("/**") .excludePathPatterns("/login"); } From 5951383bc50346bd4f358d2b8a6be27635575ad2 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 18:03:59 +0800 Subject: [PATCH 32/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEdev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84cors=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SaTokenConfigure.java | 11 ------ .../config/SaTokenDevConfigure.java | 10 ------ .../config/SaTokenDevFilterConfig.java | 36 ------------------- 3 files changed, 57 deletions(-) delete mode 100644 src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java index f6fe506..18acbca 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java @@ -5,7 +5,6 @@ import cn.dev33.satoken.stp.StpUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; -import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -22,14 +21,4 @@ public class SaTokenConfigure implements WebMvcConfigurer { .addPathPatterns("/**") .excludePathPatterns("/login"); } - - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") - .allowedOriginPatterns("*") - .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") - .allowedHeaders("*") - .allowCredentials(true) - .maxAge(3600); - } } diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java index 606d2db..cc44b65 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java @@ -28,14 +28,4 @@ public class SaTokenDevConfigure implements WebMvcConfigurer { .addPathPatterns("/**") .excludePathPatterns("/login"); } - - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") - .allowedOriginPatterns("*") - .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") - .allowedHeaders("*") - .allowCredentials(true) - .maxAge(3600); - } } diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java deleted file mode 100644 index edd78b9..0000000 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevFilterConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.guo.learningprogresstracker.config; - -import cn.dev33.satoken.context.SaHolder; -import cn.dev33.satoken.filter.SaServletFilter; -import cn.dev33.satoken.router.SaRouter; -import cn.dev33.satoken.stp.StpUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; - -@Configuration -@Profile("dev1") -@Slf4j -public class SaTokenDevFilterConfig { - - @Bean - public SaServletFilter getSaServletFilter() { - return new SaServletFilter() - .addInclude("/**") - .addExclude("/login") - .setBeforeAuth(r -> { - String path = SaHolder.getRequest().getRequestPath(); // 不含上下文 - String method = SaHolder.getRequest().getMethod(); - log.info("[dev]【url】{}", SaHolder.getRequest().getUrl()); - log.info("[DEV] {} {}", method, path); - if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { - SaHolder.getResponse().setStatus(200); - SaHolder.getResponse().setHeader("access-control-allow-origin", SaHolder.getRequest().getUrl().replace(SaHolder.getRequest().getRequestPath(), "")); - SaHolder.getResponse().setHeader("access-control-allow-credentials", "true"); - SaRouter.back(); - } - }) - .setAuth(obj -> {}); - } -} From af0dcc49db9af8305012387b704955e200a80a43 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 18:34:23 +0800 Subject: [PATCH 33/40] =?UTF-8?q?feat(N/A):=20=E9=85=8D=E7=BD=AEWebMvcConf?= =?UTF-8?q?ig=EF=BC=8C=E8=A7=A3=E5=86=B3=E8=B7=A8=E5=9F=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 4e01a28435b28532654e9d70c6c5b98cb05b14c9) --- .../config/DevWebCorsConfig.java | 29 ------------------- .../config/SaTokenConfigure.java | 24 --------------- ...DevConfigure.java => WebMvcDevConfig.java} | 21 +++++++++++++- ...bCorsConfig.java => WebMvcProdConfig.java} | 17 +++++++++-- 4 files changed, 35 insertions(+), 56 deletions(-) delete mode 100644 src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java delete mode 100644 src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java rename src/main/java/com/guo/learningprogresstracker/config/{SaTokenDevConfigure.java => WebMvcDevConfig.java} (60%) rename src/main/java/com/guo/learningprogresstracker/config/{ProdWebCorsConfig.java => WebMvcProdConfig.java} (61%) diff --git a/src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java b/src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java deleted file mode 100644 index 51eead9..0000000 --- a/src/main/java/com/guo/learningprogresstracker/config/DevWebCorsConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.guo.learningprogresstracker.config; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.util.Arrays; - -@Profile("dev") -@Slf4j -@Configuration -@RequiredArgsConstructor -public class DevWebCorsConfig implements WebMvcConfigurer { - - private final CorsProperties corsProperties; - - @Override - public void addCorsMappings(CorsRegistry registry) { - log.info("允许cors的地址配置:{}", Arrays.toString(corsProperties.getAllowedOrigins())); - registry.addMapping("/**") - .allowedOriginPatterns("*") - .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") - .allowedHeaders("*") - .allowCredentials(null == corsProperties.getAllowCredentials() || corsProperties.getAllowCredentials()); - } -} diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java deleted file mode 100644 index 18acbca..0000000 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenConfigure.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.guo.learningprogresstracker.config; - -import cn.dev33.satoken.interceptor.SaInterceptor; -import cn.dev33.satoken.stp.StpUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Profile("prod") -@Configuration -@Slf4j -public class SaTokenConfigure implements WebMvcConfigurer { - - // 注册拦截器 - @Override - public void addInterceptors(InterceptorRegistry registry) { - // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 - registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) - .addPathPatterns("/**") - .excludePathPatterns("/login"); - } -} diff --git a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java b/src/main/java/com/guo/learningprogresstracker/config/WebMvcDevConfig.java similarity index 60% rename from src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java rename to src/main/java/com/guo/learningprogresstracker/config/WebMvcDevConfig.java index cc44b65..34f3200 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/SaTokenDevConfigure.java +++ b/src/main/java/com/guo/learningprogresstracker/config/WebMvcDevConfig.java @@ -3,6 +3,7 @@ package com.guo.learningprogresstracker.config; import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @@ -10,10 +11,18 @@ import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import java.util.Arrays; + +/** + * @author Administrator + */ @Profile("dev") @Configuration @Slf4j -public class SaTokenDevConfigure implements WebMvcConfigurer { +@RequiredArgsConstructor +public class WebMvcDevConfig implements WebMvcConfigurer { + + private final CorsProperties corsProperties; // 注册拦截器 @Override @@ -28,4 +37,14 @@ public class SaTokenDevConfigure implements WebMvcConfigurer { .addPathPatterns("/**") .excludePathPatterns("/login"); } + + @Override + public void addCorsMappings(CorsRegistry registry) { + log.info("允许cors的地址配置:{}", Arrays.toString(corsProperties.getAllowedOrigins())); + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .allowCredentials(null == corsProperties.getAllowCredentials() || corsProperties.getAllowCredentials()); + } } diff --git a/src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java b/src/main/java/com/guo/learningprogresstracker/config/WebMvcProdConfig.java similarity index 61% rename from src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java rename to src/main/java/com/guo/learningprogresstracker/config/WebMvcProdConfig.java index e6b03df..5a7b489 100644 --- a/src/main/java/com/guo/learningprogresstracker/config/ProdWebCorsConfig.java +++ b/src/main/java/com/guo/learningprogresstracker/config/WebMvcProdConfig.java @@ -1,19 +1,22 @@ package com.guo.learningprogresstracker.config; +import cn.dev33.satoken.interceptor.SaInterceptor; +import cn.dev33.satoken.stp.StpUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.Arrays; @Profile("prod") -@Slf4j @Configuration @RequiredArgsConstructor -public class ProdWebCorsConfig implements WebMvcConfigurer { +@Slf4j +public class WebMvcProdConfig implements WebMvcConfigurer { private final CorsProperties corsProperties; @@ -26,4 +29,14 @@ public class ProdWebCorsConfig implements WebMvcConfigurer { .allowedHeaders("*") .allowCredentials(true); } + + // 注册拦截器 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 + registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) + .addPathPatterns("/**") + .excludePathPatterns("/login"); + } + } From 19ea1a71f96c79ff35935db54fa6325948be84fe Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 26 Oct 2025 18:54:43 +0800 Subject: [PATCH 34/40] =?UTF-8?q?feat(14):=20=E5=AF=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8C=89=E7=85=A7=E8=AE=A1=E7=AE=97=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E8=BF=9B=E8=A1=8C=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learningprogresstracker/service/impl/TasksServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java b/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java index 9648033..f21c398 100644 --- a/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java +++ b/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java @@ -37,7 +37,8 @@ public class TasksServiceImpl extends ServiceImpl @Override public Page taskList(Integer pageNum, Integer pageSize) { - Page page = tasksMapper.selectPage(new Page(pageNum, pageSize), Wrappers.lambdaQuery(TaskEntity.class)); + Page page = tasksMapper.selectPage(new Page(pageNum, pageSize), + Wrappers.lambdaQuery(TaskEntity.class).orderByDesc(TaskEntity::getCalculatedPriority)); Page response = TaskConvert.MAPPER.toTaskInfoPage(page); // todo 需要补充TaskInfo中的lastLearningStatus字段信息 return response; From affabcabcad4d2ad802f8e4ae61e3c91721aacaa Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 2 Nov 2025 20:15:02 +0800 Subject: [PATCH 35/40] =?UTF-8?q?feat(#N/A):=20=E4=BF=AE=E6=94=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 82957aa..e8d43f2 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,7 +2,7 @@ spring: # 配置数据库 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://mysql8:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://mysql_default:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root password: GUOxy5157 server: From 2e6c59cfb67f4b63ad0fcc25639c06640e068484 Mon Sep 17 00:00:00 2001 From: guo <1716967236@qq.com> Date: Sun, 2 Nov 2025 21:26:13 +0800 Subject: [PATCH 36/40] =?UTF-8?q?feat(#N/A):=20=E4=BF=AE=E6=94=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index e8d43f2..38c2f05 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,7 +2,7 @@ spring: # 配置数据库 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://mysql_default:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://mysql:3306/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root password: GUOxy5157 server: From 05f47b92a885fb12fe1c0898c45fc308c54fa2a3 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Sun, 12 Apr 2026 13:05:46 +0800 Subject: [PATCH 37/40] =?UTF-8?q?=E8=A1=A5=E5=85=A8=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=8E=A5=E5=8F=A3=E5=B9=B6=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=99=BB=E5=87=BA=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LoginController.java | 11 +++++------ .../learningprogresstracker/service/LoginService.java | 2 ++ .../service/impl/LoginServiceImpl.java | 9 +++++---- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/controller/LoginController.java b/src/main/java/com/guo/learningprogresstracker/controller/LoginController.java index fb9c393..32e482d 100644 --- a/src/main/java/com/guo/learningprogresstracker/controller/LoginController.java +++ b/src/main/java/com/guo/learningprogresstracker/controller/LoginController.java @@ -33,11 +33,10 @@ public class LoginController { return CommonResult.success("登录成功!", token); } - @Operation(summary = "退出登录API-功能未完成") - @PostMapping("/loingOut") - public CommonResult loingOut(@RequestBody LoginBody loginBody) throws AppException { - //todo loginOut 退出登录API -// loginService.loginOut(); + @Operation(summary = "退出登录API") + @PostMapping("/logout") + public CommonResult logout() { + loginService.logout(); return CommonResult.success("已登出"); } -} \ No newline at end of file +} diff --git a/src/main/java/com/guo/learningprogresstracker/service/LoginService.java b/src/main/java/com/guo/learningprogresstracker/service/LoginService.java index d10cf8d..c06dfc9 100644 --- a/src/main/java/com/guo/learningprogresstracker/service/LoginService.java +++ b/src/main/java/com/guo/learningprogresstracker/service/LoginService.java @@ -5,4 +5,6 @@ import com.guo.learningprogresstracker.exception.AppException; public interface LoginService { String login(String userId) throws AppException; + + void logout(); } diff --git a/src/main/java/com/guo/learningprogresstracker/service/impl/LoginServiceImpl.java b/src/main/java/com/guo/learningprogresstracker/service/impl/LoginServiceImpl.java index ca6854b..c14715f 100644 --- a/src/main/java/com/guo/learningprogresstracker/service/impl/LoginServiceImpl.java +++ b/src/main/java/com/guo/learningprogresstracker/service/impl/LoginServiceImpl.java @@ -3,14 +3,10 @@ package com.guo.learningprogresstracker.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.guo.learningprogresstracker.exception.AppException; import com.guo.learningprogresstracker.service.LoginService; -import com.guo.learningprogresstracker.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class LoginServiceImpl implements LoginService { - @Autowired - private UserService userService; @Override public String login(String userId) throws AppException { @@ -18,4 +14,9 @@ public class LoginServiceImpl implements LoginService { //todo Token只在此处使用了,属于后续优化点 return StpUtil.getTokenInfo().getTokenValue(); } + + @Override + public void logout() { + StpUtil.logout(); + } } From c696397d83159ced3313661a5235779eedd6acda Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Sun, 12 Apr 2026 13:06:00 +0800 Subject: [PATCH 38/40] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AD=A6=E4=B9=A0?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E8=AE=A1=E6=97=B6=E6=8C=87=E9=92=88=E4=B8=8E?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=8D=95=E4=BD=8D=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/StudySessionResponse.java | 6 +++--- .../entity/StudySessionsEntity.java | 19 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/dto/response/StudySessionResponse.java b/src/main/java/com/guo/learningprogresstracker/dto/response/StudySessionResponse.java index 1041fac..db0a828 100644 --- a/src/main/java/com/guo/learningprogresstracker/dto/response/StudySessionResponse.java +++ b/src/main/java/com/guo/learningprogresstracker/dto/response/StudySessionResponse.java @@ -28,11 +28,11 @@ public class StudySessionResponse { private LocalDateTime endTime; - @Schema(description = "实际使用时间(分钟)") + @Schema(description = "实际使用时间(秒)") private double actualTime; - @Schema(description = "有效学习时间(分钟)") + @Schema(description = "有效学习时间(秒)") private double effectiveTime; @@ -43,7 +43,7 @@ public class StudySessionResponse { @Schema(description = "学习会话的状态(进行中、暂停、已结束)") private String sessionState; - @Schema(description = "倒计时开始位置(S)") + @Schema(description = "倒计时指针位置(毫秒)") private double pointerPosition; @Schema(description = "系统提示") diff --git a/src/main/java/com/guo/learningprogresstracker/entity/StudySessionsEntity.java b/src/main/java/com/guo/learningprogresstracker/entity/StudySessionsEntity.java index 2baa7df..95e9c4a 100644 --- a/src/main/java/com/guo/learningprogresstracker/entity/StudySessionsEntity.java +++ b/src/main/java/com/guo/learningprogresstracker/entity/StudySessionsEntity.java @@ -95,6 +95,8 @@ public class StudySessionsEntity extends BaseEntity implements Serializable { StudySessionsEntity studySessionsEntity = new StudySessionsEntity(); studySessionsEntity.setSessionNum(GenerateNumTool.generateNum("SESSION")); studySessionsEntity.setStartTime(LocalDateTime.now()); + studySessionsEntity.setLastStartTime(LocalDateTime.now()); + studySessionsEntity.setPointerPosition(WORK_DURATION * 60 * 1000L); studySessionsEntity.setLastModifiedTime(LocalDateTime.now()); studySessionsEntity.setSessionState(StudySessionStateEnum.ONGOING.name()); return studySessionsEntity; @@ -150,13 +152,7 @@ public class StudySessionsEntity extends BaseEntity implements Serializable { * @return */ public boolean isFirstRun() { - if (ObjectUtils.isEmpty(this.lastStartTime)) { - return false; - } else if (this.lastStartTime.equals(this.startTime)) { - return true; - } else { - return false; - } + return ObjectUtils.isEmpty(this.pointerPosition); } @@ -187,10 +183,13 @@ public class StudySessionsEntity extends BaseEntity implements Serializable { case ONGOING: long elapsedMillis = Duration.between(lastStartTime, LocalDateTime.now()).toMillis(); - long newPointerPosition = pointerPosition - elapsedMillis; + long basePointerPosition = ObjectUtils.isEmpty(pointerPosition) + ? WORK_DURATION * 60 * 1000L + : pointerPosition; + long newPointerPosition = basePointerPosition - elapsedMillis; if (newPointerPosition <= 0) { // 如果循环已经结束,则需要重置指针位置 - this.pointerPosition = WORK_DURATION * 1000L; + this.pointerPosition = WORK_DURATION * 60 * 1000L; } else { this.pointerPosition = newPointerPosition; } @@ -215,4 +214,4 @@ public class StudySessionsEntity extends BaseEntity implements Serializable { long minutes = Duration.between(ObjectUtils.isEmpty(lastStartTime) ? LocalDateTime.now() : lastStartTime, now).toMinutes(); return minutes >= WORK_DURATION * 2; } -} \ No newline at end of file +} From 43747f785ce2caa1844ba2bed28b5b0186475c9d Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Sun, 12 Apr 2026 13:06:11 +0800 Subject: [PATCH 39/40] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BB=E9=94=AE=E6=A0=A1=E9=AA=8C=E4=B8=8E?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E6=9F=A5=E8=AF=A2SQL=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TasksServiceImpl.java | 13 +++++++++++-- src/main/resources/mapper/StudyReportsMapper.xml | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java b/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java index f21c398..c44b4a1 100644 --- a/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java +++ b/src/main/java/com/guo/learningprogresstracker/service/impl/TasksServiceImpl.java @@ -71,7 +71,17 @@ public class TasksServiceImpl extends ServiceImpl @Override public void updateTask(String taskId, TaskRequest updatedTask) { TaskEntity taskEntity = TaskConvert.MAPPER.taskRequestToTaskEntity(updatedTask); - this.updateById(taskEntity); + int id; + try { + id = Integer.parseInt(taskId); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("任务ID格式错误: " + taskId); + } + taskEntity.setId(id); + boolean updated = this.updateById(taskEntity); + if (!updated) { + throw new IllegalArgumentException("任务不存在或更新失败: " + taskId); + } } @@ -86,4 +96,3 @@ public class TasksServiceImpl extends ServiceImpl - diff --git a/src/main/resources/mapper/StudyReportsMapper.xml b/src/main/resources/mapper/StudyReportsMapper.xml index 1d63e81..d199754 100644 --- a/src/main/resources/mapper/StudyReportsMapper.xml +++ b/src/main/resources/mapper/StudyReportsMapper.xml @@ -26,6 +26,8 @@ from study_sessions ss left join tasks t on ss.task_num = t.task_num and ss.session_state != 'ENDED' and ss.deleted = 0 where t.deleted = 0 - and t.task_num = ${task_num} + and t.task_num = #{task_num} + order by ss.last_modified_time desc, ss.created_time desc + limit 1 From 1d1b48bdbd7102fe6db04d4f97ec05c4474b87e1 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Sun, 12 Apr 2026 13:06:29 +0800 Subject: [PATCH 40/40] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-local.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 82fe589..4bbd53a 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -2,17 +2,18 @@ spring: # 配置数据库 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/learning_progress_tracker?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://39.105.149.197:8109/learning_progress_tracker?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root - password: + password: GUOxy5157 server: port: 5157 cors: + allowCredentials: true allowed-origins: - - http://localhost:5158 - - http://192.168.123.199:5158 + - '*' sa-token: cookie: - secure: false \ No newline at end of file + secure: false + sameSite: Lax \ No newline at end of file