当前位置: 首页 > news >正文

Teanary 多语言多货币外贸商城系统架构与数据流程图

项目地址:https://gitee.com/teanary/teanary_service

目录

  • 系统整体架构
  • 数据流程图
    • 订单处理流程
    • 多节点数据同步流程
    • 商品创建流程
    • 支付处理流程
    • 促销计算流程

系统整体架构

graph TBsubgraph Frontend["🌐 前端层 Frontend Layer"]A[用户浏览器]B[Livewire 组件]C[Blade 模板]D[Tailwind CSS]A --> BB --> CC --> Dendsubgraph Application["⚙️ 应用层 Application Layer"]E[Livewire 组件]F[Service 层]G[Model 层]H[Observer 层]E --> FF --> GG --> Hendsubgraph Services["🔧 业务服务层 Service Layer"]direction TBF1[ProductService<br/>商品服务]F2[PromotionService<br/>促销服务]F3[PaymentService<br/>支付服务]F4[ShippingService<br/>物流服务]F5[SyncService<br/>同步服务]F6[MediaService<br/>媒体服务]F7[CategoryService<br/>分类服务]F8[CartService<br/>购物车服务]F9[LocaleCurrencyService<br/>本地化服务]endsubgraph Data["💾 数据层 Data Layer"]I[(MySQL 数据库)]J[(Redis 缓存)]K[文件存储]endsubgraph Admin["👤 后台管理 Admin Panel"]L[Filament Manager<br/>管理员面板]M[Filament User<br/>用户面板]endsubgraph External["🌍 外部服务 External Services"]N[PayPal 支付网关]O[远程节点 API]P[Ollama AI<br/>翻译服务]endsubgraph Queue["📬 队列系统 Queue System"]Q[队列任务]R[SyncBatchDataJob<br/>批量同步任务]S[ResizeUploadedImage<br/>图片处理任务]T[BatchWriteTrafficStatsJob<br/>流量统计任务]Q --> RQ --> SQ --> TendB --> EF --> F1F --> F2F --> F3F --> F4F --> F5F --> F6F --> F7F --> F8F --> F9G --> IG --> JG --> KL --> FM --> FF3 --> NF5 --> OF9 --> PH --> Qstyle F fill:#e1f5ffstyle G fill:#fff4e1style I fill:#ffe1e1style J fill:#ffe1e1style Q fill:#e1ffe1style Frontend fill:#f0f9ffstyle Application fill:#fef3c7style Services fill:#dbeafestyle Data fill:#fee2e2style Admin fill:#e0e7ffstyle External fill:#f3e8ffstyle Queue fill:#d1fae5

数据流程图

订单处理流程

sequenceDiagramparticipant User as 用户participant Cart as 购物车participant Checkout as 结算页面participant OrderService as 订单服务participant PromotionService as 促销服务participant ShippingService as 物流服务participant PaymentService as 支付服务participant Order as 订单模型participant Observer as 订单观察者participant Notification as 通知系统User->>Cart: 添加商品到购物车Cart->>Cart: 计算小计User->>Checkout: 进入结算页面Checkout->>Checkout: 加载收货地址Checkout->>ShippingService: 获取可用物流方式ShippingService-->>Checkout: 返回物流选项User->>Checkout: 选择物流方式Checkout->>ShippingService: 计算物流费用ShippingService-->>Checkout: 返回费用Checkout->>PromotionService: 计算订单促销PromotionService->>PromotionService: 检查促销规则PromotionService-->>Checkout: 返回促销信息Checkout->>Checkout: 计算订单总价User->>Checkout: 提交订单Checkout->>OrderService: 创建订单OrderService->>Order: 保存订单数据Order->>Observer: 触发 created 事件Observer->>Notification: 发送订单创建通知OrderService-->>Checkout: 返回订单IDCheckout->>PaymentService: 创建支付PaymentService->>PaymentService: 选择支付网关PaymentService-->>Checkout: 返回支付URLCheckout->>User: 跳转到支付页面

多节点数据同步流程

sequenceDiagramparticipant Model as 数据模型participant Observer as 模型观察者participant Syncable as Syncable Traitparticipant SyncService as 同步服务participant SyncLog as 同步日志participant Queue as 队列系统participant SyncJob as 批量同步任务participant RemoteNode as 远程节点participant SyncController as 同步控制器Note over Model,RemoteNode: 数据变更触发同步Model->>Observer: 触发 created/updated/deletedObserver->>Syncable: 检查是否可同步Syncable->>SyncService: recordSync(模型, 操作, 节点)SyncService->>SyncService: 生成同步哈希SyncService->>SyncService: 准备同步数据SyncService->>SyncLog: 创建同步日志记录SyncLog->>SyncLog: 状态: pendingSyncService->>Queue: 分发批量同步任务Queue->>SyncJob: 执行批量同步SyncJob->>SyncJob: 批量获取待同步记录SyncJob->>SyncJob: 按模型类型分组SyncJob->>SyncJob: 打包批量数据SyncJob->>RemoteNode: POST /api/sync/receive-batchNote over RemoteNode: API Key 验证RemoteNode->>SyncController: 接收批量数据SyncController->>SyncController: 验证数据完整性SyncController->>SyncController: 处理批量同步loop 处理每条记录SyncController->>SyncController: 检查是否跳过SyncController->>SyncController: 执行创建/更新/删除SyncController->>SyncController: 更新同步状态endSyncController-->>SyncJob: 返回同步结果SyncJob->>SyncLog: 更新同步状态SyncLog->>SyncLog: 状态: completed/failedalt 同步失败SyncJob->>SyncJob: 自动重试机制end

商品创建流程

flowchart TDA[Chrome 插件/API] --> B[ProductController]B --> C{验证请求}C -->|失败| D[返回错误]C -->|成功| E[开始事务]E --> F[ProductService.createProduct]F --> G[创建 Product 模型]G --> H[ProductObserver]H --> I{需要同步?}I -->|是| J[SyncService.recordSync]I -->|否| K[继续处理]F --> L[MediaService.handleMainImage]L --> M[上传主图]M --> N[创建 Media 记录]N --> O[MediaObserver]O --> P[SyncService.recordSync]F --> Q[CategoryService.findOrCreateCategory]Q --> R{分类存在?}R -->|否| S[创建分类]S --> T[CategoryObserver]T --> U[SyncService.recordSync]R -->|是| V[使用现有分类]F --> W[创建 ProductTranslation]W --> X[ProductTranslationObserver]X --> Y[SyncService.recordSync]F --> Z[创建 ProductVariant]Z --> AA[创建规格关联]F --> AB[提交事务]AB --> AC[返回成功]J --> AD[队列任务]P --> ADU --> ADY --> ADAD --> AE[批量同步到远程节点]style F fill:#e1f5ffstyle J fill:#ffe1e1style AD fill:#e1ffe1

支付处理流程

flowchart TDStart([用户提交订单]) --> CreateOrder[创建订单]CreateOrder --> OrderPending[订单状态: Pending]OrderPending --> GoToPayment[跳转到支付页面]GoToPayment --> CreatePayment[PaymentService.createPayment]CreatePayment --> SelectGateway{选择支付网关}SelectGateway -->|PayPal| PayPalGateway[PayPal 网关]SelectGateway -->|其他| OtherGateway[其他支付网关]PayPalGateway --> GenerateURL[生成支付 URL]GenerateURL --> RedirectPayPal[跳转到 PayPal]RedirectPayPal --> UserPay[用户在 PayPal 完成支付]UserPay --> PaymentResult{支付结果}PaymentResult -->|成功| WebhookSuccess[PayPal Webhook 回调]PaymentResult -->|取消| PaymentCancel[用户取消支付]PaymentResult -->|失败| PaymentFail[支付失败]WebhookSuccess --> VerifyPayment[验证支付签名]VerifyPayment --> UpdateOrder[更新订单状态: Paid]UpdateOrder --> SendNotification[发送通知<br/>用户和管理员]SendNotification --> EndSuccess([支付成功])PaymentCancel --> OrderCancelled[订单状态: Cancelled]OrderCancelled --> EndCancel([订单取消])PaymentFail --> OrderFailed[订单状态: Failed]OrderFailed --> EndFail([支付失败])style CreateOrder fill:#e1f5ffstyle UpdateOrder fill:#e1ffe1style OrderCancelled fill:#ffe1e1style OrderFailed fill:#ffe1e1style EndSuccess fill:#e1ffe1

促销计算流程

flowchart TDA[订单/商品] --> B[PromotionService]B --> C[获取可用促销]C --> D[从缓存获取所有促销]D --> E{缓存存在?}E -->|否| F[查询数据库]F --> G[缓存结果]G --> DE -->|是| H[过滤可用促销]H --> I[检查促销时间]I --> J[检查用户组]J --> K[检查商品关联]K --> L[返回可用促销列表]L --> M[遍历促销规则]M --> N[检查条件类型]N --> O{订单金额条件?}O -->|是| P[比较订单总金额]O -->|否| Q[比较订单数量]P --> R{满足条件?}Q --> RR -->|否| S[跳过此规则]R -->|是| T[计算折扣金额]T --> U{折扣类型?}U -->|固定金额| V[直接使用折扣值]U -->|百分比| W[计算百分比折扣]V --> X[应用折扣]W --> XX --> Y[比较最优折扣]Y --> Z[返回最终价格和促销信息]S --> AA{还有规则?}AA -->|是| MAA -->|否| Zstyle B fill:#e1f5ffstyle D fill:#fff4e1style T fill:#ffe1e1

核心组件说明

1. Service 层架构

Services/
├── ProductService          # 商品业务逻辑
├── PromotionService        # 促销计算逻辑
├── PaymentService          # 支付处理逻辑
├── ShippingService         # 物流计算逻辑
├── SyncService            # 数据同步逻辑
├── MediaService           # 媒体文件处理
├── CategoryService        # 分类管理
├── CartService            # 购物车管理
├── LocaleCurrencyService  # 本地化服务
└── Payments/├── PaymentManager     # 支付网关管理器└── PaypalGateway      # PayPal 支付实现

2. Model 层架构

Models/
├── 核心业务模型
│   ├── Product            # 商品
│   ├── ProductVariant     # 商品规格
│   ├── Order              # 订单
│   ├── Cart               # 购物车
│   └── Promotion          # 促销
├── 关联模型
│   ├── ProductCategory    # 商品分类关联
│   ├── ProductAttributeValue  # 商品属性值
│   └── OrderItem          # 订单项
├── 翻译模型
│   ├── ProductTranslation
│   ├── CategoryTranslation
│   └── PromotionTranslation
└── 系统模型├── SyncLog            # 同步日志├── SyncStatus         # 同步状态└── TrafficStatistic   # 流量统计

3. Observer 层架构

Observers/
├── ProductObserver           # 商品变更监听
├── OrderObserver             # 订单变更监听
├── PromotionObserver         # 促销变更监听
├── CategoryObserver          # 分类变更监听
├── MediaObserver             # 媒体变更监听
└── [其他模型观察者]

4. 数据同步机制

  • 触发机制: 通过 Observer 监听模型事件
  • 同步方式: 批量异步同步,提升效率
  • 冲突解决: 以最新数据为准(基于时间戳)
  • 文件同步: 自动同步媒体文件和转换文件
  • 重试机制: 失败自动重试,确保数据不丢失

技术栈说明

后端技术

  • Laravel 12.x: Web 框架
  • PHP 8.1+: 服务器语言
  • MySQL 8.0+: 主数据库
  • Redis: 缓存和会话存储
  • Laravel Octane: 高性能应用服务器

前端技术

  • Livewire 3.x: 全栈框架
  • Tailwind CSS 3.x: CSS 框架
  • Alpine.js: 轻量级 JS 框架
  • Vite: 前端构建工具

管理后台

  • Filament 3.x: Laravel 管理面板

数据流向总结

  1. 用户请求 → Livewire 组件 → Service 层 → Model 层 → 数据库
  2. 数据变更 → Observer → SyncService → 队列 → 远程节点
  3. 支付流程 → PaymentService → 支付网关 → Webhook → 订单更新
  4. 促销计算 → PromotionService → 缓存查询 → 规则匹配 → 折扣计算

文档版本: 1.0
最后更新: 2024

http://www.jsqmd.com/news/264019/

相关文章:

  • 小程序毕设项目:基于springboot+微信小程序的公考宝典小程序(源码+文档,讲解、调试运行,定制等)
  • Java毕设项目:基于springboot的4s店车辆管理系统(源码+文档,讲解、调试运行,定制等)
  • 基于ssm的鲜花售卖系统-计算机毕业设计源码+LW文档
  • Stephen Krashen(史蒂芬·克拉申)
  • 2026年目前诚信的双相钢法兰直销厂家哪家权威,高温合金法兰/不锈钢法兰/法兰/非标法兰,双相钢法兰直销厂家排行 - 品牌推荐师
  • 4种空中飞行物数据集3561张VOC+YOLO(热气球飞艇飞机直升机)
  • 共同探索的价值
  • 空中飞行物检测数据集2895张yolo数据集
  • 计算机小程序毕设实战-基于springboot+微信小程序的公考宝典小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 四叶草PDF阅读器(无广告免费PDF阅读器)
  • FreeRTOS学习笔记(9)
  • 【毕业设计】基于springboot的4s店车辆管理系统(源码+文档+远程调试,全bao定制等)
  • 小程序毕设选题推荐:基于SpringBoot+微信小程序高考考试刷题系统基于springboot+微信小程序的公考宝典小程序【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 为什么手机越用越卡?原来是这 3 个地方在拖后腿
  • 一文搞懂AI核心:预训练、微调与LLaMA-Factory Online高效实践
  • 气球数据集1155张VOC+YOLO格式
  • 互联网大厂Java求职面试:从Spring框架到微服务架构的技术点解析
  • 学长亲荐!10款AI论文网站测评:本科生毕业论文必备工具
  • 强烈安利10个AI论文平台,助你轻松搞定本科生论文!
  • 气球数据集1136张VOC+YOLO格式
  • 【毕业设计】基于springboot+微信小程序的公考宝典小程序(源码+文档+远程调试,全bao定制等)
  • 微信小程序毕设项目推荐-基于spirngboot和微信小程序实现公考上岸通系统基于springboot+微信小程序的公考宝典小程序【附源码+文档,调试定制服务】
  • 轻松入门SpringAI-SpringAI调用Ollama
  • 气球数据集2291张VOC+YOLO格式
  • 从Hadoop到Spark:大数据隐私保护技术演进史
  • 2026二手房翻新全攻略:靠谱公司大揭秘 - 品牌测评鉴赏家
  • Java毕设项目推荐-基于springboot的4s店车辆管理系统基于vue的4s店车辆库存销售运营管理系统【附源码+文档,调试定制服务】
  • 轻松入门SpringAI-SpringAI Alibaba实战
  • 老房翻新大揭秘!2026教你揪出最专业的装修公司 - 品牌测评鉴赏家
  • 轻松入门SpringAI-Spring AI的其他模型