Spring {@code @Scheduled} 已由 {@code ApplicationConfig} 统一开启,不再依赖本配置。
* * @author opensnail * @date 2024-05-17 */ @AutoConfiguration @ConditionalOnProperty(prefix = "snail-job", name = "enabled", havingValue = "true") -@EnableScheduling @EnableSnailJob public class SnailJobConfig { diff --git a/backend/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java b/backend/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java index df524b28..b687ad9d 100644 --- a/backend/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java +++ b/backend/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java @@ -160,11 +160,13 @@ public class TenantHelper { * @param global 是否全局生效 */ public static void setDynamic(String tenantId, boolean global) { + // 传入非空时一律先校验格式,避免租户开关关闭时仍把脏数据带入后续逻辑 + if (StringUtils.isNotBlank(tenantId)) { + checkTenantIdFormat(tenantId); + } if (!isEnable()) { return; } - // 动态租户一律做格式白名单校验,覆盖 login/register/config 等所有 TenantHelper.dynamic 入口 - checkTenantIdFormat(tenantId); if (!LoginHelper.isLogin() || !global) { TEMP_DYNAMIC_TENANT.set(tenantId); return; diff --git a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod-local.yml b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod-local.yml index fdfc034f..fa4c91d4 100644 --- a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod-local.yml +++ b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod-local.yml @@ -21,22 +21,25 @@ spring: title: RuoYi-Vue-Plus服务监控中心 context-path: /admin ---- # Actuator 监控端点的配置项 +--- # Actuator 全关(不使用) management: endpoints: + enabled-by-default: false web: exposure: - include: '*' + include: "" endpoint: health: - show-details: ALWAYS + enabled: false + heapdump: + enabled: false logfile: external-file: ./logs/ruoyi-monitor-admin.log --- # 监控配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false # 设置 Spring Boot Admin Server 地址 url: http://47.121.125.41:9090/admin instance: diff --git a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml index 019f80d8..752c8ee2 100644 --- a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml +++ b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml @@ -23,22 +23,25 @@ spring: # 配置公网访问地址,确保重定向和静态资源路径包含正确的端口号 # public-url: http://web.hzdyjsxy.cn:18081/admin ---- # Actuator 监控端点的配置项 +--- # Actuator 全关(不使用) management: endpoints: + enabled-by-default: false web: exposure: - include: '*' + include: "" endpoint: health: - show-details: ALWAYS + enabled: false + heapdump: + enabled: false logfile: external-file: ./logs/ruoyi-monitor-admin.log --- # 监控配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false # 设置 Spring Boot Admin Server 地址 url: http://172.16.0.67:9090/admin instance: diff --git a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml index 86766d7a..1cbe8a4b 100644 --- a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml +++ b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml @@ -21,22 +21,25 @@ spring: title: RuoYi-Vue-Plus服务监控中心 context-path: /admin ---- # Actuator 监控端点的配置项 +--- # Actuator 全关(不使用) management: endpoints: + enabled-by-default: false web: exposure: - include: '*' + include: "" endpoint: health: - show-details: ALWAYS + enabled: false + heapdump: + enabled: false logfile: external-file: ./logs/ruoyi-monitor-admin.log --- # 监控配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false # 设置 Spring Boot Admin Server 地址 url: http://127.0.0.1:9090/admin instance: diff --git a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml index 5dd063ff..bebce895 100644 --- a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml +++ b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml @@ -3,8 +3,8 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://47.99.164.66:3306/hzdyjs_xg?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - username: root - password: hn02le.34lkdLKD + username: hzdyjs_app + password: Hzdyjs@App#n4SQi8AfPHldNj49 hikari: connection-timeout: 30000 validation-timeout: 5000 @@ -29,7 +29,7 @@ snail-job: --- # 监控中心配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false url: http://localhost:9090/admin instance: service-host-type: IP diff --git a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod-local.yml b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod-local.yml index 0f731ab7..9e949361 100644 --- a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod-local.yml +++ b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod-local.yml @@ -3,8 +3,8 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://47.99.164.66:3306/hzdyjs_xg?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - username: root - password: hn02le.34lkdLKD + username: hzdyjs_app + password: Hzdyjs@App#n4SQi8AfPHldNj49 hikari: connection-timeout: 30000 validation-timeout: 5000 @@ -29,7 +29,7 @@ snail-job: --- # 监控中心配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false url: http://47.121.125.41:9090/admin instance: service-host-type: IP diff --git a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml index a0059e7d..414e91b9 100644 --- a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml +++ b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml @@ -3,8 +3,8 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://172.16.0.67:3306/hzdyjs_xg?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - username: root - password: Hzdyjs@Root@123456 + username: hzdyjs_app + password: Hzdyjs@App#n4SQi8AfPHldNj49 hikari: connection-timeout: 30000 validation-timeout: 5000 @@ -29,7 +29,7 @@ snail-job: --- # 监控中心配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false url: http://172.16.0.67:9090/admin instance: service-host-type: IP diff --git a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml index ba6df45f..8c019805 100644 --- a/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml +++ b/backend/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml @@ -29,11 +29,14 @@ logging: management: endpoints: + enabled-by-default: false web: exposure: - include: '*' + include: "" endpoint: health: - show-details: ALWAYS + enabled: false + heapdump: + enabled: false logfile: external-file: ./logs/ruoyi-snailjob-server/console.log diff --git a/backend/ruoyi-modules/ruoyi-aqbw/pom.xml b/backend/ruoyi-modules/ruoyi-aqbw/pom.xml index 10119be5..ab382f80 100644 --- a/backend/ruoyi-modules/ruoyi-aqbw/pom.xml +++ b/backend/ruoyi-modules/ruoyi-aqbw/pom.xml @@ -92,11 +92,13 @@替代原 SnailJob surveyEndTimeJobExecutor:每小时将 end_time 已过期的问卷 status 更新为 2(已结束)。
+ */ +@Slf4j +@Component +@RequiredArgsConstructor +public class HqSatSurveyExpireTask { + + private static final String LOCK_KEY = "hq:sat:survey:expire:lock"; + private static final Duration LOCK_TTL = Duration.ofMinutes(10); + + private final IHqSatSurveyService satSurveyService; + + /** + * 每小时整点执行(与原 SnailJob 3600 秒间隔对齐) + */ + @Scheduled(cron = "0 0 * * * ?") + public void updateExpiredSurveys() { + boolean locked = RedisUtils.setObjectIfAbsent(LOCK_KEY, "1", LOCK_TTL); + if (!locked) { + log.debug("满意度调查过期扫描跳过:其他实例正在执行"); + return; + } + try { + log.info("开始执行满意度调查过期扫描"); + int updatedCount = satSurveyService.updateExpiredSurveys(); + log.info("满意度调查过期扫描完成,更新数量: {}", updatedCount); + } catch (Exception e) { + log.error("满意度调查过期扫描失败", e); + } finally { + RedisUtils.deleteObject(LOCK_KEY); + } + } +} diff --git a/backend/ruoyi-modules/ruoyi-jcbt/pom.xml b/backend/ruoyi-modules/ruoyi-jcbt/pom.xml index d294f710..b0e6f5e5 100644 --- a/backend/ruoyi-modules/ruoyi-jcbt/pom.xml +++ b/backend/ruoyi-modules/ruoyi-jcbt/pom.xml @@ -92,11 +92,13 @@LP@nFCuwLtS3L3D8be*(9DfS
z1h9YQk#`19C;l>fgwAd@I+>(n)1u1?UHG}1kGgA63yI(*;@-U>OK|(Qte Cxpu2I;7LRA>Wv9$o?B=UpF+f&oOoGp0(^74oM{FAdu}Z|y _kG5f%pi)a?4*OSjy<?FP
_-Hbq46&a(W?iV&
z{>ql7D-RB;rr|G!XeS`J{meJ|+WEcSfp-AktKX(TEu~N>h>o@?j}95Lot@P9qiKG?
zLt2;7zqwAg9cSP5RWG;qq4KFm#hE+xTK3A{%PCv_{M`7h5&jrKta+G$%j~^Qk+~D7
z^;zeH-T&r6DCv`U^G55B^Wnj?<*Vj7izE*>xyRo%cg}3L>w|9ZK^?3%feY_YVc=Ci
zcb8vym)ZP5DNAt;>B}t#qb0s;$-ln(i`7=a)=r|k9@o;GjDL(Ygm#i5FV<{_QzHaE
zMl0wO?fpBG8xHPY;`+AHV$(YO*Q!-%=Swu9F98rOx-2~wskJF*Sx_${38>Qjd@U6Q
z^2VuG-v~=EE|BmD7F%fE7&4aQL83p2?Ndb3n}|9N!}=qFvn6^1F_z3aQ2Y^>_`NpC
z8xBznS~U4TJH0%l2rh}{APk*88k83QWirBwH5Fw4lPH1;m*yaI$WKkLxr&s9>dWM-
zsfZhTG!2Kdi72fREx>*AujP$lL1eg)64m#6Ce!eT4cD8KZ0ZCMJ8xH9A_K|>ixGJo
ze*`VWmyG-L3qhe;G5qW@k`KfD@61G%2|Klt^Rgso=zYeq8{@a3K$$P;MRD(^q>R6
zQ%^}>K^DW&dcH*>z*#=thG6FG(5J!2h9}|_M~38zO8oFr%y4pJ<_DK}W+sTRqw46F
zV@bhPo^0&kMOPNH2PH0&a;kMY(CCki08P>-*5eM)B5zzzXIoK{xz3*_9cXqI<$*4!
z<$1(2Qik}heoT_(ToMo95E%}9^Nth2a+r=J;Oc}wsWXZ8o2oX7=CwHBN&xv=$qIx`
z+>F7Gxwf~pmv1w~MuSK@E591K9GBBuE+tJdl8!3r{~7|{)TdOzhuwbM;{wnEU#Z!2
z1?>2iQ+n7hz>L(3iJ7m7JJSgf`x>tl)}HT!Xj3J@P{mR>cd#IZTa{}5
zWr3^NUHwcdqrYcMgRT4C^@4!iziT`ZPU+vKRe!`_%+6;Uw%*n3T>dJHP2{XIQ!qrqJs!KRz(6N;ygQ_Fn?(j(vkL3?Eojg4eK=a3oaHiL`T
znSV@CuKUPkllQ@JB>ib@WeeI>$8FH8RMqw)cG=zgAlb#YC$qqJmmJti;>U7?xb?$L
zd$Se_at~zsPJg^!&{9(Z=PF!*x^aKnyBJdIWH#n5ohek!AoC<|^iNzxeGkvCo%Y
ze2*dK2(ry1T{rM#iGTNn5x@1Ai`;Ujwg1d7ZJ854%~vMv{{SB?u9)K)z;Z+ePrkZ{
z#2|LFTvmYqfwjZ8>$sF2Z^WtvidU0>TtVxJ;vE?_04?;^189v?l4J-yk;Sr#K;Loq
zPMeWR<6%!~_R$|*6rZ9#CBJu`&NUCH0Uuoobyn?GZJyhrTob$p4YT5UI00}Bh;XJ)
zOlcbPgeyhu#q0Y5Zw4VzJJW6ZFVtEkhOF;lHBo;Amf3f6GLb_lIQV0qziRGpBQ@cU
z+RG<5uTwIUtz6QM*E1%^)NcWix61G|m;7&Vik4a#3vi~S=9i)64fuY+XESN?enRA)
zSa$*k*koUie!ZoL!n>@s0y@p|Qe*m1@w)==JQ98x=S835+}xv`7-TmpOd0Q+?AF&B
z(EW4Q`?F|9oMUJ1$ZAI_GV$O@yvu0X&$L)G(JrLmGX0Q;2DfMRoYp@QVo|s!bp;-p
z#4W-%lui=u-s^8M*oKWM#eo>0!YRE?ML&zjHx28z^I)XMVb%gH0u40Q0`#1ybv7Ap
z<5rI$k%%a%ONgw(t4070AkI4I)Urcj^D!m@8IxoP03T8YaJ^mktpdVYEa{-4h^^S5
z6Yx#gV7