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

news/2026/1/18 21:36:56/文章来源:https://www.cnblogs.com/teanary/p/19499176

项目地址: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.mzph.cn/news/1179484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序毕设项目:基于springboot+微信小程序的公考宝典小程序(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java毕设项目:基于springboot的4s店车辆管理系统(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

基于ssm的鲜花售卖系统-计算机毕业设计源码+LW文档

摘要&#xff1a;随着互联网技术的发展和人们消费习惯的变化&#xff0c;鲜花售卖系统应运而生。本文详细阐述了基于SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;框架的鲜花售卖系统的研究背景意义、需求分析以及功能设计。该系统旨在满足消费者便捷购买鲜花的需求&…

Stephen Krashen(史蒂芬·克拉申)

这是B站上一个关于美国语言学家 Stephen Krashen&#xff08;史蒂芬克拉申&#xff09; 的视频&#xff0c;以下是核心信息解读&#xff1a; 1. 人物背景 史蒂芬克拉申是全球知名的语言学家、教育研究者&#xff0c;他提出的二语习得理论彻底改变了人们对语言学习的认知。他的…

4种空中飞行物数据集3561张VOC+YOLO(热气球飞艇飞机直升机)

4种空中飞行物数据集3561张VOCYOLO&#xff08;热气球飞艇飞机直升机&#xff09;数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;3561Annotations文件夹中xml文件总计…

2026年目前诚信的双相钢法兰直销厂家哪家权威,高温合金法兰/不锈钢法兰/法兰/非标法兰,双相钢法兰直销厂家排行 - 品牌推荐师

双相钢法兰作为管道连接的核心部件,在石油化工、船舶制造、核电环保等高腐蚀、高压工况领域承担着保障系统安全、延长设备寿命的关键作用。其耐腐蚀性、高强度与抗疲劳性能直接影响工业生产的稳定性。根据中国机械工业…

共同探索的价值

共同探索的价值关键词&#xff1a;共同探索、知识共享、创新合作、团队凝聚力、跨领域融合、资源整合、价值创造摘要&#xff1a;本文深入探讨了共同探索在信息技术领域以及更广泛范围内的重要价值。通过详细阐述共同探索的背景、核心概念、算法原理、数学模型、项目实战、应用…

空中飞行物检测数据集2895张yolo数据集

空中飞行物检测数据集2895张yolo数据集数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;2895Annotations文件夹中xml文件总计&#xff1a;2895labels文件夹中txt文件总…

计算机小程序毕设实战-基于springboot+微信小程序的公考宝典小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

四叶草PDF阅读器(无广告免费PDF阅读器)

四叶草PDF阅读器是一款简洁、轻量且易于使用的PDF阅读器。它提供了基本的阅读和浏览功能&#xff0c;使用户能够方便地浏览和查看PDF文件。该软件的界面简洁明了&#xff0c;容易上手&#xff0c;适合不熟悉PDF阅读器操作的用户。 软件功能 打开和浏览PDF文件&#xff1a;四叶…

FreeRTOS学习笔记(9)

消息量信号量本质上是一个特殊的队列&#xff0c;但是它内部是一个计数装置&#xff0c;通过计数来表明程序的状态&#xff0c;可以理解成一个状态机&#xff0c;信号量是FreeRTOS中用于"计数"和"同步"的工具&#xff0c;主要解决&#xff1a;1个资源多个任…

【毕业设计】基于springboot的4s店车辆管理系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

小程序毕设选题推荐:基于SpringBoot+微信小程序高考考试刷题系统基于springboot+微信小程序的公考宝典小程序【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

为什么手机越用越卡?原来是这 3 个地方在拖后腿

很多人都有这样的体验&#xff1a;刚买的手机流畅得像风&#xff0c;用了一年半载后却开始卡顿、延迟、掉帧。其实&#xff0c;手机变慢并不是 “老了” 这么简单&#xff0c;往往是几个关键地方在悄悄拖后腿。第一个拖慢手机的元凶&#xff0c;是存储长期处于 “爆满” 状态。…

一文搞懂AI核心:预训练、微调与LLaMA-Factory Online高效实践

一文搞懂AI核心:预训练、微调与LLaMA-Factory Online高效实践在人工智能飞速发展的当下,预训练(Pre-Training) 与 微调(Fine-Tuning) 已成为推动AI模型不断进化的关键技术,二者相辅相成,为模型在多样化任务中…

气球数据集1155张VOC+YOLO格式

气球数据集1155张VOCYOLO格式数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;1155Annotations文件夹中xml文件总计&#xff1a;1155labels文件夹中txt文件总计&#x…

互联网大厂Java求职面试:从Spring框架到微服务架构的技术点解析

互联网大厂Java求职面试&#xff1a;从Spring框架到微服务架构的技术点解析 场景&#xff1a;互联网大厂面试现场 面试官&#xff1a; 超好吃&#xff0c;你好&#xff0c;欢迎来参加我们的面试。我们会从技术基础到业务场景结合来进行问答&#xff0c;希望你放轻松。准备好了吗…

学长亲荐!10款AI论文网站测评:本科生毕业论文必备工具

学长亲荐&#xff01;10款AI论文网站测评&#xff1a;本科生毕业论文必备工具 2026年AI论文工具测评&#xff1a;为何值得一看&#xff1f; 在当前学术研究日益依赖数字化工具的背景下&#xff0c;本科生在撰写毕业论文时面临诸多挑战&#xff0c;如选题困难、资料搜集繁琐、格…

气球数据集1136张VOC+YOLO格式

气球数据集1136张VOCYOLO格式数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;1136Annotations文件夹中xml文件总计&#xff1a;1136labels文件夹中txt文件总计&#x…

【毕业设计】基于springboot+微信小程序的公考宝典小程序(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…