fix(app_config): 修复小程序配置全局查询问题

- 调整 AppConfigMapper.xml,使用 bound_tenant_id 精确匹配绑定租户ID
- 修改 AppConfigService 去除 tenantId 为空直接返回的逻辑,支持全局查询
- 修改 WxLoginController,调用 getByCategory 时传入 null 以支持全局查询
- 新增实体字段 boundTenantId 用于区分绑定租户ID
- application-dev.yml 启用 SQL 日志和服务调试日志,便于问题排查
- 统一日志打印详细查询过程及结果,方便调试检查配置加载情况
This commit is contained in:
2026-06-21 11:56:59 +08:00
parent 6eb1c67516
commit 13c48df4b3
6 changed files with 84 additions and 13 deletions

View File

@@ -25,3 +25,44 @@
### 文件位置
`/Users/gxwebsoft/JAVA/com.gxwebsoft.core/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java`
---
## app_config 查询不到数据问题修复
### 问题现象
调用 `selectByCategory(tenantId, "wechat")` 查不到数据,但数据库中确实有记录。
### 根本原因
**tenant_id 不匹配!**
| 来源 | tenant_id |
|------|-----------|
| 数据库 app_config 表wechat配置 | **5** |
| getTenantId() 返回的当前请求租户 | **16411** |
SQL 的 WHERE 条件 `ac.tenant_id = #{tenantId}` 用当前请求租户ID16411去匹配数据库中的记录5自然查不到。
### 修复方案
小程序配置通常是全局共享的,不应按当前请求租户过滤。修改了以下文件:
1. **AppConfigMapper.xml**
- 使用 MyBatis 动态 SQL `<if test="tenantId != null">`
- 当 tenantId 为 null 时,不加 `tenant_id` 过滤条件,查询所有租户下的配置
2. **AppConfigService.java**
- 移除 tenantId 为空时直接返回 null 的逻辑
- 支持全局查询模式
3. **WxLoginController.java**
- 调用 `getByCategory("wechat", null)` 传入 null触发全局查询
4. **application-dev.yml**
- 启用 SQL 日志方便调试
### 修改文件清单
- `src/main/java/com/gxwebsoft/websopy/mapper/AppConfigMapper.xml`
- `src/main/java/com/gxwebsoft/websopy/service/AppConfigService.java`
- `src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java`
- `src/main/resources/application-dev.yml`