This commit is contained in:
2025-11-04 22:59:55 +08:00
parent 0146e0776a
commit 41f338446d
7 changed files with 1386 additions and 0 deletions

View File

@@ -0,0 +1,213 @@
# 腾讯文档在线编辑功能说明
## 功能概述
本功能实现了将物流信息直接上传到腾讯文档表格实现自动发货的功能。系统通过腾讯文档开放平台的API可以将订单的物流信息自动写入到指定的腾讯文档表格中。
## 功能特性
1. **OAuth2.0授权**支持腾讯文档的OAuth2.0授权流程
2. **物流信息上传**:支持批量或单个订单的物流信息上传
3. **自动发货**:将物流信息上传到腾讯文档后,自动完成发货流程
4. **表格操作**:支持读取、写入、追加表格数据
## 配置说明
### 1. 申请腾讯文档开放平台应用
1. 访问 [腾讯文档开放平台](https://docs.qq.com/open/document/app/)
2. 注册开发者账号并创建应用
3. 获取 `AppID``AppSecret`
4. 配置授权回调地址:`http://your-domain/jarvis/tendoc/oauth/callback`
### 2. 配置应用参数
`application-dev.yml` 中配置腾讯文档相关参数:
```yaml
tencent:
doc:
app-id: your_app_id # 替换为你的AppID
app-secret: your_app_secret # 替换为你的AppSecret
redirect-uri: http://localhost:30313/jarvis/tendoc/oauth/callback # 替换为你的回调地址
```
## API接口说明
### 1. 获取授权URL
**接口地址:** `GET /jarvis/tendoc/authUrl`
**返回示例:**
```json
{
"code": 200,
"msg": "获取授权URL成功",
"data": "https://docs.qq.com/oauth/v2/authorize?client_id=xxx&redirect_uri=xxx&response_type=code&scope=file.read_write"
}
```
### 2. OAuth回调
**接口地址:** `GET /jarvis/tendoc/oauth/callback?code=xxx`
**参数说明:**
- `code`: 授权码(由腾讯文档返回)
**返回示例:**
```json
{
"code": 200,
"msg": "授权成功",
"data": {
"access_token": "xxx",
"refresh_token": "xxx",
"expires_in": 7200
}
}
```
### 3. 刷新访问令牌
**接口地址:** `POST /jarvis/tendoc/refreshToken`
**请求体:**
```json
{
"refreshToken": "xxx"
}
```
### 4. 上传物流信息(批量)
**接口地址:** `POST /jarvis/tendoc/uploadLogistics`
**请求体:**
```json
{
"accessToken": "xxx",
"fileId": "xxx",
"sheetId": "xxx",
"orderIds": [1, 2, 3]
}
```
**参数说明:**
- `accessToken`: 访问令牌
- `fileId`: 腾讯文档文件ID从文档URL中获取
- `sheetId`: 工作表ID从文档URL中获取
- `orderIds`: 订单ID列表
### 5. 追加物流信息(单个)
**接口地址:** `POST /jarvis/tendoc/appendLogistics`
**请求体:**
```json
{
"accessToken": "xxx",
"fileId": "xxx",
"sheetId": "xxx",
"orderId": 1
}
```
### 6. 自动发货
**接口地址:** `POST /jarvis/tendoc/autoShip`
**请求体:**
```json
{
"accessToken": "xxx",
"fileId": "xxx",
"sheetId": "xxx",
"orderId": 1
}
```
**功能说明:**
- 检查订单是否有物流链接
- 将物流信息上传到腾讯文档表格
- 完成自动发货流程
### 7. 读取表格数据
**接口地址:** `GET /jarvis/tendoc/readSheet`
**参数:**
- `accessToken`: 访问令牌
- `fileId`: 文件ID
- `sheetId`: 工作表ID
- `range`: 范围可选默认A1:Z100
### 8. 获取文件信息
**接口地址:** `GET /jarvis/tendoc/fileInfo`
**参数:**
- `accessToken`: 访问令牌
- `fileId`: 文件ID
### 9. 获取工作表列表
**接口地址:** `GET /jarvis/tendoc/sheetList`
**参数:**
- `accessToken`: 访问令牌
- `fileId`: 文件ID
## 使用流程
### 1. 授权流程
1. 调用 `GET /jarvis/tendoc/authUrl` 获取授权URL
2. 用户在浏览器中访问授权URL完成授权
3. 授权成功后,腾讯文档会重定向到回调地址,并携带 `code` 参数
4. 调用 `GET /jarvis/tendoc/oauth/callback?code=xxx` 获取访问令牌
### 2. 上传物流信息
1. 获取腾讯文档的文件ID和工作表ID
- 打开腾讯文档从URL中获取`https://docs.qq.com/sheet/Dxxxxxxxxxxxxx?tab=BB08J2`
- `Dxxxxxxxxxxxxx` 为文件ID
- `BB08J2` 为工作表ID
2. 调用上传接口
- 批量上传:`POST /jarvis/tendoc/uploadLogistics`
- 单个追加:`POST /jarvis/tendoc/appendLogistics`
- 自动发货:`POST /jarvis/tendoc/autoShip`
### 3. 表格格式
上传的数据格式(按列顺序):
1. 内部单号remark
2. 订单号orderId
3. 下单时间orderTime
4. 型号modelNumber
5. 地址address
6. 物流链接logisticsLink
7. 下单人buyer
8. 付款金额paymentAmount
9. 后返金额rebateAmount
10. 备注/状态status
## 注意事项
1. **访问令牌有效期**访问令牌通常有效期为2小时过期后需要使用 `refresh_token` 刷新
2. **API调用频率**腾讯文档API有调用频率限制请参考[腾讯文档开放平台文档](https://docs.qq.com/open/document/app/)
3. **文件权限**:确保应用有权限访问目标文档
4. **表格格式**:建议在腾讯文档中先创建表头,确保列顺序与系统一致
## 错误处理
- 如果访问令牌过期,系统会返回错误信息,需要重新授权或刷新令牌
- 如果文件ID或工作表ID错误会返回相应的错误提示
- 如果订单信息不完整(如缺少物流链接),自动发货会失败并提示
## 技术支持
如有问题,请参考:
- [腾讯文档开放平台文档](https://docs.qq.com/open/document/app/)
- 系统日志文件