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:
@@ -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}` 用当前请求租户ID(16411)去匹配数据库中的记录(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`
|
||||
|
||||
Reference in New Issue
Block a user