# 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` - 获取 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}` 用当前请求租户ID(16411)去匹配数据库中的记录(5),自然查不到。 ### 修复方案 小程序配置通常是全局共享的,不应按当前请求租户过滤。修改了以下文件: 1. **AppConfigMapper.xml**: - 使用 MyBatis 动态 SQL `` - 当 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`