# 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 `<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`
