类型:报告 · 建档:2026-07-03 | 时效性文档,引用前请核对正文的数据截止日
下载中心技术梳理
概述
下载中心(sip-mac-download-center)是 SIP-MAC 平台的统一异步文件导出服务。所有业务模块的数据导出请求(门店导出、产品导出、查证明细导出等 30+ 种类型)均通过该服务异步处理,生成文件后上传至 COS,用户可在"下载中心"页面查看和管理下载记录。
该服务通过 Dubbo RPC(RpcAsyncTaskService)对外提供接口,被 report、promotion、data、openapi、dcenter 等 7 个上游服务调用。
存储信息
- 数据库类型:MySQL
- 数据库名称:通过 Nacos 外部配置注入(
optional:nacos:download.yml),本地代码中未硬编码 - 核心数据表:
async_task - ORM 框架:MyBatis-Plus(
BaseMapper<AsyncTask>) - 无 MyBatis XML Mapper 文件,所有 SQL 均为注解方式或 MyBatis-Plus 自动生成
async_task 表结构
基础字段(继承自 BaseEntity)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long | 自增主键 |
| created_by | Long | 创建人用户ID,插入时自动填充 |
| updated_by | Long | 更新人用户ID,插入和更新时自动填充 |
| created_time | LocalDateTime | 创建时间,插入时自动填充 |
| updated_time | LocalDateTime | 更新时间,插入和更新时自动填充 |
| version | Integer | 乐观锁版本号 |
| deleted | Boolean | 逻辑删除标记 |
| status | Enum | 数据状态:ENABLE(1)、DISABLE(0)、EXPIRED(-1) |
业务字段(AsyncTask 实体)
| 字段 | 类型 | 说明 |
|---|---|---|
| task_type | Enum | 任务类型:IMPORT(1, "导入")、EXPORT(2, "导出") |
| file_source | String | 导出类型标识,如"门店导出"、"查证明细导出"等(30+ 种) |
| name | String | 任务显示名称(最长 30 字符) |
| file_url | String | COS 文件存储路径(最长 255 字符) |
| file_name | String | 下载文件名 |
| file_size | Long | 文件大小(字节) |
| task_log | String | 任务执行日志 |
| task_status | Enum | 任务状态:INIT(0)、FAIL(1)、SUCCESS(2)、PROCESS(3)、PART_SUCCESS(4)、COMPLETE(-1) |
| remark | String | 执行备注或错误信息 |
| user_info | String | 用户信息 JSON(导出时使用) |
| request_param | String | 请求参数 JSON(用于重新导出) |
| start_time | LocalDateTime | 任务开始处理时间 |
| end_time | LocalDateTime | 文件生成完成时间 |
| callback_status | Enum | 回调状态:INIT(0)、SUCCESS(1)、FAIL(-1) |
| callback_url | String | SFA 回调通知地址 |
| task_source | Enum | 任务来源:SYSTEM(0, "系统")、SFA(1, "SFA") |
| retry_count | Integer | 回调重试次数 |
任务状态流转
INIT(0) → PROCESS(3) → SUCCESS(2) → COMPLETE(-1)
→ FAIL(1)
→ PART_SUCCESS(4)- INIT(0):任务创建,等待处理
- PROCESS(3):正在处理中
- SUCCESS(2):文件生成成功
- FAIL(1):处理失败
- PART_SUCCESS(4):部分成功
- COMPLETE(-1):已完成(终态)
启动时自动清理:ApplicationStartup 会在服务启动时将超过指定小时数仍为 PROCESS 状态的任务重置为 FAIL,防止僵尸任务。
关联服务调用
下载中心通过 RpcAsyncTaskService Dubbo RPC 接口被以下服务调用:
| 调用方 | 调用场景 |
|---|---|
| sip-mac-report | 报表数据导出 |
| sip-mac-promotion | 营销活动数据导出 |
| sip-mac-data | 主数据导出 |
| sip-mac-openapi | 开放接口数据导出 |
| sip-mac_dcenter | 运营中心数据导出 |
| sip-mac-download-center | 自身内部调用 |
遗留说明
sip-mac-data 模块中存在一个旧版的 AsyncTask 实体类(同表,但缺少 callbackstatus、callbackurl、tasksource、retrycount 四个新字段)。sip-mac-davinci 项目中有一张独立的 download_record 表,属于 Davinci 可视化平台自身的下载记录,与下载中心无关。
REST API
下载中心对外暴露 REST 接口,路径前缀为 api/async-tasks/v1,提供分页查询、详情查看、重新导出等功能。