From e8e1e089fbf72fe5a019b30c2035f7ec7e23d3c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Sat, 18 Apr 2026 13:07:03 +0800 Subject: [PATCH] =?UTF-8?q?chore(config):=20=E6=B8=85=E7=90=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=92=8C=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除未使用的 CacheConfig.java - 更新 pom.xml 依赖版本 - 优化应用配置文件 - 更新前端配置管理页面 - 更新 package-lock.json --- gym-manage-api/manage-app/pom.xml | 2 +- .../src/main/resources/application-dev.yml | 12 +++++++ .../src/main/resources/application-local.yml | 4 +-- .../src/main/resources/application.yml | 7 ++++ gym-manage-api/manage-common/pom.xml | 8 ----- .../gym/manage/common/config/CacheConfig.java | 36 ------------------- ...ot.autoconfigure.AutoConfiguration.imports | 3 +- gym-manage-api/manage-gateway/pom.xml | 2 +- .../service/impl/JwtKeyServiceImpl.java | 4 +++ .../src/main/resources/application-dev.yml | 12 +++++++ .../core/service/impl/SysConfigService.java | 10 +++--- .../src/views/config/ConfigManagement.vue | 12 +++++-- .../src/views/config/DictManagement.vue | 2 +- gym-manage-web/src/views/system/Login.vue | 7 ++++ package-lock.json | 2 +- 15 files changed, 62 insertions(+), 61 deletions(-) delete mode 100644 gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/config/CacheConfig.java diff --git a/gym-manage-api/manage-app/pom.xml b/gym-manage-api/manage-app/pom.xml index 4d58325..5d5e344 100644 --- a/gym-manage-api/manage-app/pom.xml +++ b/gym-manage-api/manage-app/pom.xml @@ -133,7 +133,7 @@ org.springframework.boot spring-boot-maven-plugin - cn.novalon.manage.app.ManageApplication + cn.novalon.gym.manage.app.ManageApplication diff --git a/gym-manage-api/manage-app/src/main/resources/application-dev.yml b/gym-manage-api/manage-app/src/main/resources/application-dev.yml index baa3279..8f5e8dc 100644 --- a/gym-manage-api/manage-app/src/main/resources/application-dev.yml +++ b/gym-manage-api/manage-app/src/main/resources/application-dev.yml @@ -1,14 +1,26 @@ spring: + cache: + type: none r2dbc: url: r2dbc:postgresql://localhost:55432/manage_system username: novalon password: novalon123 + pool: + initial-size: 5 + max-size: 20 + max-idle-time: 10m + max-life-time: 30m + acquire-timeout: 3s flyway: enabled: true locations: classpath:db/migration baseline-on-migrate: true validate-on-migrate: true +jwt: + secret: novalon-gym-manage-jwt-secret-key-for-development-only-2026 + expiration: 86400000 + rate: limit: limit-for-period: 10000 diff --git a/gym-manage-api/manage-app/src/main/resources/application-local.yml b/gym-manage-api/manage-app/src/main/resources/application-local.yml index 9b7bc6b..96ae438 100644 --- a/gym-manage-api/manage-app/src/main/resources/application-local.yml +++ b/gym-manage-api/manage-app/src/main/resources/application-local.yml @@ -6,7 +6,7 @@ spring: r2dbc: url: r2dbc:postgresql://localhost:55432/manage_system username: novalon - password: novalon123 + password: 123456 pool: initial-size: 5 max-size: 20 @@ -16,7 +16,7 @@ spring: datasource: url: jdbc:postgresql://localhost:55432/manage_system username: novalon - password: novalon123 + password: 123456 driver-class-name: org.postgresql.Driver flyway: enabled: true diff --git a/gym-manage-api/manage-app/src/main/resources/application.yml b/gym-manage-api/manage-app/src/main/resources/application.yml index b3e64f4..0173263 100644 --- a/gym-manage-api/manage-app/src/main/resources/application.yml +++ b/gym-manage-api/manage-app/src/main/resources/application.yml @@ -4,6 +4,13 @@ server: spring: application: name: gym-manage-api + main: + allow-bean-definition-overriding: true + cache: + type: none + autoconfigure: + exclude: + - org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration r2dbc: url: r2dbc:postgresql://${DB_HOST:localhost}:${DB_PORT:55432}/${DB_NAME:manage_system} username: ${DB_USERNAME:postgres} diff --git a/gym-manage-api/manage-common/pom.xml b/gym-manage-api/manage-common/pom.xml index 15b9d55..7f51635 100644 --- a/gym-manage-api/manage-common/pom.xml +++ b/gym-manage-api/manage-common/pom.xml @@ -29,14 +29,6 @@ org.springframework.boot spring-boot-starter-validation - - org.springframework.boot - spring-boot-starter-cache - - - com.github.ben-manes.caffeine - caffeine - org.apache.commons commons-lang3 diff --git a/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/config/CacheConfig.java b/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/config/CacheConfig.java deleted file mode 100644 index 96beade..0000000 --- a/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/config/CacheConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.novalon.gym.manage.common.config; - -import com.github.benmanes.caffeine.cache.Caffeine; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.caffeine.CaffeineCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.concurrent.TimeUnit; - -/** - * 缓存配置类 - * - * @author 张翔 - * @date 2026-03-13 - */ -@Configuration -@EnableCaching -public class CacheConfig { - - @Bean - public CacheManager cacheManager() { - CaffeineCacheManager cacheManager = new CaffeineCacheManager(); - cacheManager.setCaffeine(caffeineCacheBuilder()); - return cacheManager; - } - - private Caffeine caffeineCacheBuilder() { - return Caffeine.newBuilder() - .initialCapacity(100) - .maximumSize(500) - .expireAfterWrite(30, TimeUnit.MINUTES) - .recordStats(); - } -} diff --git a/gym-manage-api/manage-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/gym-manage-api/manage-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 66d2f6f..1245f77 100644 --- a/gym-manage-api/manage-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/gym-manage-api/manage-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1 @@ -cn.novalon.gym.manage.common.config.CacheConfig -cn.novalon.gym.manage.common.config.JwtProperties \ No newline at end of file +cn.novalon.gym.manage.common.config.JwtProperties diff --git a/gym-manage-api/manage-gateway/pom.xml b/gym-manage-api/manage-gateway/pom.xml index 5d9283e..1c25330 100644 --- a/gym-manage-api/manage-gateway/pom.xml +++ b/gym-manage-api/manage-gateway/pom.xml @@ -93,7 +93,7 @@ org.springframework.boot spring-boot-maven-plugin - cn.novalon.manage.gateway.GatewayApplication + cn.novalon.gym.manage.gateway.GatewayApplication diff --git a/gym-manage-api/manage-gateway/src/main/java/cn/novalon/gym/manage/gateway/service/impl/JwtKeyServiceImpl.java b/gym-manage-api/manage-gateway/src/main/java/cn/novalon/gym/manage/gateway/service/impl/JwtKeyServiceImpl.java index 1b6602f..2a17537 100644 --- a/gym-manage-api/manage-gateway/src/main/java/cn/novalon/gym/manage/gateway/service/impl/JwtKeyServiceImpl.java +++ b/gym-manage-api/manage-gateway/src/main/java/cn/novalon/gym/manage/gateway/service/impl/JwtKeyServiceImpl.java @@ -198,6 +198,8 @@ public class JwtKeyServiceImpl implements JwtKeyService { try { String initialKey; + logger.info("Configured JWT secret: {}", configuredSecret != null ? "present (length: " + configuredSecret.length() + ")" : "null"); + if (configuredSecret != null && !configuredSecret.isEmpty()) { if (configuredSecret.startsWith("enc:")) { initialKey = decryptKey(configuredSecret.substring(4)); @@ -216,6 +218,8 @@ public class JwtKeyServiceImpl implements JwtKeyService { logger.info("Generated new secure JWT key"); } + logger.info("JWT key length: {}", initialKey.length()); + SecretKey signingKey = new SecretKeySpec( initialKey.getBytes(StandardCharsets.UTF_8), KEY_ALGORITHM diff --git a/gym-manage-api/manage-gateway/src/main/resources/application-dev.yml b/gym-manage-api/manage-gateway/src/main/resources/application-dev.yml index 3361d5b..0d8aa77 100644 --- a/gym-manage-api/manage-gateway/src/main/resources/application-dev.yml +++ b/gym-manage-api/manage-gateway/src/main/resources/application-dev.yml @@ -7,6 +7,18 @@ spring: predicates: - Path=/api/** +jwt: + secret: novalon-gym-manage-jwt-secret-key-for-development-only-2026 + expiration: 86400000 + +signature: + enabled: false + +resilience: + timeout: + enabled: true + duration: 10s + logging: level: org.springframework.cloud.gateway: TRACE diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/SysConfigService.java b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/SysConfigService.java index 454ed0b..b3e8d1d 100644 --- a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/SysConfigService.java +++ b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/SysConfigService.java @@ -3,8 +3,6 @@ package cn.novalon.gym.manage.sys.core.service.impl; import cn.novalon.gym.manage.sys.core.domain.SysConfig; import cn.novalon.gym.manage.sys.core.repository.ISysConfigRepository; import cn.novalon.gym.manage.sys.core.service.ISysConfigService; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -30,25 +28,25 @@ public class SysConfigService implements ISysConfigService { } @Override - @Cacheable(value = "sysConfig", key = "#id") + // @Cacheable(value = "sysConfig", key = "#id") public Mono findById(Long id) { return repository.findById(id); } @Override - @Cacheable(value = "sysConfig", key = "#configKey") + // @Cacheable(value = "sysConfig", key = "#configKey") public Mono findByConfigKey(String configKey) { return repository.findByConfigKeyAndDeletedAtIsNull(configKey); } @Override - @CacheEvict(value = "sysConfig", allEntries = true) + // @CacheEvict(value = "sysConfig", allEntries = true) public Mono save(SysConfig config) { return repository.save(config); } @Override - @CacheEvict(value = "sysConfig", key = "#id") + // @CacheEvict(value = "sysConfig", key = "#id") public Mono deleteById(Long id) { return repository.deleteByIdAndDeletedAtIsNull(id); } diff --git a/gym-manage-web/src/views/config/ConfigManagement.vue b/gym-manage-web/src/views/config/ConfigManagement.vue index 51ac3c8..0221931 100644 --- a/gym-manage-web/src/views/config/ConfigManagement.vue +++ b/gym-manage-web/src/views/config/ConfigManagement.vue @@ -154,15 +154,21 @@ const handleDelete = async (row: any) => { const handleModalOk = async () => { try { + console.log('handleModalOk called, formState:', formState) if (formState.id) { - await request.put(`/config/${formState.id}`, formState) + console.log('Sending PUT request to /config/' + formState.id) + const response = await request.put(`/config/${formState.id}`, formState) + console.log('PUT response:', response) } else { - await request.post('/config', formState) + console.log('Sending POST request to /config') + const response = await request.post('/config', formState) + console.log('POST response:', response) } ElMessage.success('操作成功') modalVisible.value = false fetchData() - } catch { + } catch (error) { + console.error('handleModalOk error:', error) ElMessage.error('操作失败') } } diff --git a/gym-manage-web/src/views/config/DictManagement.vue b/gym-manage-web/src/views/config/DictManagement.vue index 42ebde0..4f922c1 100644 --- a/gym-manage-web/src/views/config/DictManagement.vue +++ b/gym-manage-web/src/views/config/DictManagement.vue @@ -159,7 +159,7 @@ const handleDelete = async (row: any) => { cancelButtonText: '取消', type: 'warning' }) - await request.delete(`/dict/${row.id}`) + await request.delete(`/dict/types/${row.id}`) ElMessage.success('删除成功') fetchData() } catch (error) { diff --git a/gym-manage-web/src/views/system/Login.vue b/gym-manage-web/src/views/system/Login.vue index 9b8e320..dc6b466 100644 --- a/gym-manage-web/src/views/system/Login.vue +++ b/gym-manage-web/src/views/system/Login.vue @@ -79,9 +79,12 @@ interface JwtPayload { const onFinish = async () => { loading.value = true try { + console.log('开始登录请求...') const res: any = await request.post('/auth/login', formState) + console.log('登录响应:', res) if (!res || !res.token) { + console.error('登录失败:未收到有效响应') ElMessage.error('登录失败:未收到有效响应') return } @@ -103,15 +106,19 @@ const onFinish = async () => { console.warn('解析Token中的角色信息失败:', decodeError) } + console.log('开始获取用户菜单...') try { await permissionStore.fetchUserMenus() + console.log('获取用户菜单成功') } catch (menuError) { console.error('获取用户菜单失败:', menuError) } ElMessage.success('登录成功') + console.log('准备跳转到首页...') await router.push('/') + console.log('跳转完成') } catch (error: any) { console.error('登录错误:', error) ElMessage.error(error.response?.data?.message || error.message || '登录失败') diff --git a/package-lock.json b/package-lock.json index 275fe91..83bb673 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "novalon-manage-system", + "name": "gym-manage", "lockfileVersion": 3, "requires": true, "packages": {