开源了一个自用的外贸商城(Teanary)

26 阅读5分钟

Teanary - 全球多节点电商平台系统

地址:gitee.com/teanary/tea…

一个支持多节点部署、AI自动翻译、商品采集的现代化全球电商平台系统。专为解决跨国电商运营难题而设计。

🌟 核心特性

🌍 多节点数据同步系统

解决的核心问题:

  • ✅ 跨国服务器管理难题:服务器在国外,管理网站不方便?在中国部署管理节点,数据自动同步到全球各节点
  • ✅ 本地化运营:不同国家/地区运行独立节点,提供本地化服务,提升用户体验
  • ✅ 数据一致性:多节点数据自动双向同步,以最新数据为准,确保全球数据一致
  • ✅ 故障容灾:单个节点故障不影响其他节点,系统自动重试同步

技术特点:

  • 🔄 双向同步:支持任意数量节点间的数据双向同步
  • 📦 批量同步:多条记录打包同步,大幅提升效率
  • 🔐 安全可靠:API Key 验证,支持 HTTPS 加密传输
  • 📁 文件同步:自动同步媒体文件(图片、资源等)
  • 🔁 自动重试:同步失败自动重试,确保数据不丢失
  • 📊 同步监控:完整的同步日志和状态跟踪

适用场景:

  • 中国管理节点 + 美国/欧洲/亚洲等多个销售节点
  • 不同国家/地区独立运营,数据统一管理
  • 需要本地化服务但统一数据源的场景

🤖 AI 自动翻译系统

功能特点:

  • 🌐 多语言支持:支持 8 种语言自动翻译(中文、英文、西班牙语、法语、日语、韩语、德语、俄语)
  • 📝 内容翻译:自动翻译商品信息、文章内容、分类描述等
  • 🎯 智能识别:自动识别 HTML 内容,保留标签结构
  • ⚡ 批量处理:支持批量翻译,提升效率
  • 🔄 状态跟踪:翻译状态实时跟踪(待翻译、翻译中、已完成、失败)

技术实现:

  • 集成 Ollama 本地 AI 模型,无需第三方 API
  • 支持自定义翻译提示词,优化翻译质量
  • 异步队列处理,不阻塞主流程

🛒 Chrome 插件商品采集

功能特点:

  • 🛍️ 1688 商品采集:一键采集 1688 商品信息
  • 📸 图片自动下载:自动下载商品图片并上传到服务器
  • 🌐 多语言处理:自动提取中文信息,准备翻译
  • 📋 批量导入:支持批量商品导入
  • 🔄 数据同步:采集的商品自动同步到所有节点

使用场景:

  • 从 1688 等平台快速采集商品
  • 批量导入商品到电商平台
  • 自动化商品管理流程

🛍️ 完整电商功能

  • 产品管理:多规格、多图片、多语言产品信息
  • 分类系统:灵活的层级分类和属性筛选
  • 购物车:实时购物车功能
  • 订单管理:完整的订单流程和状态跟踪
  • 支付集成:支持 PayPal 等多种支付方式
  • 促销系统:灵活的促销规则和优惠券
  • 用户系统:用户注册、登录、个人中心
  • 内容管理:多语言文章系统
  • SEO 优化:自动生成 SEO 标签

🎨 现代化管理后台

  • Filament 3.x:基于 Laravel 的现代化管理面板
  • 实时数据统计:销售数据、用户统计等
  • 多语言管理:统一管理所有语言内容
  • 媒体管理:图片上传、优化、管理
  • 系统设置:灵活的配置管理

🚀 技术栈

后端技术

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

前端技术

  • Tailwind CSS 3.x - 实用优先的 CSS 框架
  • Livewire 3.x - 全栈框架
  • Alpine.js - 轻量级 JavaScript 框架
  • Vite - 现代前端构建工具

管理后台

  • Filament 3.x - Laravel 管理面板
  • 自定义组件 - 针对业务定制的管理组件

其他工具

  • Laravel Media Library - 媒体文件管理
  • Laravel Scout - 全文搜索
  • Laravel Queue - 队列处理
  • Laravel Notifications - 通知系统
  • Ollama - 本地 AI 模型(用于翻译)

📦 快速开始

环境要求

  • PHP >= 8.1
  • Composer
  • Node.js >= 16.x
  • MySQL >= 8.0
  • Redis
  • Ollama (可选,用于 AI 翻译)

安装步骤

1. 克隆项目

bash

git clone https://gitee.com/teanary/teanary_service.git
cd teanary_service

bash

git clone https://github.com/TeanaryService/teanary_srvice.git
cd teanary_service

2. 安装依赖

bash

composer install
npm install

3. 环境配置

bash

cp .env.example .env
php artisan key:generate

4. 配置数据库

编辑 .env 文件:

env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=teanary
DB_USERNAME=your_username
DB_PASSWORD=your_password

5. 配置多节点同步(可选)

env

SYNC_ENABLED=true
SYNC_NODE=node1

# 配置其他节点
SYNC_NODE2_URL=https://node2.example.com
SYNC_NODE2_API_KEY=your-secret-api-key
SYNC_NODE2_TIMEOUT=600

6. 运行数据库迁移

bash

php artisan migrate
php artisan db:seed

7. 构建前端资源

bash

npm run build

8. 启动开发服务器

bash

php artisan serve

访问 http://localhost:8000 查看网站。

🌐 多节点部署指南

场景示例

场景 1:中国管理 + 全球销售节点

text

中国节点(管理节点)
├── 美国节点(销售节点)
├── 欧洲节点(销售节点)
└── 亚洲节点(销售节点)

场景 2:多地区独立运营

text

北京节点
├── 上海节点
├── 广州节点
└── 深圳节点

配置步骤

1. 在每个节点配置环境变量

env

# 节点 1 配置
SYNC_ENABLED=true
SYNC_NODE=beijing
SYNC_BEIJING_URL=https://beijing.example.com
SYNC_BEIJING_API_KEY=key-for-beijing
SYNC_SHANGHAI_URL=https://shanghai.example.com
SYNC_SHANGHAI_API_KEY=key-for-shanghai

# 节点 2 配置
SYNC_ENABLED=true
SYNC_NODE=shanghai
SYNC_BEIJING_URL=https://beijing.example.com
SYNC_BEIJING_API_KEY=key-for-beijing
SYNC_SHANGHAI_URL=https://shanghai.example.com
SYNC_SHANGHAI_API_KEY=key-for-shanghai

2. 配置雪花 ID 机器 ID

每个节点必须配置不同的机器 ID:

env

SNOWFLAKE_MACHINE_ID=1  # 节点 1
SNOWFLAKE_MACHINE_ID=2  # 节点 2

3. 启动队列处理

bash

php artisan queue:work

详细配置请参考 SYNC.md

📡 API 文档

商品上传接口

接口地址POST /api/products/add

功能: 上传商品,支持多语言、多规格、分类自动创建、图片上传

请求示例:

bash

curl -X POST https://your-domain.com/api/products/add \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-token" \
  -d '{
    "slug": "product-slug",
    "translations": [
      {
        "language_id": 1,
        "name": "商品名称",
        "description": "商品描述"
      }
    ],
    "variants": [
      {
        "sku": "SKU-001",
        "price": 99.99,
        "stock": 100
      }
    ]
  }'

文章上传接口

接口地址POST /api/articles/add

功能: 上传文章,支持多语言、图片上传

详细 API 文档请参考代码中的接口定义。