f946e9dd
hexiaodong
hhh
|
1
2
3
|
# 抖音物流对接 - 易打单系统
## 项目说明
|
2ef28d30
“wangming”
refactor: replace...
|
4
|
|
f946e9dd
hexiaodong
hhh
|
5
6
7
|
实现抖音电商平台的易打单功能,对接顺丰物流,实现订单自动获取、运单自动创建、打印预览等功能。
## 技术栈
|
2ef28d30
“wangming”
refactor: replace...
|
8
|
|
f946e9dd
hexiaodong
hhh
|
9
10
11
12
13
14
15
|
- **后端**:ASP.NET Core 8.0 + SQLSugar
- **前端**:Vue 3 + Element Plus + TypeScript
- **数据库**:SQL Server / MySQL(可配置)
## 功能模块
### 已实现功能
|
f946e9dd
hexiaodong
hhh
|
16
|
|
2ef28d30
“wangming”
refactor: replace...
|
17
18
19
20
|
1. ✅ **抖音开放平台对接**
- 订单获取(待发货订单)
- 运单号上传回传
- OAuth2.0 授权流程
|
f946e9dd
hexiaodong
hhh
|
21
|
2. ✅ **顺丰物流对接**
|
2ef28d30
“wangming”
refactor: replace...
|
22
23
|
- 运单创建
- 运单号自动获取
|
f946e9dd
hexiaodong
hhh
|
24
|
3. ✅ **订单管理**
|
2ef28d30
“wangming”
refactor: replace...
|
25
26
27
|
- 订单列表查询(支持分页、状态筛选)
- 订单详情查看
- 订单实时同步(30秒间隔)
|
f946e9dd
hexiaodong
hhh
|
28
|
4. ✅ **运单管理**
|
2ef28d30
“wangming”
refactor: replace...
|
29
30
31
|
- 自动创建运单(订单同步时自动创建)
- 手动创建运单
- 运单号自动回传到抖音
|
f946e9dd
hexiaodong
hhh
|
32
|
5. ✅ **打印预览**
|
2ef28d30
“wangming”
refactor: replace...
|
33
34
|
- 运单打印预览页面
- 支持浏览器打印
|
f946e9dd
hexiaodong
hhh
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
## 项目结构
```
├── DouyinLogistics.API/ # 后端 ASP.NET Core 项目
│ ├── Controllers/ # API 控制器
│ │ ├── AuthController.cs # 授权相关
│ │ ├── OrdersController.cs # 订单管理
│ │ └── WaybillController.cs # 运单预览
│ ├── Services/ # 业务服务
│ │ ├── DouyinService.cs # 抖音 API 服务
│ │ ├── SfService.cs # 顺丰 API 服务
│ │ ├── OrderService.cs # 订单业务服务
│ │ └── OrderSyncService.cs # 订单同步后台服务
│ ├── Models/ # 数据模型
│ └── appsettings.json # 配置文件
├── frontend/ # 前端 Vue 项目
│ ├── src/
│ │ ├── views/
│ │ │ └── OrderListView.vue # 订单列表页面
│ │ ├── api/ # API 接口
│ │ └── router/ # 路由配置
└── README.md
```
## 配置说明
### 后端配置(appsettings.json)
```json
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=DouyinLogistics;User Id=sa;Password=your_password;TrustServerCertificate=True;"
},
"Douyin": {
"AppKey": "7463313337959335475",
"AppSecret": "648ddb67-b3ba-48a3-905c-ea761e69a87e",
"CallbackUrl": "https://your-domain.com/api/auth/callback",
"ApiBaseUrl": "https://openapi-fxg.jinritemai.com"
},
"Sf": {
"CustomerCode": "your_customer_code", // 顺丰客户编码
"CheckWord": "your_check_word", // 顺丰校验码
"ApiBaseUrl": "https://sf-api.sf-express.com",
"MonthlyAccount": "your_monthly_account" // 顺丰月结账号
},
"Sender": {
"Name": "发货人",
"Phone": "13800138000",
"Address": "发货地址",
"Province": "广东省",
"City": "深圳市",
"District": "南山区"
}
}
```
### 需要配置的信息
1. **数据库连接字符串**:根据实际数据库修改
2. **顺丰配置**:
|
2ef28d30
“wangming”
refactor: replace...
|
96
97
98
|
- `CustomerCode`:顺丰客户编码
- `CheckWord`:顺丰校验码
- `MonthlyAccount`:顺丰月结账号
|
f946e9dd
hexiaodong
hhh
|
99
100
101
102
103
104
|
3. **发货人信息**:根据实际情况修改
4. **抖音回调地址**:需要配置为实际部署地址
## 使用步骤
### 1. 数据库准备
|
2ef28d30
“wangming”
refactor: replace...
|
105
|
|
f946e9dd
hexiaodong
hhh
|
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
- 创建数据库(SQL Server 或 MySQL)
- 修改 `appsettings.json` 中的连接字符串
- 运行项目时会自动创建表结构
### 2. 后端启动
```bash
cd DouyinLogistics.API
dotnet restore
dotnet run
```
后端默认运行在:`https://localhost:5001` 或 `http://localhost:5000`
### 3. 前端启动
```bash
cd frontend
npm install
npm run dev
```
前端默认运行在:`http://localhost:5173`
### 4. 授权配置
#### 方式一:通过授权 URL(推荐)
|
2ef28d30
“wangming”
refactor: replace...
|
133
|
|
f946e9dd
hexiaodong
hhh
|
134
135
136
137
138
|
1. 访问 `/api/auth/authorize` 获取授权 URL
2. 在浏览器中打开授权 URL
3. 完成授权后,系统会自动获取 access_token
#### 方式二:手动设置 Access Token(测试用)
|
2ef28d30
“wangming”
refactor: replace...
|
139
|
|
f946e9dd
hexiaodong
hhh
|
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
1. 通过抖音开放平台获取 access_token
2. 调用 `/api/auth/set-token` 接口设置 token
```bash
POST /api/auth/set-token
Content-Type: application/json
{
"accessToken": "your_access_token"
}
```
### 5. 订单同步
系统会自动每 30 秒同步一次订单,也可以手动触发:
|
2ef28d30
“wangming”
refactor: replace...
|
155
|
|
f946e9dd
hexiaodong
hhh
|
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
- 前端:点击"同步订单"按钮
- API:`POST /api/orders/sync`
### 6. 运单创建
- **自动创建**:订单同步时,如果订单没有运单号,会自动创建
- **手动创建**:在订单列表中点击"创建运单"按钮
### 7. 打印预览
在订单列表中,对于已有运单号的订单,点击"打印预览"按钮,会在新窗口打开打印预览页面。
## API 接口说明
### 订单相关
- `GET /api/orders` - 获取订单列表(支持分页和状态筛选)
- `GET /api/orders/{id}` - 获取订单详情
- `POST /api/orders/sync` - 手动同步订单
- `POST /api/orders/{id}/waybill` - 为订单创建运单
- `GET /api/orders/{id}/waybill-preview` - 获取运单预览数据
### 授权相关
- `GET /api/auth/authorize` - 获取授权 URL
- `GET /api/auth/callback` - 授权回调(由抖音平台调用)
- `POST /api/auth/set-token` - 手动设置 Access Token
### 打印预览
- `GET /api/waybill/{orderId}/preview` - 获取打印预览 HTML
## 工作流程
1. **订单获取**:系统每 30 秒自动从抖音获取待发货订单
2. **订单保存**:将订单保存到本地数据库
3. **运单创建**:自动调用顺丰 API 创建运单
4. **运单号获取**:从顺丰 API 响应中获取运单号
5. **运单号回传**:将运单号上传到抖音平台
6. **打印预览**:用户可以在前端查看和打印运单
## 注意事项
1. **Access Token 管理**:
|
2ef28d30
“wangming”
refactor: replace...
|
200
201
202
|
- 当前实现中,Access Token 存储在内存中,服务重启后会丢失
- 生产环境建议将 Access Token 存储到数据库或 Redis 中
- Access Token 有过期时间,需要实现自动刷新机制
|
f946e9dd
hexiaodong
hhh
|
203
|
2. **顺丰 API 对接**:
|
2ef28d30
“wangming”
refactor: replace...
|
204
205
206
|
- 需要先向顺丰申请 API 接入权限
- 获取 CustomerCode、CheckWord 等配置信息
- 根据实际 API 文档调整接口调用方式
|
f946e9dd
hexiaodong
hhh
|
207
|
3. **抖音 API 对接**:
|
2ef28d30
“wangming”
refactor: replace...
|
208
209
210
|
- 确保 AppKey 和 AppSecret 配置正确
- 回调地址需要在抖音开放平台配置
- 注意 API 调用频率限制
|
f946e9dd
hexiaodong
hhh
|
211
|
4. **数据库**:
|
2ef28d30
“wangming”
refactor: replace...
|
212
213
|
- 首次运行会自动创建表结构
- 建议定期备份数据库
|
f946e9dd
hexiaodong
hhh
|
214
|
5. **实时同步**:
|
2ef28d30
“wangming”
refactor: replace...
|
215
216
|
- 当前设置为 30 秒同步一次,可根据实际需求调整
- 修改 `OrderSyncService.cs` 中的 `_syncInterval` 值
|
f946e9dd
hexiaodong
hhh
|
217
218
219
220
221
222
223
224
225
226
227
228
|
## 开发建议
1. **日志记录**:建议添加更详细的日志记录,方便排查问题
2. **异常处理**:完善异常处理机制,提高系统稳定性
3. **配置管理**:敏感信息建议使用环境变量或密钥管理服务
4. **单元测试**:添加单元测试,确保代码质量
5. **API 文档**:使用 Swagger 生成 API 文档(已集成)
## 问题排查
1. **订单同步失败**:
|
2ef28d30
“wangming”
refactor: replace...
|
229
230
231
|
- 检查 Access Token 是否有效
- 检查抖音 API 配置是否正确
- 查看后端日志
|
f946e9dd
hexiaodong
hhh
|
232
|
2. **运单创建失败**:
|
2ef28d30
“wangming”
refactor: replace...
|
233
234
235
|
- 检查顺丰 API 配置是否正确
- 检查发货人信息是否完整
- 查看顺丰 API 返回的错误信息
|
f946e9dd
hexiaodong
hhh
|
236
|
3. **前端无法访问后端**:
|
2ef28d30
“wangming”
refactor: replace...
|
237
238
239
|
- 检查后端是否正常运行
- 检查 CORS 配置
- 检查 API 地址配置
|
f946e9dd
hexiaodong
hhh
|
240
241
242
|
## 后续优化
|
2ef28d30
“wangming”
refactor: replace...
|
243
244
245
246
247
248
249
|
- Access Token 持久化存储
- Access Token 自动刷新
- 支持更多物流公司
- 批量打印功能
- 订单统计报表
- 异常订单处理
- 消息通知功能
|
f946e9dd
hexiaodong
hhh
|
250
251
252
|
## 许可证
|
2ef28d30
“wangming”
refactor: replace...
|
253
|
MIT License
|