From 777de9708535c071483b05220d42f6508f7052b9 Mon Sep 17 00:00:00 2001
From: zhouz <>
Date: Fri, 14 Aug 2026 16:02:03 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E6=97=A5=E8=AE=A1?=
=?UTF-8?q?=E5=88=92=E7=A7=9F=E7=BA=A6=E7=B2=BE=E5=BA=A6=E4=B8=8E=E5=AE=89?=
=?UTF-8?q?=E5=85=A8=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../config/SecurityConfiguration.java | 3 ++-
.../mapper/dailyplan/DailyPlanClaimMapper.xml | 4 ++--
.../mapper/dailyplan/DailyPlanMapper.xml | 6 ++---
sql/mysql/lms_daily_plan.sql | 22 +++++++++++++++++--
4 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/framwork/security/config/SecurityConfiguration.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/framwork/security/config/SecurityConfiguration.java
index 6c6cab41..9e3046b7 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/framwork/security/config/SecurityConfiguration.java
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/framwork/security/config/SecurityConfiguration.java
@@ -3,6 +3,7 @@ package cn.code.nl.module.lms.framwork.security.config;
import cn.code.nl.framework.security.config.AuthorizeRequestsCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
@@ -106,7 +107,7 @@ public class SecurityConfiguration {
.requestMatchers("/swagger-ui").permitAll()
.requestMatchers("/swagger-ui/**").permitAll();
// ERP 日计划接口使用独立令牌鉴权
- registry.requestMatchers("/lms/daily-plan/erpPush").permitAll();
+ registry.requestMatchers(HttpMethod.POST, "/lms/daily-plan/erpPush").permitAll();
// Spring Boot Actuator 的安全配置
registry.requestMatchers("/actuator").permitAll()
.requestMatchers("/actuator/**").permitAll();
diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanClaimMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanClaimMapper.xml
index c72695a4..f5ee6d01 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanClaimMapper.xml
+++ b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanClaimMapper.xml
@@ -35,7 +35,7 @@
UPDATE lms_daily_plan_claim
SET claim_status = 1, active_flag = NULL, confirmed_time = NOW(), updater = #{updater}, version = version + 1
WHERE claim_id = #{claimId} AND version = #{version} AND claim_status = 0 AND active_flag = 1
- AND expire_time > NOW() AND deleted = b'0'
+ AND expire_time > NOW(6) AND deleted = b'0'
@@ -48,7 +48,7 @@
UPDATE lms_daily_plan_claim
SET expire_time = #{expireTime}, updater = #{updater}, version = version + 1
WHERE claim_token = #{claimToken} AND version = #{version} AND claim_status = 0 AND active_flag = 1
- AND expire_time > NOW() AND deleted = b'0'
+ AND expire_time > NOW(6) AND deleted = b'0'
diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanMapper.xml
index 66f042c4..ae69906e 100644
--- a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanMapper.xml
+++ b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/dailyplan/DailyPlanMapper.xml
@@ -68,7 +68,7 @@
AND claim.tenant_id = lms_daily_plan.tenant_id
AND claim.strategy_type = #{strategyType}
AND claim.claim_status = 0 AND claim.active_flag = 1
- AND claim.expire_time > NOW() AND claim.deleted = b'0'
+ AND claim.expire_time > NOW(6) AND claim.deleted = b'0'
)
FOR UPDATE
@@ -120,7 +120,7 @@
WHERE claim.daily_plan_id = lms_daily_plan.daily_plan_id
AND claim.tenant_id = lms_daily_plan.tenant_id
AND claim.strategy_type = 1 AND claim.claim_status = 0
- AND claim.active_flag = 1 AND claim.expire_time > NOW() AND claim.deleted = b'0'
+ AND claim.active_flag = 1 AND claim.expire_time > NOW(6) AND claim.deleted = b'0'
)
ORDER BY sort_seq ASC, daily_plan_id ASC
@@ -138,7 +138,7 @@
WHERE claim.daily_plan_id = lms_daily_plan.daily_plan_id
AND claim.tenant_id = lms_daily_plan.tenant_id
AND claim.strategy_type = 2 AND claim.claim_status = 0
- AND claim.active_flag = 1 AND claim.expire_time > NOW() AND claim.deleted = b'0'
+ AND claim.active_flag = 1 AND claim.expire_time > NOW(6) AND claim.deleted = b'0'
)
ORDER BY sort_seq ASC, daily_plan_id ASC
diff --git a/sql/mysql/lms_daily_plan.sql b/sql/mysql/lms_daily_plan.sql
index 9f2dd4b8..22004f4c 100644
--- a/sql/mysql/lms_daily_plan.sql
+++ b/sql/mysql/lms_daily_plan.sql
@@ -70,7 +70,7 @@ CREATE TABLE IF NOT EXISTS `lms_daily_plan_claim` (
`version` int NOT NULL DEFAULT 0 COMMENT '领取乐观锁版本号',
`claim_status` tinyint NOT NULL DEFAULT 0 COMMENT '领取状态:0执行中,1已确认,2已释放,3已过期',
`active_flag` tinyint DEFAULT 1 COMMENT '有效领取唯一标记,终态置空',
- `expire_time` datetime NOT NULL COMMENT '租约过期时间',
+ `expire_time` datetime(6) NOT NULL COMMENT '租约过期时间',
`confirmed_time` datetime DEFAULT NULL COMMENT '确认时间',
`operator` varchar(64) NOT NULL COMMENT '领取人/执行器',
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
@@ -98,7 +98,8 @@ CREATE TABLE IF NOT EXISTS `lms_daily_plan_operation_log` (
`operation_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
- PRIMARY KEY (`operation_log_id`)
+ PRIMARY KEY (`operation_log_id`),
+ KEY `idx_plan_operation_time` (`tenant_id`, `daily_plan_id`, `deleted`, `operation_time`)
) COMMENT='LMS日计划操作日志';
-- 兼容已执行过旧版脚本的数据库,幂等补充候选组合索引。
@@ -113,6 +114,23 @@ SET @lms_daily_plan_ddl = IF(
PREPARE lms_daily_plan_stmt FROM @lms_daily_plan_ddl;
EXECUTE lms_daily_plan_stmt;
DEALLOCATE PREPARE lms_daily_plan_stmt;
+SET @lms_daily_plan_ddl = IF(
+ EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
+ AND table_name = 'lms_daily_plan_claim' AND column_name = 'expire_time'
+ AND datetime_precision = 6),
+ 'SELECT 1',
+ 'ALTER TABLE lms_daily_plan_claim MODIFY COLUMN expire_time DATETIME(6) NOT NULL COMMENT ''租约过期时间''');
+PREPARE lms_daily_plan_stmt FROM @lms_daily_plan_ddl;
+EXECUTE lms_daily_plan_stmt;
+DEALLOCATE PREPARE lms_daily_plan_stmt;
+SET @lms_daily_plan_ddl = IF(
+ EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema = DATABASE()
+ AND table_name = 'lms_daily_plan_operation_log' AND index_name = 'idx_plan_operation_time'),
+ 'SELECT 1',
+ 'ALTER TABLE lms_daily_plan_operation_log ADD INDEX idx_plan_operation_time (tenant_id, daily_plan_id, deleted, operation_time)');
+PREPARE lms_daily_plan_stmt FROM @lms_daily_plan_ddl;
+EXECUTE lms_daily_plan_stmt;
+DEALLOCATE PREPARE lms_daily_plan_stmt;
SET @lms_daily_plan_ddl = IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = DATABASE()
AND table_name = 'lms_daily_plan_claim' AND column_name = 'progress_qty'),