feat(wx-login): 添加微信登录接口租户支持

- 新增支持指定租户ID的微信登录相关接口
- 添加获取AccessToken和登录接口的重载版本
- 更新文档,增加租户支持相关说明
- 修改内部方法,支持指定租户ID参数
This commit is contained in:
2025-09-05 16:05:28 +08:00
parent 8551386af6
commit 7a332ccd13
2 changed files with 315 additions and 4 deletions

View File

@@ -0,0 +1,119 @@
# 微信登录接口租户支持文档
## 概述
为了支持多租户场景我们为微信登录相关接口添加了支持指定租户ID的重载版本。这样可以在跨租户场景下灵活使用微信登录功能。
## 新增接口
### 1. 获取AccessToken支持租户ID
**接口地址:** `POST /api/wx-login/getAccessToken/{tenantId}`
**参数:**
- `tenantId`租户ID路径参数
**示例:**
```bash
curl -X POST "http://localhost:8080/api/wx-login/getAccessToken/123"
```
### 2. 微信授权手机号码并登录支持租户ID
**接口地址:** `POST /api/wx-login/loginByMpWxPhone/{tenantId}`
**参数:**
- `tenantId`租户ID路径参数
- 请求体UserParam对象
**示例:**
```bash
curl -X POST "http://localhost:8080/api/wx-login/loginByMpWxPhone/123" \
-H "Content-Type: application/json" \
-d '{
"code": "登录凭证code",
"authCode": "手机号授权code",
"openid": "微信openid可选"
}'
```
## 兼容性
### 原有接口保持不变
所有原有的接口都保持不变,确保向后兼容:
- `POST /api/wx-login/getAccessToken` - 使用当前租户ID
- `POST /api/wx-login/loginByMpWxPhone` - 使用当前租户ID
### 内部方法重载
我们添加了以下内部方法的重载版本:
1. `getAccessToken(Integer tenantId)` - 支持指定租户ID获取AccessToken
2. `getPhoneByCode(UserParam userParam, Integer tenantId)` - 支持指定租户ID获取手机号
3. `addUserWithTenant(UserParam userParam, Integer tenantId)` - 支持指定租户ID注册用户
## 使用场景
### 场景1管理员代理操作
管理员需要为特定租户的用户进行微信登录操作:
```javascript
// 前端代码
wx.login({
success: (loginRes) => {
wx.getPhoneNumber({
success: (phoneRes) => {
wx.request({
url: '/api/wx-login/loginByMpWxPhone/123', // 指定租户ID
method: 'POST',
data: {
code: loginRes.code,
authCode: phoneRes.code
}
});
}
});
}
});
```
### 场景2跨租户数据同步
在数据同步或迁移场景下需要为不同租户获取AccessToken
```java
// 后端代码示例
String tenant1Token = getAccessToken(123);
String tenant2Token = getAccessToken(456);
```
## 注意事项
1. **租户ID验证**系统会验证传入的租户ID是否有效
2. **权限控制**:确保调用者有权限操作指定租户的数据
3. **缓存隔离**不同租户的AccessToken会分别缓存互不影响
4. **错误处理**如果指定的租户ID无效会返回相应的错误信息
## 错误码
| 错误码 | 说明 |
|--------|------|
| 40001 | 租户ID无效 |
| 40002 | 无权限操作指定租户 |
| 40029 | 微信授权码无效或过期 |
## 最佳实践
1. **前端处理**建议前端分别获取登录code和手机号code避免code重复使用
2. **错误重试**当遇到40029错误时提示用户重新授权
3. **日志记录**:系统会记录详细的操作日志,便于问题排查
4. **租户隔离**:确保不同租户的数据完全隔离
## 更新日志
- 2024-12-19添加租户支持功能
- 2024-12-19修复openid获取失败的问题
- 2024-12-19增强错误处理和日志记录