Files
core/.workbuddy/memory/2026-06-21.md
赵忠林 13c48df4b3 fix(app_config): 修复小程序配置全局查询问题
- 调整 AppConfigMapper.xml,使用 bound_tenant_id 精确匹配绑定租户ID
- 修改 AppConfigService 去除 tenantId 为空直接返回的逻辑,支持全局查询
- 修改 WxLoginController,调用 getByCategory 时传入 null 以支持全局查询
- 新增实体字段 boundTenantId 用于区分绑定租户ID
- application-dev.yml 启用 SQL 日志和服务调试日志,便于问题排查
- 统一日志打印详细查询过程及结果,方便调试检查配置加载情况
2026-06-21 11:56:59 +08:00

2.3 KiB
Raw Blame History

2026-06-21 工作日志

WxLoginController 配置读取顺序调整

修改内容

修改了 WxLoginController.java 中的 getMpWxSetting 方法,调整小程序配置读取顺序:

修改前:

  • 优先:db_websopy.app_configcategory=wechat
  • 兜底:sys_setting.mp-weixin

修改后:

  • 优先:sys_setting.mp-weixin
  • 兜底:db_websopy.app_configcategory=wechat

修改原因

业务需求变更需要优先从系统设置sys_setting读取小程序配置数据库配置app_config作为兜底方案。

影响范围

影响所有调用 getMpWxSetting 方法的地方:

  • getOpenIdByCode - 获取 openid
  • getAccessToken - 获取 access_token
  • loginByOpenId - 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} 用当前请求租户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