feat: 完善微信认证功能,新增用户资料更新与token刷新接口

- 新增 userService.js,包含用户认证、资料更新、token 刷新等功能
- 新增 wechatService.js,处理微信API交互,获取openid和手机号
- 新增 appError.js,封装应用错误处理
- 新增 logger.js,提供日志记录功能
- 新增 response.js,统一成功响应格式
- 新增 sanitize.js,提供输入数据清洗功能
- 更新 OpenAPI 文档,描述新增接口及请求响应格式
- 更新 PocketBase 数据库结构,调整用户表字段及索引策略
- 增强错误处理机制,确保错误信息可观测性
- 更新变更记录文档,详细记录本次变更内容
This commit is contained in:
2026-03-24 10:36:19 +08:00
parent d5dc47fc07
commit 02d5686c7b
76 changed files with 1722 additions and 2641 deletions

View File

@@ -104,11 +104,11 @@
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `users_wx_code` | string | 是 | 微信小程序登录临时凭证 code用于换取 `users_wx_openid` |
| `users_wx_code` | string | 是 | 微信小程序登录临时凭证 code用于换取 `openid` |
### 处理逻辑
- 使用 `users_wx_code` 向微信服务端换取 `users_wx_openid`
- 使用 `users_wx_code` 向微信服务端换取 `openid`
- 如果数据库中不存在该用户,则自动创建新账号:
- 初始化 `users_type = 游客`
- 如果数据库中已存在该用户,则直接登录
@@ -135,7 +135,7 @@
"users_phone": "13800138000",
"users_phone_masked": "138****8000",
"users_picture": "https://example.com/avatar.png",
"users_wx_openid": "oAbCdEfGh123456789",
"openid": "oAbCdEfGh123456789",
"company_id": "C10001",
"company": null,
"pb_id": "abc123xyz",
@@ -154,7 +154,6 @@
- **请求方式**`POST`
- **请求头**
- `Content-Type: application/json`
- `users_wx_openid: 微信用户唯一标识`
- `Authorization: Bearer <token>`
### 请求参数
@@ -177,7 +176,7 @@
### 处理逻辑
-请求头 `users_wx_openid` 读取当前用户身份
- `Authorization` 对应的 PocketBase auth record 读取当前用户 `openid`
- 校验 `Authorization`
- 不再从 body 读取 `users_wx_code`
- 使用 `users_phone_code` 调微信官方接口换取真实手机号
@@ -200,7 +199,7 @@
"users_phone": "13800138000",
"users_phone_masked": "138****8000",
"users_picture": "https://example.com/avatar.png",
"users_wx_openid": "oAbCdEfGh123456789",
"openid": "oAbCdEfGh123456789",
"company_id": "",
"company": null,
"pb_id": "abc123xyz",
@@ -218,7 +217,7 @@
- **接口地址**`/wechat/refresh-token`
- **请求方式**`POST`
- **请求头**
- `users_wx_openid: 微信用户唯一标识`
- `Authorization: Bearer <token>`
> 说明:本接口**不要求旧 `Authorization`**。
@@ -228,7 +227,7 @@
### 处理逻辑
- 仅通过请求头中的 `users_wx_openid` 定位用户
- 仅通过当前 `Authorization` 对应认证用户定位身份
- 若用户存在,则签发新的 JWT token
- 若用户不存在,则返回 `404`
@@ -279,7 +278,7 @@ Authorization: Bearer <token>
### 3. `refresh-token` 接口当前只需要:
```http
users_wx_openid: <openid>
Authorization: Bearer <token>
```
不需要旧 `Authorization`