- 调整 AppConfigMapper.xml,使用 bound_tenant_id 精确匹配绑定租户ID - 修改 AppConfigService 去除 tenantId 为空直接返回的逻辑,支持全局查询 - 修改 WxLoginController,调用 getByCategory 时传入 null 以支持全局查询 - 新增实体字段 boundTenantId 用于区分绑定租户ID - application-dev.yml 启用 SQL 日志和服务调试日志,便于问题排查 - 统一日志打印详细查询过程及结果,方便调试检查配置加载情况
2.3 KiB
2.3 KiB
2026-06-21 工作日志
WxLoginController 配置读取顺序调整
修改内容
修改了 WxLoginController.java 中的 getMpWxSetting 方法,调整小程序配置读取顺序:
修改前:
- 优先:
db_websopy.app_config(category=wechat) - 兜底:
sys_setting.mp-weixin
修改后:
- 优先:
sys_setting.mp-weixin - 兜底:
db_websopy.app_config(category=wechat)
修改原因
业务需求变更,需要优先从系统设置(sys_setting)读取小程序配置,数据库配置(app_config)作为兜底方案。
影响范围
影响所有调用 getMpWxSetting 方法的地方:
getOpenIdByCode- 获取 openidgetAccessToken- 获取 access_tokenloginByOpenId- openid 无感登录getWxOpenId/getWxOpenIdOnly- 获取微信 openId
文件位置
/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),自然查不到。
修复方案
小程序配置通常是全局共享的,不应按当前请求租户过滤。修改了以下文件:
-
AppConfigMapper.xml:
- 使用 MyBatis 动态 SQL
<if test="tenantId != null"> - 当 tenantId 为 null 时,不加
tenant_id过滤条件,查询所有租户下的配置
- 使用 MyBatis 动态 SQL
-
AppConfigService.java:
- 移除 tenantId 为空时直接返回 null 的逻辑
- 支持全局查询模式
-
WxLoginController.java:
- 调用
getByCategory("wechat", null)传入 null,触发全局查询
- 调用
-
application-dev.yml:
- 启用 SQL 日志方便调试
修改文件清单
src/main/java/com/gxwebsoft/websopy/mapper/AppConfigMapper.xmlsrc/main/java/com/gxwebsoft/websopy/service/AppConfigService.javasrc/main/java/com/gxwebsoft/common/system/controller/WxLoginController.javasrc/main/resources/application-dev.yml