- 新增API端点参考文档,涵盖权限、卡密、订单、商户、监控、限制等模块 - 详细说明Apple卡密充值处理流程,包括提交、查询、回调和轮询接口 - 描述充值订单状态机及生命周期,支持超时重试和状态迁移 - 介绍签名验证、幂等控制及重复卡密防刷单策略 - 增加商户配置管理、历史记录查询和错误处理机制说明 - 提供API使用示例代码及客户端实现指导 - 删除过时的.drone.yml.bak文件,清理无用配置 - 添加.dockerignore忽略指定目录和文件
12 KiB
订单处理逻辑
**本文档引用的文件** - [order.go](file://api/order/v1/order.go) - [card_info_apple_v1_recharge_submit.go](file://internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go) - [card_redeem_jd_v1_place_order.go](file://internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go) - [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) - [card_info_t_mall_game_v1_t_mall_game_order_submit.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go) - [order_info.go](file://internal/model/do/order_info.go) - [v_1_order_info.go](file://internal/dao/v_1_order_info.go) - [card_apple_order.go](file://internal/service/card_apple_order.go) - [card_redeem_order.go](file://internal/service/card_redeem_order.go) - [sys_user_payment_record.go](file://internal/consts/sys_user_payment_record.go) - [order_v1_order_form_create.go](file://internal/controller/order/order_v1_order_form_create.go) - [order_v1_order_log_list.go](file://internal/controller/order/order_v1_order_log_list.go) - [order_v1_order_summary_get_list.go](file://internal/controller/order/order_v1_order_summary_get_list.go) - [card_info_jd_v1_order_summary_list.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go) - [card_info_walmart_v1_order_summary_list.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_summary_list.go) - [card_apple_order.go](file://internal/logic/card_apple_order/card_apple_order.go) - [card_redeem_order.go](file://internal/logic/card_redeem_order/card_redeem_order.go) - [utility/utils/tools.go](file://utility/utils/tools.go) - [utility/cache/cache.go](file://utility/cache/cache.go)目录
简介
本文档详细描述了kami_backend系统中订单处理业务逻辑的实现。重点涵盖卡密充值订单和兑换订单的全生命周期管理,包括订单创建、查询、回调处理和状态变更流程。文档还详细说明了订单与卡密账户、支付渠道的关联机制,以及订单历史记录、统计和汇总的实现方式。同时阐述了订单处理中的幂等性保证、事务管理策略和错误重试机制,并提供了完整的订单状态机描述。
项目结构
kami_backend的订单处理相关代码分布在多个模块中,主要集中在api/order、internal/controller/order和各卡密类型模块中。系统采用分层架构,将API接口、控制器、业务逻辑和服务层分离,确保代码的可维护性和可扩展性。
graph TD
subgraph "API层"
OrderAPI[api/order/v1/order.go]
CardAPI[api/card_info_*/v1/*.go]
end
subgraph "控制器层"
OrderController[internal/controller/order]
CardController[internal/controller/card_info_*]
end
subgraph "服务层"
OrderService[internal/service/order]
CardService[internal/service/card_*]
end
subgraph "数据访问层"
DAO[internal/dao/v_1_order_info.go]
Model[internal/model/do/order_info.go]
end
OrderAPI --> OrderController
CardAPI --> CardController
OrderController --> OrderService
CardController --> CardService
OrderService --> DAO
CardService --> DAO
DAO --> Model
图示来源
本节来源
核心组件
订单处理系统的核心组件包括订单创建服务、状态管理器、回调处理器、统计服务和日志记录器。这些组件协同工作,确保订单从创建到完成的整个流程的可靠性和一致性。
本节来源
架构概述
订单处理系统采用事件驱动的微服务架构,各组件通过明确定义的接口进行通信。系统设计注重可扩展性和容错性,支持多种卡密类型和支付渠道。
graph LR
Client[客户端] --> API[API网关]
API --> OrderController[订单控制器]
API --> CardController[卡密控制器]
OrderController --> OrderService[订单服务]
CardController --> CardService[卡密服务]
OrderService --> Database[(数据库)]
CardService --> ExternalAPI[外部API]
OrderService --> Cache[(缓存)]
CardService --> Cache
Database --> Analytics[分析服务]
Cache --> Analytics
图示来源
详细组件分析
订单创建与处理
订单创建流程涉及多个验证步骤和状态转换,确保数据的完整性和业务规则的执行。
订单状态机
stateDiagram-v2
[*] --> 待处理
待处理 --> 处理中 : 开始处理
处理中 --> 成功 : 处理完成
处理中 --> 失败 : 处理失败
处理中 --> 超时 : 超时未完成
成功 --> [*]
失败 --> [*]
超时 --> [*]
state "待处理" as pending {
[*] --> 接收
接收 --> 验证
验证 --> 排队
}
state "处理中" as processing {
[*] --> 分配资源
分配资源 --> 执行
执行 --> 等待回调
}
图示来源
订单创建流程
sequenceDiagram
participant Client as 客户端
participant API as API接口
participant Controller as 控制器
participant Service as 服务层
participant DAO as 数据访问层
Client->>API : 提交订单请求
API->>Controller : 转发请求
Controller->>Controller : 参数验证
Controller->>Service : 创建订单
Service->>Service : 幂等性检查
Service->>DAO : 保存订单
DAO-->>Service : 返回结果
Service-->>Controller : 返回订单信息
Controller-->>API : 返回响应
API-->>Client : 返回订单创建结果
图示来源
- order_v1_order_form_create.go
- card_info_apple_v1_recharge_submit.go
- card_redeem_jd_v1_place_order.go
本节来源
- order_v1_order_form_create.go
- card_info_apple_v1_recharge_submit.go
- card_redeem_jd_v1_place_order.go
回调处理机制
回调处理是订单系统的关键环节,负责接收外部系统的状态更新并相应地更新订单状态。
sequenceDiagram
participant External as 外部系统
participant API as 回调API
participant Controller as 控制器
participant Service as 服务层
participant DAO as 数据访问层
External->>API : 发送状态更新
API->>Controller : 转发回调
Controller->>Controller : 签名验证
Controller->>Service : 处理回调
Service->>Service : 事务处理
Service->>DAO : 更新订单状态
DAO-->>Service : 返回结果
Service-->>Controller : 返回处理结果
Controller-->>API : 返回响应
API-->>External : 确认接收
图示来源
本节来源
订单查询与统计
系统提供多种查询接口,支持订单历史记录查询、实时状态查询和统计汇总功能。
flowchart TD
Start([开始]) --> Validate["验证查询参数"]
Validate --> CheckCache["检查缓存"]
CheckCache --> CacheHit{"缓存命中?"}
CacheHit --> |是| ReturnCache["返回缓存结果"]
CacheHit --> |否| QueryDB["查询数据库"]
QueryDB --> Process["处理查询结果"]
Process --> UpdateCache["更新缓存"]
UpdateCache --> ReturnResult["返回结果"]
ReturnCache --> End([结束])
ReturnResult --> End
图示来源
- order_v1_order_log_list.go
- order_v1_order_summary_get_list.go
- card_info_jd_v1_order_summary_list.go
- card_info_walmart_v1_order_summary_list.go
本节来源
依赖分析
订单处理系统依赖于多个内部和外部组件,这些依赖关系确保了系统的完整功能。
graph TD
OrderSystem[订单系统] --> UserService[用户服务]
OrderSystem --> PaymentService[支付服务]
OrderSystem --> CardService[卡密服务]
OrderSystem --> CacheService[缓存服务]
OrderSystem --> Database[数据库]
OrderSystem --> ExternalAPI[外部API]
UserService --> AuthService[认证服务]
PaymentService --> ThirdParty[第三方支付]
CardService --> ExternalPlatform[外部平台]
CacheService --> Redis[(Redis)]
Database --> MySQL[(MySQL)]
图示来源
本节来源
性能考虑
订单处理系统在设计时充分考虑了性能因素,采用了多种优化策略来确保高并发场景下的稳定运行。
- 缓存策略:使用Redis缓存频繁访问的订单数据,减少数据库压力
- 批量处理:对大量订单操作采用批量处理方式,提高处理效率
- 异步处理:非关键路径操作采用异步处理,提升响应速度
- 连接池:数据库连接使用连接池管理,避免频繁创建销毁连接
- 索引优化:在关键查询字段上建立适当索引,加快查询速度
故障排除指南
当订单处理出现问题时,可以按照以下步骤进行排查:
- 检查日志:查看系统日志和订单日志,定位错误发生的具体位置
- 验证状态:确认订单当前状态是否符合预期,检查状态转换逻辑
- 检查依赖:确认相关服务(如支付、卡密账户)是否正常运行
- 查看监控:检查系统监控指标,如响应时间、错误率等
- 重现问题:尝试在测试环境重现问题,便于调试
本节来源
结论
kami_backend的订单处理系统设计合理,功能完整,能够有效支持卡密充值和兑换业务。系统通过清晰的分层架构、完善的错误处理机制和性能优化策略,确保了高可用性和可维护性。未来可以进一步优化异步处理能力和监控告警系统,提升整体系统稳定性。