Name Last Update
..
DouyinLogistics.API Loading commit data...
deploy_single_site_20260321_210341 Loading commit data...
douyin-deploy Loading commit data...
frontend Loading commit data...
sdk-dotnet Loading commit data...
README.md Loading commit data...
build-for-baota.sh Loading commit data...
create_database.sql Loading commit data...
create_table.sql Loading commit data...
frontend-dist-20251229-071440.tar.gz Loading commit data...
创建部署包.sh Loading commit data...
发货地址问题排查指南.md Loading commit data...
同站点部署说明.md Loading commit data...
日志查看指南.md Loading commit data...

README.md

抖音物流对接 - 易打单系统

项目说明

实现抖音电商平台的易打单功能,对接顺丰物流,实现订单自动获取、运单自动创建、打印预览等功能。

技术栈

  • 后端:ASP.NET Core 8.0 + SQLSugar
  • 前端:Vue 3 + Element Plus + TypeScript
  • 数据库:SQL Server / MySQL(可配置)

功能模块

已实现功能

  1. 抖音开放平台对接

    • 订单获取(待发货订单)
    • 运单号上传回传
    • OAuth2.0 授权流程
  2. 顺丰物流对接

    • 运单创建
    • 运单号自动获取
  3. 订单管理

    • 订单列表查询(支持分页、状态筛选)
    • 订单详情查看
    • 订单实时同步(30秒间隔)
  4. 运单管理

    • 自动创建运单(订单同步时自动创建)
    • 手动创建运单
    • 运单号自动回传到抖音
  5. 打印预览

    • 运单打印预览页面
    • 支持浏览器打印

项目结构

├── 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)

{
  "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. 顺丰配置
    • CustomerCode:顺丰客户编码
    • CheckWord:顺丰校验码
    • MonthlyAccount:顺丰月结账号
  3. 发货人信息:根据实际情况修改
  4. 抖音回调地址:需要配置为实际部署地址

使用步骤

1. 数据库准备

  • 创建数据库(SQL Server 或 MySQL)
  • 修改 appsettings.json 中的连接字符串
  • 运行项目时会自动创建表结构

2. 后端启动

cd DouyinLogistics.API
dotnet restore
dotnet run

后端默认运行在:https://localhost:5001http://localhost:5000

3. 前端启动

cd frontend
npm install
npm run dev

前端默认运行在:http://localhost:5173

4. 授权配置

方式一:通过授权 URL(推荐)

  1. 访问 /api/auth/authorize 获取授权 URL
  2. 在浏览器中打开授权 URL
  3. 完成授权后,系统会自动获取 access_token

方式二:手动设置 Access Token(测试用)

  1. 通过抖音开放平台获取 access_token
  2. 调用 /api/auth/set-token 接口设置 token
POST /api/auth/set-token
Content-Type: application/json

{
  "accessToken": "your_access_token"
}

5. 订单同步

系统会自动每 30 秒同步一次订单,也可以手动触发:

  • 前端:点击"同步订单"按钮
  • 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 管理

    • 当前实现中,Access Token 存储在内存中,服务重启后会丢失
    • 生产环境建议将 Access Token 存储到数据库或 Redis 中
    • Access Token 有过期时间,需要实现自动刷新机制
  2. 顺丰 API 对接

    • 需要先向顺丰申请 API 接入权限
    • 获取 CustomerCode、CheckWord 等配置信息
    • 根据实际 API 文档调整接口调用方式
  3. 抖音 API 对接

    • 确保 AppKey 和 AppSecret 配置正确
    • 回调地址需要在抖音开放平台配置
    • 注意 API 调用频率限制
  4. 数据库

    • 首次运行会自动创建表结构
    • 建议定期备份数据库
  5. 实时同步

    • 当前设置为 30 秒同步一次,可根据实际需求调整
    • 修改 OrderSyncService.cs 中的 _syncInterval

开发建议

  1. 日志记录:建议添加更详细的日志记录,方便排查问题
  2. 异常处理:完善异常处理机制,提高系统稳定性
  3. 配置管理:敏感信息建议使用环境变量或密钥管理服务
  4. 单元测试:添加单元测试,确保代码质量
  5. API 文档:使用 Swagger 生成 API 文档(已集成)

问题排查

  1. 订单同步失败

    • 检查 Access Token 是否有效
    • 检查抖音 API 配置是否正确
    • 查看后端日志
  2. 运单创建失败

    • 检查顺丰 API 配置是否正确
    • 检查发货人信息是否完整
    • 查看顺丰 API 返回的错误信息
  3. 前端无法访问后端

    • 检查后端是否正常运行
    • 检查 CORS 配置
    • 检查 API 地址配置

后续优化

  • [ ] Access Token 持久化存储
  • [ ] Access Token 自动刷新
  • [ ] 支持更多物流公司
  • [ ] 批量打印功能
  • [ ] 订单统计报表
  • [ ] 异常订单处理
  • [ ] 消息通知功能

许可证

MIT License