17 KiB
Ywxapp 插件使用说明
适用框架:Ywxapp(基于 ThinkPHP 8 的多应用框架) 本文逐一说明
addon/目录下全部 6 个插件的功能、安装、配置与使用方法。 插件机制与开发规范详见同级《插件开发指南.md》。
插件清单
| 插件 | 标题 | 版本 | 状态 | 形态 | 一句话简介 |
|---|---|---|---|---|---|
blog |
博客应用 | 1.0.0 | 启用 | 完整业务 | 多用户博客(前台展示 / 会员中心 / 后台管理) |
mqttbroker |
MQTT代理 | 2.1.0 | 启用 | 常驻进程 | 基于 Workerman 自研的 MQTT 3.1.1/5.0 Broker |
haonav |
网址导航 | 1.0.0 | 启用 | 完整业务 | 网址分类与站点收录、展示、后台管理 |
wxchat |
聊天应用 | 1.0.0 | 启用 | 常驻进程 | 仿微信的移动端 IM 社交(GatewayWorker) |
smsbao |
短信宝 | 1.0.0 | 启用 | 事件订阅 | 对接短信宝网关发送验证码(半成品) |
demo |
演示插件 | 1.0.0 | 启用 | 脚手架 | 插件开发规范示例骨架(仅返回一句话) |
通用:安装 / 启用 / 卸载
所有插件遵循同一套生命周期,详见《插件开发指南.md》第 4 节。常用操作:
# 开发者模式(本地已放好源码时,免打包、可反复执行,幂等)
php think addon:manage <name> -a develop
# 后台操作
# 插件管理 → 离线安装(上传 zip)→ 启用 / 禁用 / 卸载
- 安装:写入
info.php(state)、执行install.sql建表、注入menu.json菜单、调用Addon::install()钩子。 - 启用 / 禁用:仅切换
info.php的state,并联动菜单显隐;enable/disable钩子存在默认空实现。 - 卸载:调用
Addon::uninstall()(清理数据表与菜单),再删除插件目录。生产环境操作前务必备份。
安装 / 启动命令需在项目根目录执行;常驻进程(Broker、IM 服务)建议在 Linux 上以
nohup php think xxx &或supervisor守护。
1. blog(博客应用)
1.1 功能简介
一个多用户博客平台,提供三套界面:
- 前台展示(公开):首页(最新/热门/推荐文章、分类、标签云、最新评论)、文章详情、分类/标签筛选、搜索、作者主页、关于/联系页、RSS 订阅。
- 会员中心(需登录):发布/编辑/删除自己的文章、自建分类、个人资料。
- 后台管理(需管理员登录):仪表盘统计、文章审核、全局分类/标签、评论审核、用户管理、统计分析、站点/SEO/邮件设置。
1.2 数据表(安装时自动创建,wxapp_blog_*)
| 表 | 用途 |
|---|---|
wxapp_blog_article |
文章(标题/正文/封面/作者 uid/分类/状态/置顶/计数) |
wxapp_blog_category |
分类(全局共享 uid=0,或会员自建) |
wxapp_blog_tag |
标签 |
wxapp_blog_article_tag |
文章-标签关联 |
wxapp_blog_comment |
评论(支持盖楼、审核) |
wxapp_blog_like |
点赞 |
wxapp_blog_favorite |
收藏 |
wxapp_blog_user |
博客用户(映射表名 user) |
wxapp_blog_visit |
访客记录 |
1.3 入口与菜单
- 前台入口:
/blog(首页)、/blog/article/:id、/blog/category/:id、/blog/tag/:id、/blog/rss等。 - 会员中心:
/blog/member(强制登录)。 - 后台:已注入菜单「博客管理」,含 仪表盘 / 文章管理 / 分类管理 / 标签管理 / 评论管理 / 用户管理 / 统计分析 / 系统设置。
1.4 配置说明
- 插件
config.php与info.php['config']均为空,无独立配置项。 - 站点 / SEO / 邮件配置通过后台「系统设置」直接写入应用级
config/site.php、config/seo.php、config/email.php。
1.5 使用要点
- 文章由会员在会员中心发布,后台仅做管理与审核(不发布新文章)。
- 后台「系统设置」可配置站点信息、SEO 与邮件(发信)参数。
- 前台文章评论带敏感词过滤;互动(点赞/收藏)需登录。
1.6 注意事项
- 后台路由挂载
AdminAuth中间件(未登录跳转/admin/login);会员路由挂载MemberAuth(未登录跳/member/login)。 - 自带
READMD.md描述的是独立 ThinkPHP 应用形态(表名、登录账号与实现不符),以本插件实际代码为准。
2. mqttbroker(MQTT 代理)
2.1 功能简介
基于 Workerman 自研的 MQTT 3.1.1 / 5.0 Broker(类 EMQX 轻量版):
- 协议:CONNECT/PUBLISH(QoS0/1/2)/SUBSCRIBE/PING/DISCONNECT/AUTH。
- 传输:TCP(默认 1883)、WebSocket(8083,浏览器/小程序)、可选 TLS。
- 认证 / ACL、保留消息、遗嘱、离线消息持久化、共享订阅(
$share/{group}/{filter})。 $SYS/broker/#系统指标、/static/addon/mqttbroker/实时监控仪表盘。- 基于 Redis Stream 的多进程/WS 桥接、规则引擎转发到外部 Broker(如 EMQX)。
- 手动发布走 DB 出站队列(零外部依赖)。
2.2 启动命令(常驻进程)
php think mqttbroker:start # 启动 Broker(Linux 建议守护)
php think mqttbroker:acltest # ACL 规则测试工具
Windows 下单进程调试模式,WebSocket 多监听在 Windows 不支持;生产请使用 Linux。
2.3 数据表(wxapp_mqttbroker_*)
连接、消息日志、订阅关系、认证账号、ACL 规则、保留消息、离线消息、实时指标、转发规则、出站队列(共 11 张,stats 表有代码自愈建表)。
2.4 后台入口与菜单
已注入菜单「MQTT代理」:概览 / 客户端连接 / 消息日志 / 发布消息 / 认证账号 / ACL规则 / 实时监控 / 转发规则 / 服务设置(均在 /mqttbroker/backend/...)。
2.5 配置说明(后台「服务设置」)
配置项存于数据库 wxapp_addon_config(每个配置独立成行),由后台「插件管理 → 配置」或插件内「服务设置」页写入,读取走缓存(键 addon_config_mqttbroker)。表单字段由 config.php 定义,运行期默认值在 Broker::loadConfig() 中(array_merge($defaults, $saved))。两处默认值应保持一致。关键项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
port |
1883 | TCP 监听端口 |
host |
0.0.0.0 | 绑定地址 |
ws_port |
8083 | WebSocket 端口,0=关闭 |
ssl_enabled |
0 | 对 TCP 启用 TLS |
ssl_cert / ssl_key |
空 | PEM 证书/私钥绝对路径 |
allow_anonymous |
1 | 允许匿名连接;设为 0 时需在「认证账号」维护账号 |
acl_enabled |
0 | 开启后按「ACL规则」校验发布/订阅 |
acl_default |
allow | 规则未命中时的兜底策略 |
max_keepalive |
60 | 最大保活间隔(秒) |
sys_enabled / sys_interval |
1 / 10 | $SYS 指标开关与发布周期 |
persist_retain / persist_offline |
1 / 1 | 保留消息 / 离线消息持久化 |
offline_limit |
1000 | 单客户端离线消息上限 |
cluster_enabled |
0 | 集群桥接(需 Redis) |
rule_enabled |
1 | 转发规则引擎开关 |
redis_* |
127.0.0.1:6379 | 集群桥接用 Redis 连接 |
log_level |
1 | 日志级别(0 关 / 1 仅错误 / 2 详细) |
2.6 使用要点
- 启动 Broker 进程(命令见 2.2)。
- 后台「服务设置」按需配置端口、匿名/认证、ACL、TLS、持久化。
- 客户端连接:
tcp://<host>:1883或ws://<host>:8083;认证在「认证账号」维护,权限在「ACL规则」维护。 - 后台「发布消息」可手动向主题推送;「实时监控」查看连接与吞吐;「转发规则」可将消息桥接到外部 Broker。
2.7 事件与扩展点
- 业务侧在
service/Broker.php预埋了mqtt_message_published事件(参数:topic/payload/qos/retain/clientId;$SYS/主题不触发,qos2 在 PUBREL 后触发,确保每消息一次)。插件可监听此事件做业务联动。
2.8 注意事项
- 单进程内存态(
worker->count=1),会话/订阅在内存,保留/离线消息落库。 - 卸载会 DROP 全部 11 张表,操作前备份。
3. haonav(网址导航)
3.1 功能简介
网站 / 网址导航系统(类 hao123):
- 网址分类管理(预置 11 个分类:社交、视频、购物、办公 AI、金融等)。
- 网址收录与展示(预置约 138 条国内外站点),前台展示首页分类列表 + 热门站点 + 分类/站点详情。
- 后台分类、网址、配置可视化 CRUD(含回收站 / 还原)。
- 网址模型可自动抓取目标页 meta 信息(标题/关键词/描述,基于 Guzzle + DOMDocument)。
3.2 数据表(wxapp_haonav_*)
| 表 | 用途 |
|---|---|
wxapp_haonav_category |
网址分类(树形 pid) |
wxapp_haonav_links |
网址信息(含全文索引、点击/热门/推荐/状态) |
wxapp_haonav_config |
系统配置 KV(初始化为空,需后台添加) |
该插件无
Addon.php,安装时由框架直接执行install.sql(建表 + 预置分类/站点种子数据)。
3.3 入口
- 前台:
/haonav(首页,按分类展示)、/haonav/category/:id(分类详情)、/haonav/site/:id(站点详情)。均免登录。 - 后台:控制器位于
controller/backend/(Category / Links / Configs)。
⚠️ 菜单未注入:
menu.json三套均为空数组,后台左侧没有菜单入口。需直接通过 URL 访问后台控制器(如haonav/backend.category),或自行在menu.json补充菜单后再addon:manage <name> -a develop重注入。
3.4 配置说明
- 无
config.php;配置通过数据库wxapp_haonav_config表 + 后台「Configs」控制器以 KV 形式维护。
3.5 使用要点
- 前台直接访问即可浏览分类与站点。
- 后台「网址」可新增/编辑站点,保存时若填写了 URL 会自动抓取目标页 meta(需安装
guzzlehttp/guzzle)。
3.6 注意事项
- 安全:所有前台/后台控制器当前
noNeedLogin = ['*']、noNeedVerify = ['*'](未强制登录与鉴权),上线前务必补充权限校验。 - 依赖:
Links::fetchMeta依赖guzzlehttp/guzzle,缺失会抛异常,需composer require guzzlehttp/guzzle。 - 存在调试遗留:
Index::read()含dump();die;,Category::updateRolePowers()引用了不存在的关联表,建议清理。
4. wxchat(聊天应用)
4.1 功能简介
仿微信风格的移动端 IM 社交后端(GatewayWorker):
- 实时聊天:单聊/群聊,文本/图片/语音/视频/文件,心跳、认证、撤回、已读回执、敏感词过滤。
- 用户体系:短信验证码登录、一键登录、完善资料、邀请码、
TokenService鉴权。 - 社交关系:好友、关注/粉丝/互关、亲密度等级。
- 动态(朋友圈):发布、评论、点赞、收藏、话题、浏览历史。
- APP 版本管理(
AppVersionCheck中间件:强制/可选更新)。 - 启动配置下发:
appConf/launchData返回聊天/广告/服务器地址等。
4.2 启动命令(常驻进程)
php think wxchat:server # 启动 GatewayWorker 聊天服务
common.php注册了指令wxchat:server;WebSocket 实际地址由appConf的socketUrl(默认wss://dev.xixingwl.cn:2346)下发。
4.3 数据表(wxapp_wxchat_*)
共 20 张,含:app_versions、follow、friend、group_members、groups、intimacy、messages、message_recalls、moments(动态)、moment_comments/likes/collects/shares/medias、moment_hashtags(话题)、unread_counts、view_history 等。
4.4 入口与菜单
- 前台/API:控制器继承
Frontend,对外 URL 带层前缀/wxchat:对外 API 为/wxchat/api/*(如/wxchat/api/login/smsLogin、/wxchat/api/index/appConf),会员中心为/wxchat/member/*,后台为/wxchat/backend/*。插件接口统一返回 JSON。 - 后台菜单:
Addon::install()注入空菜单数组,且无menu.json,因此后台不显示入口。
4.5 配置说明
- 已新增
config.php,约 34 项配置(功能开关、业务限制、广告、服务器地址、第三方 AppId、版本兼容)现由后台「插件管理 → 配置」(/backend/addon/setting?addon=wxchat)可视化维护,实际值存于数据库wxapp_addon_config(独立项 + 缓存)。 appConf()接口以硬编码数组作为默认值,运行时通过AddonService::config('wxchat')读取数据库配置并按类型(bool/int/string)还原后覆盖默认值下发给端。- 数组类配置(
supportedPlatforms)保持代码默认值,未纳入后台表单。 - 默认值一致性:
config.php中声明的value应与appConf()的$defaults保持一致(开关为1/0、数字为字符串形式)。
4.6 事件与扩展点
info.php声明了事件订阅addon\wxchat\subscribe\User,用于对接会员体系(注册/登录等系统事件),在会员注册/登录后同步 IM 账户或下发通知。- 声明了中间件
AppVersionCheck(版本检查)与服务service\Service。
4.7 注意事项
- 登录校验:大量控制器标注
noNeedLogin = ['*'],当前几乎全部接口放行,属开发/调试状态,上线前需开启登录与签名校验。 Login::index()含直接调用短信宝接口发短信的测试代码(含明文账号密码),上线前删除。- 根目录
README.md实为「消息协议结构设计草稿」,并非使用说明。
5. smsbao(短信宝)
5.1 功能简介
对接「短信宝」第三方短信网关(https://api.smsbao.com/sms)的短信发送插件。属于事件订阅 + 短信发送型插件:
- 通过
subscribe/Smsbao.php监听SmsSend事件,向短信宝接口发送验证码短信。 - 短信模板固定:
【妙趣横生】您的短信验证码为:{code}, 五分钟有效,请勿告诉他人。
5.2 数据表 / 菜单 / 路由
- 无
install.sql:不创建任何数据表。 - 无
menu.json:Addon::install()注入空菜单,后台无入口。 - 无
route/目录:不提供 HTTP 接口。
5.3 配置说明
- 已新增
config.php定义账号(u)、密码(p)、签名(sign)、模板(template)四个配置项;实际值存于数据库wxapp_addon_config,可在后台「插件管理 → 配置」中修改,不再硬编码。默认值为迁移占位,请替换为自有账号与签名。
5.4 使用要点(如何触发发短信)
在业务侧主动触发自定义事件即可调用本插件发送验证码:
// 业务代码(如注册/找回密码流程)
event('SmsSend', [
'mobile' => '13800138000',
'code' => '123456',
]);
订阅器 Smsbao 的事件前缀为 Sms(方法 onSend → 事件 SmsSend)。SmsGet / SmsNotice / SmsCheck 方法当前为占位(直接 return true)。
5.5 注意事项(重要)
- 短信宝账号/密码、短信签名均为测试硬编码值,使用前必须替换为自己的账号/签名,并建议改为从配置项读取(新增
config.php与.addonrc读写)。 - 本插件不主动监听
user_register_after等系统事件,必须由业务侧显式event('SmsSend', $sms)触发。 - 当前为半成品状态:无表、无菜单、无配置、控制器为空壳。
6. demo(演示插件)
6.1 功能简介
插件开发规范示例骨架。唯一实际能力:controller/Index.php::index() 返回字符串 这是一个addon\demo 插件应用,访问 /demo 可见。其余控制器/路由/视图均为空占位。
6.2 安装与结构
- 无
Addon.php(用系统默认 install/uninstall 钩子),无install.sql(不建表)。 - 含示例
menu.json(frontend/member/backend 均为「一级/二级」占位菜单)、route/app.php(仅引入Route门面占位)。
6.3 用途
- 作为新插件脚手架参考;可基于
php think addon:make <name> -a build生成更完整的骨架。
附:命令速查
| 命令 | 归属 | 作用 |
|---|---|---|
php think mqttbroker:start |
mqttbroker | 启动 MQTT Broker(常驻) |
php think mqttbroker:acltest |
mqttbroker | ACL 规则测试 |
php think wxchat:server |
wxchat | 启动 GatewayWorker 聊天服务(常驻) |
php think workerman:gateway |
框架 | GatewayWorker 通用网关 |
php think addon:manage <name> -a develop |
框架 | 开发者模式安装(建表+菜单+启用,可重跑) |
附:状态与风险提示
| 插件 | 成熟度 | 上线前需处理 |
|---|---|---|
| blog | 完整可用 | 无需特殊处理 |
| mqttbroker | 完整可用 | 生产用 Linux 守护;按需配置认证/ACL/TLS |
| haonav | 基本可用 | 后台菜单未注入;补登录鉴权;装 guzzle |
| wxchat | 开发态 | 开启登录/签名校验;删除测试发短信代码;补后台菜单 |
| smsbao | 半成品 | 替换硬编码账号/签名;改为配置驱动;补触发逻辑 |
| demo | 脚手架 | 仅作示例,不用于生产 |