- 新增订单变更类型 OrderChangeTypeJDOrderFailed 用于记录下单失败事件 - 调整订单创建逻辑,支持失败订单重试机制 - 新增 RecordOrderHistoryReq 结构体统一记录订单变更历史参数 - 修改数据库表结构,优化字段类型和索引 - 更新订单创建逻辑,分离本地订单与京东订单创建流程- 增加失败订单重新创建京东订单的处理逻辑 - 调整订单状态检查逻辑,支持更多状态处理 -优化订单历史记录方式,增加备注信息支持 - 更新数据库字符集为 utf8mb4_unicode_ci 提升兼容性
8.8 KiB
8.8 KiB
京东订单导出功能
**本文档引用的文件** - [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go) - [jd_cookie.go](file://internal/service/jd_cookie.go) - [order_jd.go](file://internal/logic/jd_cookie/order_jd.go) - [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go) - [v_1_jd_cookie_account.go](file://internal/model/entity/v_1_jd_cookie_account.go) - [jd_cookie.go](file://api/jd_cookie/jd_cookie.go) - [consts.go](file://internal/consts/jd_cookie.go)目录
简介
京东订单导出功能是系统中用于将京东订单数据导出为Excel文件的重要功能。该功能允许用户根据订单状态、时间范围和订单ID等条件筛选订单,并将符合条件的订单数据导出为Excel文件,便于后续的数据分析和处理。
项目结构
京东订单导出功能主要分布在以下几个目录中:
internal/controller/jd_cookie/:包含导出功能的控制器实现internal/service/jd_cookie.go:定义导出功能的服务接口internal/logic/jd_cookie/order_jd.go:包含导出功能的核心业务逻辑internal/model/entity/:包含订单和账户相关的数据模型
graph TD
Controller[控制器层] --> Service[服务层]
Service --> Logic[业务逻辑层]
Logic --> DAO[数据访问层]
DAO --> Database[(数据库)]
图表来源
核心组件
京东订单导出功能的核心组件包括:
- ExportJdOrderReq:导出请求参数,包含状态、开始时间、结束时间和订单ID等筛选条件
- ExportJdOrderRes:导出响应结果
- JdCookieService:提供导出功能的服务接口
- sJdCookie:实现导出功能的业务逻辑
章节来源
架构概述
京东订单导出功能采用典型的分层架构,包括控制器层、服务层、业务逻辑层和数据访问层。用户通过API请求触发导出功能,控制器层接收请求并调用服务层,服务层再调用业务逻辑层执行具体的导出操作,最后通过数据访问层从数据库获取订单数据。
sequenceDiagram
participant 用户
participant 控制器
participant 服务
participant 业务逻辑
participant 数据访问
participant 数据库
用户->>控制器 : 发送导出请求
控制器->>服务 : 调用ExportJdOrder
服务->>业务逻辑 : 调用ExportJdOrder
业务逻辑->>数据访问 : 查询订单数据
数据访问->>数据库 : 执行SQL查询
数据库-->>数据访问 : 返回订单数据
数据访问-->>业务逻辑 : 返回查询结果
业务逻辑->>业务逻辑 : 生成Excel文件
业务逻辑-->>服务 : 返回文件名和内容
服务-->>控制器 : 返回导出结果
控制器->>用户 : 返回文件下载响应
图表来源
详细组件分析
导出功能分析
京东订单导出功能的主要流程如下:
- 接收用户请求,解析筛选条件
- 根据条件查询数据库中的订单数据
- 查询关联的Cookie账户信息
- 将数据填充到Excel模板中
- 生成Excel文件并返回给用户
业务逻辑组件
classDiagram
class ExportJdOrderReq {
+string Status
+string StartTime
+string EndTime
+string OrderId
}
class ExportJdOrderRes {
+string FileName
+[]byte Content
}
class JdCookieService {
+ExportJdOrder(ctx, status, startTime, endTime, orderId) (fileName, content, err)
}
class sJdCookie {
+ExportJdOrder(ctx, status, startTime, endTime, orderId) (fileName, content, err)
+createEmptyExcel(ctx) (fileName, content, err)
+getJdOrderStatusText(status) string
}
ExportJdOrderReq --> JdCookieService : "作为参数"
JdCookieService --> sJdCookie : "实现"
sJdCookie --> ExportJdOrderRes : "返回"
图表来源
数据模型组件
erDiagram
V1JdCookieJdOrder {
string jdOrderId PK
string orderId
string cardNo
string cardPassword
string cookieId FK
int status
datetime createdAt
}
V1JdCookieAccount {
string cookieId PK
string accountName
int status
datetime createdAt
}
V1JdCookieJdOrder ||--o{ V1JdCookieAccount : "使用"
图表来源
筛选条件分析
导出功能支持多种筛选条件,用户可以根据需要选择不同的条件组合来导出订单数据。
flowchart TD
Start([开始]) --> StatusCheck{状态筛选?}
StatusCheck --> |是| AddStatusCondition["添加状态条件"]
StatusCheck --> |否| TimeCheck
TimeCheck{时间范围筛选?}
TimeCheck --> |是| AddTimeCondition["添加时间条件"]
TimeCheck --> |否| OrderIdCheck
OrderIdCheck{订单ID筛选?}
OrderIdCheck --> |是| AddOrderIdCondition["添加订单ID条件"]
OrderIdCheck --> |否| QueryData
AddStatusCondition --> TimeCheck
AddTimeCondition --> OrderIdCheck
AddOrderIdCondition --> QueryData
QueryData[查询订单数据] --> GetCookieInfo[查询Cookie信息]
GetCookieInfo --> CreateExcel[创建Excel文件]
CreateExcel --> ReturnResult[返回结果]
图表来源
章节来源
依赖分析
京东订单导出功能依赖于多个组件和外部库:
graph TD
ExportFeature[导出功能] --> GoFrame[goframe框架]
ExportFeature --> Excelize[excelize库]
ExportFeature --> Database[数据库]
ExportFeature --> Cache[缓存系统]
ExportFeature --> Logger[日志系统]
GoFrame --> HTTP[HTTP服务]
GoFrame --> ORM[ORM框架]
Excelize --> Excel[Excel文件处理]
Database --> MySQL[MySQL数据库]
Cache --> Redis[Redis缓存]
Logger --> File[文件日志]
Logger --> Console[控制台输出]
图表来源
章节来源
性能考虑
京东订单导出功能在设计时考虑了以下性能因素:
- 使用分页查询避免一次性加载过多数据
- 批量查询关联的Cookie账户信息,减少数据库查询次数
- 使用缓存机制避免重复的卡密提取操作
- 异步处理回调,避免阻塞主流程
故障排除指南
在使用京东订单导出功能时,可能会遇到以下常见问题:
章节来源
问题1:导出文件为空
可能原因:
- 筛选条件过于严格,没有匹配的订单
- 数据库连接问题导致无法查询数据
- 权限不足,无法访问订单数据
解决方案:
- 检查筛选条件是否正确
- 检查数据库连接状态
- 确认用户权限是否足够
问题2:导出速度慢
可能原因:
- 订单数据量过大
- 数据库查询性能问题
- 网络传输速度慢
解决方案:
- 分批导出数据
- 优化数据库查询语句
- 检查网络状况
问题3:Excel文件损坏
可能原因:
- 文件生成过程中出现异常
- 内存不足导致文件写入不完整
- Excelize库版本问题
解决方案:
- 检查日志中的错误信息
- 增加系统内存
- 更新Excelize库到最新版本
结论
京东订单导出功能为用户提供了一个便捷的数据导出工具,能够根据多种条件筛选订单并导出为Excel文件。该功能采用分层架构设计,具有良好的可维护性和扩展性。通过合理的性能优化和错误处理机制,确保了功能的稳定性和可靠性。