Skip to content

类型:报告 · 建档: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) ​

字段类型说明
idLong自增主键
created_byLong创建人用户ID,插入时自动填充
updated_byLong更新人用户ID,插入和更新时自动填充
created_timeLocalDateTime创建时间,插入时自动填充
updated_timeLocalDateTime更新时间,插入和更新时自动填充
versionInteger乐观锁版本号
deletedBoolean逻辑删除标记
statusEnum数据状态:ENABLE(1)、DISABLE(0)、EXPIRED(-1)

业务字段(AsyncTask 实体) ​

字段类型说明
task_typeEnum任务类型:IMPORT(1, "导入")、EXPORT(2, "导出")
file_sourceString导出类型标识,如"门店导出"、"查证明细导出"等(30+ 种)
nameString任务显示名称(最长 30 字符)
file_urlStringCOS 文件存储路径(最长 255 字符)
file_nameString下载文件名
file_sizeLong文件大小(字节)
task_logString任务执行日志
task_statusEnum任务状态:INIT(0)、FAIL(1)、SUCCESS(2)、PROCESS(3)、PART_SUCCESS(4)、COMPLETE(-1)
remarkString执行备注或错误信息
user_infoString用户信息 JSON(导出时使用)
request_paramString请求参数 JSON(用于重新导出)
start_timeLocalDateTime任务开始处理时间
end_timeLocalDateTime文件生成完成时间
callback_statusEnum回调状态:INIT(0)、SUCCESS(1)、FAIL(-1)
callback_urlStringSFA 回调通知地址
task_sourceEnum任务来源:SYSTEM(0, "系统")、SFA(1, "SFA")
retry_countInteger回调重试次数

任务状态流转 ​

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,提供分页查询、详情查看、重新导出等功能。