OOPBUY 模式核心是基于面向对象编程(OOP)思想构建的模块化、可扩展代购系统,聚焦淘宝 / 1688 平台货源整合,实现 "用户下单→货源匹配→自动采购→物流同步→订单结算" 全流程自动化。本指南从系统架构、技术选型、核心模块开发到部署运维,完整拆解代购系统的搭建过程,兼顾实用性、合规性和可扩展性。 Taobaoapi2014 获取演示站。
一、OOPBUY 代购系统核心定义
1.1 模式核心特征
- 面向对象架构:将用户、商品、订单、采购、物流等核心业务抽象为独立类,低耦合、高复用;
- 双平台适配:兼容淘宝(零售)、1688(批发)货源,支持 "一件代发""批量采购" 两种代购模式;
- 自动化核心:商品信息同步、库存校验、订单下单、物流跟踪全流程自动化;
- 多角色管理:区分管理员、代购商、终端用户,权限分级管控。
1.2 核心业务流程
终端用户下单(系统前端)→ 系统匹配1688/淘宝货源 → 自动校验库存/价格 → 代购商确认采购 → 系统自动下单(1688/淘宝商家)→ 同步物流信息 → 用户确认收货 → 结算分润
二、系统核心架构与技术选型
2.1 整体架构(分层设计)
| 层级 | 核心功能 | 技术选型 |
|---|---|---|
| 前端层 | 用户下单、订单管理、数据可视化 | Vue3 + Element Plus(管理端)、UniApp(移动端) |
| 接口层 | 接口封装、权限校验、流量控制 | Django REST Framework(DRF)/ FastAPI(后端接口) |
| 业务层 | 核心业务逻辑(OOP 抽象) | Python(面向对象开发)、Celery(异步任务:采购 / 物流同步) |
| 数据层 | 数据存储、缓存、去重 | MySQL(用户 / 订单 / 采购数据)、MongoDB(商品 / 物流非结构化数据)、Redis(缓存 / 队列) |
| 对接层 | 平台交互、第三方服务 | 1688 开放平台 API、淘宝开放平台 API、快递 100 API、支付接口(支付宝 / 微信) |
| 运维层 | 部署、监控、日志 | Docker + Docker Compose(容器化)、Nginx(反向代理)、ELK(日志分析) |
2.2 关键技术选型说明
- 后端框架:优先选 Django + DRF(快速开发,内置用户 / 权限管理),高并发场景可选 FastAPI;
- 平台对接:必须使用 1688 / 淘宝开放平台官方 API(禁止爬虫,避免风控);
- 异步任务:Celery 处理 "自动采购、物流同步、价格更新" 等非实时任务;
- 容器化部署:Docker 简化环境配置,便于多服务器扩展。
三、OOP 核心模块设计(类抽象)
基于 OOP 思想,将核心业务抽象为以下基础类,所有模块围绕这些类扩展:
3.1 核心基类(Base 类)
python
python
import time
import uuid
from datetime import datetime
class BaseModel:
"""所有业务类的基类,封装通用属性/方法"""
def __init__(self):
self.id = str(uuid.uuid4()) # 唯一ID
self.create_time = datetime.now()
self.update_time = datetime.now()
def update(self, **kwargs):
"""通用更新方法"""
for key, value in kwargs.items():
if hasattr(self, key):
setattr(self, key, value)
self.update_time = datetime.now()
def to_dict(self):
"""对象转字典,用于接口返回/存储"""
return {
key: value for key, value in self.__dict__.items()
if not key.startswith("_")
}
3.2 商品类(Product)
python
python
class Product(BaseModel):
"""商品类(适配淘宝/1688双平台)"""
PLATFORM_TYPE = {
"TAOBAO": "淘宝",
"1688": "1688"
}
def __init__(self, platform, product_id, title, price, stock, supplier_id):
super().__init__()
self.platform = platform # 平台类型:TAOBAO/1688
self.product_id = product_id # 平台商品ID
self.title = title # 商品标题
self.price = price # 采购价
self.stock = stock # 库存
self.supplier_id = supplier_id # 供应商ID
self.sku_list = [] # SKU列表
self.img_urls = [] # 商品图片
self.is_valid = True # 商品是否有效
def sync_stock_price(self, api_client):
"""同步平台最新库存/价格(调用开放平台API)"""
if self.platform == "1688":
data = api_client.get_1688_product(self.product_id)
else:
data = api_client.get_taobao_product(self.product_id)
self.update(
price=data["price"],
stock=data["stock"],
sku_list=data["sku_list"]
)
return self.to_dict()
3.3 订单类(Order)
python
python
class Order(BaseModel):
"""订单类(终端用户订单)"""
ORDER_STATUS = {
"PENDING": "待匹配货源",
"MATCHED": "货源匹配完成",
"PURCHASED": "已采购",
"SHIPPED": "已发货",
"COMPLETED": "已完成",
"CANCELLED": "已取消"
}
def __init__(self, user_id, product_info, quantity, receive_address):
super().__init__()
self.user_id = user_id # 下单用户ID
self.product_info = product_info # 商品信息(关联Product类)
self.quantity = quantity # 采购数量
self.receive_address = receive_address # 收货地址
self.status = "PENDING" # 初始状态
self.purchase_order_id = None # 关联的采购单ID
self.logistics_info = None # 物流信息
def match_supply(self, supply_list):
"""匹配最优货源(价格/库存/运费)"""
# 筛选有库存的货源
valid_supply = [s for s in supply_list if s["stock"] >= self.quantity]
if not valid_supply:
self.update(status="CANCELLED")
return {"error": "无可用货源"}
# 按价格+运费排序,选最优
best_supply = sorted(valid_supply, key=lambda x: x["price"] + x["freight"])[0]
self.update(status="MATCHED", product_info=best_supply)
return best_supply
def bind_purchase_order(self, purchase_order_id):
"""关联采购单"""
self.update(status="PURCHASED", purchase_order_id=purchase_order_id)
def sync_logistics(self, logistics_data):
"""同步物流信息"""
self.update(status="SHIPPED", logistics_info=logistics_data)
3.4 采购类(PurchaseOrder)
python
python
class PurchaseOrder(BaseModel):
"""采购单类(对接1688/淘宝商家)"""
def __init__(self, order_id, platform, supplier_id, product_id, quantity, total_price):
super().__init__()
self.order_id = order_id # 关联的终端订单ID
self.platform = platform # 采购平台
self.supplier_id = supplier_id # 供应商ID
self.product_id = product_id # 采购商品ID
self.quantity = quantity # 采购数量
self.total_price = total_price # 采购总价
self.pay_status = False # 支付状态
self.platform_order_id = None # 平台生成的订单ID
def create_platform_order(self, api_client):
"""调用开放平台API创建采购订单"""
if self.platform == "1688":
res = api_client.create_1688_order(
supplier_id=self.supplier_id,
product_id=self.product_id,
quantity=self.quantity
)
else:
res = api_client.create_taobao_order(
supplier_id=self.supplier_id,
product_id=self.product_id,
quantity=self.quantity
)
if res["success"]:
self.update(pay_status=True, platform_order_id=res["order_id"])
return res["order_id"]
return None
3.5 物流类(Logistics)
python
python
class Logistics(BaseModel):
"""物流类(同步物流轨迹)"""
def __init__(self, order_id, logistics_code, courier_company):
super().__init__()
self.order_id = order_id # 关联订单ID
self.logistics_code = logistics_code # 物流单号
self.courier_company = courier_company # 快递公司
self.track_list = [] # 物流轨迹
def sync_track(self, logistics_api):
"""调用快递100 API同步物流轨迹"""
track_data = logistics_api.get_track(
logistics_code=self.logistics_code,
courier_company=self.courier_company
)
self.update(track_list=track_data["track_list"])
return track_data["track_list"]
四、总结与扩展
4.1 核心总结
OOPBUY 模式代购系统的核心是面向对象的模块化设计,通过抽象商品、订单、采购等核心类,实现系统的灵活扩展;同时必须以 "合规" 为前提,依托开放平台 API 而非爬虫,避免平台风控和法律风险。
4.2 扩展方向
- 多平台适配:新增拼多多、京东货源对接;
- 智能匹配:基于 AI 算法优化货源匹配(考虑价格、运费、发货时效);
- 跨境代购:对接 1688 跨境专供,支持国际物流;
- 自动化结算:对接财务系统,自动计算代购分润、商家结算金额。
本指南覆盖系统搭建的核心流程,实际开发中需根据业务规模(如单时代购 / 批量采购)调整模块细节,优先保障系统的稳定性和合规性。