基于Webman的多平台广告管理系统

Admin
120阅读
0评论
0点赞

本文介绍一个基于Webman框架开发的开源多平台广告管理系统。系统已对接29个国内外广告平台,支持统一投放管理、跨平台报表、告警监控和自动出价。技术栈包含PHP 8.2、Vue 3、MySQL、Redis、Elasticsearch,并提供Flutter与HarmonyOS客户端。文章涵盖系统架构、安全机制、高并发优化及快速部署方式。

本文介绍一个基于 Webman 框架开发的开源多平台广告管理系统,目前已对接 29 个广告平台,支持统一投放管理、跨平台数据报表、告警监控、自动出价,并提供 Web、Flutter、HarmonyOS 多端访问。项目采用 PHP 8.2 + webman v2 作为服务端,管理后台使用 Vue 3 + Element Plus,数据层基于 MySQL、Redis 与 Elasticsearch,适合需要聚合管理多个广告账户的团队或个人开发者。

项目概览

  • 项目地址:https://github.com/erikwang2013/ads-php
  • 功能模块:docs/features.md
  • API 文档:docs/api.md,本地可通过 /apidoc 访问
  • 版本对比:Lite 版开源,Standard 与 Full 版可联系作者获取

支持的广告平台

系统共接入 29 个广告平台,其中国内 16 个,国际 13 个。

国内平台(16 个)

平台 适配器 认证方式
巨量引擎 Juliang OAuth2 Access-Token
百度营销 Baidu OAuth2 + 信封签名
淘宝/阿里妈妈 Taobao OAuth2 + MD5
腾讯广告 Tencent OAuth2 + nonce
快手磁力引擎 Kuaishou OAuth2 URL参数
小红书蒲公英 Xiaohongshu OAuth2 Bearer
微博粉丝通 Weibo OAuth2 Bearer
B站花火 Bilibili OAuth2 Bearer
优酷广告 Youku OAuth2 + MD5
美团广告 Meituan OAuth2 Bearer
知乎广告 Zhihu OAuth2 Bearer
360推广 Qihoo360 API Key + Sign
搜狗推广 Sogou API Key + Sign
友盟 Umeng API Key + MD5
京东京准通 Jingdong OAuth2 + MD5
拼多多广告 Pinduoduo OAuth2 + 自定义Sign

国际平台(13 个)

平台 适配器 认证方式
Google Ads Google OAuth2 + GAQL
YouTube Ads Youtube OAuth2 + GAQL
Meta Ads Meta OAuth2 URL参数
TikTok Ads Tiktok OAuth2 Access-Token
LinkedIn Ads Linkedin OAuth2 Bearer
Snapchat Ads Snapchat OAuth2 Bearer
Pinterest Ads Pinterest OAuth2 Bearer
Twitter/X Ads Twitter OAuth2 Bearer
Amazon Ads Amazon OAuth2 + Profile
The Trade Desk TheTradeDesk HMAC-SHA256
Spotify Ads Spotify OAuth2 Bearer
Twitch Ads Twitch OAuth2 Bearer + ClientId
Netflix Ads Netflix OAuth2 client_credentials

技术栈

层 技术 说明
服务端 webman v2 + PHP 8.2+ 7 个插件,65+ API 端点
数据库 MySQL 8.0 28 张表,erik_ 前缀,Snowflake BIGINT 主键
缓存 Redis 7 三级缓存(L1内存/L2 APCu/L3 Redis)、限流计数、Pub/Sub、消息队列
搜索 Elasticsearch webman-scout 自动索引同步
管理后台 webman-admin v2 + Vue 3 + TypeScript + Element Plus PHP 后端(8789端口),ServiceProxy 调用业务 API(8788端口),18 页面,ECharts 可视化
Flutter Dart 3 + Riverpod + GoRouter + fl_chart PC/Mobile 响应式,Desktop Shell 布局,12 页面
HarmonyOS ArkTS + ArkUI HTTP 客户端已就绪,UI 规划中
部署 Docker + Nginx + GHCR Docker Compose 一键启动,GitHub Actions 自动构建推送

架构设计

整体分为 service 和 admin 两个独立服务:

  • service/:webman v2 用户端业务 API 服务,监听 8788 端口,处理广告平台对接、OAuth 授权、数据同步、报表引擎、告警监控等业务逻辑。
  • admin/:webman-admin v2 独立管理后台,监听 8789 端口,包含 PHP 后端(认证鉴权、用户管理、系统配置)和 Vue 3 SPA 前端。
  • Admin 通过 ServiceProxy(基于 cURL 的 HTTP 代理)调用 service API,转发管理员请求并携带 JWT Token。

开发模式下,Vite dev server(5173 端口)将 /api 代理至 service:8788;生产模式下,Nginx 将 / 路由至 admin:8789,将 /api/ 路由至 service:8788。

系统架构图如下:

系统架构图

请求流程图

功能模块图

数据生命周期图

完整版架构图、安全架构、高并发设计可参考项目中的 docs/architecture.md 与 docs/diagrams/。

Erik Stack 集成

项目集成了多款自研 PHP 包,用于提升开发效率与安全性:

包 用途
snowflake-php 分布式 Snowflake ID 生成
hashids API ID 参数加解密
jwt-webman JWT 认证令牌
encryption API 层敏感数据加解密
encryptable DB 字段级自动加解密
webman-scout Elasticsearch 数据同步
season 国家旗帜标识
poster-php 滑块验证码(登录保护)

国际化

所有界面支持中文(zh-CN)和英文(en)双语切换:

  • Admin:vue-i18n v9,TopBar 语言下拉菜单,localStorage 持久化
  • Service API:erik\support\I18n,通过 Accept-Language 请求头或 ?lang= 参数切换
  • Flutter:AppLocalizations + Delegate,自动检测系统语言
  • HarmonyOS:StringResources,通过 setLang() 切换

安全机制

系统在 Service 端和 Admin 端分别构建了多层安全防护,覆盖输入检测、认证、请求校验、响应头、数据保护等 5 大类,共 22 项防护能力,包括 XSS/路径遍历/SQL 注入检测、JWT Token 绑定、登录节流、并发会话限制、CSRF Token、防重放攻击、接口限流、CSP 响应头、字段级存储加密等。

安全架构图如下:

安全架构图

认证方面,服务端和管理后台统一使用 admin_users 表 + bcrypt 哈希,JWT 有效期为 24 小时并支持 refresh 轮换。所有操作都会记录 IP、User-Agent、Client-Platform 和操作详情,删除、解绑、批量操作采用“输入确认词”模式进行二次确认。

高级功能

功能 说明 技术
素材库 图片/视频上传管理、画廊预览、复制 URL AssetController + Vue 画廊
预算预警 日预算消耗实时追踪、三段告警(50/80/100%) BudgetAlertService + 15min Cron
投放日历 跨平台 Gantt 图、月/周视图、按平台着色 CalendarService + Vue Gantt
跨平台归因 5 种归因模型、30 天回溯 AttributionEngine + ECharts

高并发优化

为支撑多平台数据同步和高频请求,系统在多个层面做了性能优化:

  • 数据库读写分离:主库 + 只读副本,SELECT 自动路由到副本
  • DB 连接池:PDO 持久连接 + 时区初始化预热
  • Redis 连接池:持久连接 + 读写分离
  • 三级缓存:L1 进程内存 → L2 APCu → L3 Redis
  • 消息队列异步:Redis List 4 通道(sync/report/export/notification)
  • Nginx 分级限流:30r/s + burst 20 + 20 并发连接
  • 水平扩展:upstream 多实例 + 故障转移 + sticky session
  • CDN 加速:静态资源 expires 30d + immutable + gzip_static

快速启动

一键 Web 安装(推荐)

启动服务后浏览器访问 /install 进入安装向导:

# 启动管理后台 (端口 8789)
cd admin && composer install && php start.php start

# 打开浏览器访问 http://localhost:8789/install

安装向导会引导你完成数据库连接、Redis 配置、管理员账户设置,最后自动建库、执行 install.sql 创建 28 张表并写入种子数据。

Docker 部署(生产环境)

# 启动全部服务 (MySQL + Redis + PHP + Nginx)
docker-compose up -d

# 初始化数据库(创建表 + 种子数据)
make db-init

启动后,管理后台访问 http://localhost,安装向导访问 http://localhost/install,API 文档与更多信息见项目仓库。

上一篇macOS 下安装 ThinkPHP 开发环境教程
下一篇暂无更多文章
评论0

暂无评论,期待您的发言...

发表评论