179 lines
12 KiB
Markdown
179 lines
12 KiB
Markdown
# YwxApp 功能模块分类
|
||
|
||
> 编写日期:2026-08-07
|
||
> 参考来源:[Discuz! 版本功能对比页](https://www.discuz.vip/version)
|
||
|
||
本文参考 Discuz! 官方版本页的功能模块组织方式,结合 YwxApp 当前代码库实际落地的模块,做一套功能模块分类,用于产品梳理、版本规划与对外介绍。
|
||
|
||
---
|
||
|
||
## 一、参考来源说明(Discuz! 版本页的分类逻辑)
|
||
|
||
Discuz! 版本对比页将功能划分为若干大类,其组织思路是:
|
||
|
||
- **核心基础**:站点底层能力(架构、账号、权限、用户组)。
|
||
- **内容生产**:论坛、门户、博客、文档等内容创作与消费模块。
|
||
- **运营工具**:积分、勋章、道具、任务、支付、营销、活动等促活/变现手段。
|
||
- **安全与管控**:认证、审核、防灌水、日志、访问控制。
|
||
- **扩展与生态**:插件、模板、多端、开放接口、第三方对接。
|
||
|
||
其核心经验:**以用户生命周期(注册 → 活跃 → 付费 → 沉淀)为主线组织模块,而非按技术栈划分**。
|
||
|
||
---
|
||
|
||
## 二、YwxApp 功能模块分类(按落地情况)
|
||
|
||
### 1. 核心基础(账号 / 认证 / 架构 / 市场内核)
|
||
| 子模块 | 实现位置 | 说明 |
|
||
|---|---|---|
|
||
| 账号与认证体系 | `ywxapp/library/Auth.php`(`verifyAuth()`) | 登录、JWT、用户组权限校验 |
|
||
| 会员中心框架 | `app/member/` | 控制台、iframe 工作台、主题换肤 |
|
||
| 多应用架构 | `app/{api,backend,frontend,member,wxapp}` | 后台 / 前台 / 会员 / 接口 / 小程序多端 |
|
||
| 应用市场内核 | `addon/appmall/` | 插件提交 → 审核 → 上架 → 购买 → 授权闭环 |
|
||
|
||
### 2. 内容生产(社区 / 博客 / 导航 / 文档)
|
||
| 子模块 | 实现位置 | 说明 |
|
||
|---|---|---|
|
||
| 轻社区论坛 | `addon/forum/` | 发帖、我的帖子、会员中心集成 |
|
||
| 博客系统 | `addon/blog/` | 文章发布与管理 |
|
||
| 站点导航 | `addon/haonav/` | 自定义导航菜单 |
|
||
| 站内文档 | `addon/docs/` | 文档 / 帮助沉淀 |
|
||
|
||
### 3. 运营工具(积分 / 勋章 / 道具 / 任务 / 支付 / 短信)
|
||
| 子模块 | 实现位置 | 说明 |
|
||
|---|---|---|
|
||
| 任务中心 | `app/member/controller/Task.php` + `ywxapp/model/Task.php` | 任务领取、进度跟踪 |
|
||
| 我的道具 | `wxapp_user_prop` 表 + `SchemaGuard::ensureTaskSchema()` | 道具持有与兑换 |
|
||
| 我的勋章 | `Medal` 模型 + `wxapp_user_medal` | 成就 / 勋章授予 |
|
||
| 充值中心 | `app/member` payment / card | 套餐充值、卡密兑换、兑换记录 |
|
||
| 支付网关 | `addon/mqpay/`(免签)、Yansongda | 支付与回调 |
|
||
| 短信服务 | `addon/smsbao/`、`addon/smssend/`、`ywxapp/model/Sms.php` | 验证码 / 通知 |
|
||
|
||
### 4. 安全与管控(权限 / 授权 / 锁定 / SEO / 通信)
|
||
| 子模块 | 实现位置 | 说明 |
|
||
|---|---|---|
|
||
| 三端分离登录 | `BackendBase` / `MemberBase` / `FrontendBase` | 后台 / 会员 / 前台独立鉴权 |
|
||
| 插件授权巡检 | `command/AddonLicenseCheck.php`、`AddonService::verifyRuntimeLicense()` | 授权闸门与过期巡检 |
|
||
| 登录锁定 | `Auth::login` + `User::isLocked()` | 失败次数 / 时段锁定 |
|
||
| SEO 优化 | `addon/seo/` | 静态化 / 收录优化 |
|
||
| 即时通信 | `addon/mqttbroker/`、`addon/wxchat/` | MQTT 消息、微信会话 |
|
||
|
||
### 5. 扩展与生态(多端 / 开放能力 / CLI / 部署)
|
||
| 子模块 | 实现位置 | 说明 |
|
||
|---|---|---|
|
||
| 微信生态 | `addon/wxchat/` | 小程序 / 微信对接(含 uni-app `.uvue/.uts`) |
|
||
| 应用市场生态 | `addon/appmall/` | 开发者中心、分润、下载安装 |
|
||
| CLI 命令体系 | `ywxapp/service/AppService.php` 注册 | `addon:health` / `make` / `manage` / `license-check` |
|
||
| 打包与分发 | `package_appmarket_addon.php` / `package_framework.php` | 插件包 / 框架包生成 |
|
||
|
||
---
|
||
|
||
## 三、与 Discuz! 的对照与差距
|
||
|
||
### 3.1 已具备对应能力(但部分缺后台管理端)
|
||
- 权限控制 / 用户组 / 积分 / 勋章 / 道具 / 任务:YwxApp 已有对应能力,但 **勋章、道具、任务目前主要在会员中心侧边菜单**,尚未补齐 `app/backend` 后台管理入口(Discuz! 后台可配置积分规则、勋章发放、道具管理等)。
|
||
|
||
### 3.2 差异化优势(Discuz! 开源版没有)
|
||
- **应用市场商业化闭环**:提交 → 审核 → 购买 → 支付回调 → 域名授权 → 运行期过期巡检 → 分润提现。这是 YwxApp 的独有模块,也是商业变现的核心。
|
||
|
||
### 3.3 暂缺能力(Discuz! 有,YwxApp 尚未实现)
|
||
- 内容审核 / 云审机制
|
||
- GEO 地理位置 / LBS
|
||
- AI 推荐 / 个性化
|
||
- ElasticSearch 全文检索
|
||
- 可视化工作流 / 审批流
|
||
|
||
---
|
||
|
||
## 四、模块状态总览(已上线 / 待完善 / 缺失)
|
||
|
||
图例:✅ 已上线 🟡 待完善(有基础能力但缺管理端/不完整) ⬜ 缺失(未实现)
|
||
|
||
### 核心基础
|
||
| 子模块 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 账号与认证体系 | ✅ | Auth + verifyAuth 完整 |
|
||
| 会员中心框架 | ✅ | 控制台/工作台/换肤完整 |
|
||
| 多应用架构 | ✅ | 五端齐备 |
|
||
| 应用市场内核 | ✅ | 提交→审核→购买→授权闭环完整 |
|
||
|
||
### 内容生产
|
||
| 子模块 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 轻社区论坛 | ✅ | forum 插件完整(含内容审核:need_audit 配置 + 机审/人工复核) |
|
||
| 博客系统 | ✅ | blog 插件含 `controller/backend/` 下 9 个控制器,后台管理完整(含内容审核:audit_status) |
|
||
| 站点导航 | ✅ | haonav 完整 |
|
||
| 站内文档 | ✅ | docs 完整 |
|
||
|
||
### 运营工具
|
||
| 子模块 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 任务中心 | ✅ | 前台+后台 CRUD 完整 |
|
||
| 我的道具 | ✅ | 前台+后台(Prop)完整 |
|
||
| 我的勋章 | ✅ | 前台+后台(Medal)完整 |
|
||
| 充值中心 | ✅ | 套餐/卡密/记录+后台(Card/Shop)完整 |
|
||
| 支付网关 | ✅ | mqpay 免签(收款码+安卓监听自动确认+后台人工确认)+ Yansongda 真实商户支付均已落地 |
|
||
| 短信服务 | ✅ | smsbao/smssend+Sms 模型+后台完整 |
|
||
| **积分规则管理** | ✅ | 本次新增 `score_rule`/`score_log` 表 + `Score` 控制器/模型/菜单 |
|
||
|
||
### 安全与管控
|
||
| 子模块 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 三端分离登录 | ✅ | Backend/Member/Frontend 完整 |
|
||
| 插件授权巡检 | ✅ | license-check + 运行时闸门完整 |
|
||
| 登录锁定 | ✅ | Auth::login + isLocked 完整 |
|
||
| SEO 优化 | ✅ | seo 插件完整 |
|
||
| 内容审核 | ✅ | forum/blog 已接入机审+人工复核队列 |
|
||
| 即时通信 | ✅ | mqttbroker 连接数/限流保护 + 重连封装 + 压测脚本完整 |
|
||
| 全文检索 | ✅ | ES 可选增强(默认 LIKE,ES 不可用自动降级),forum/blog 已接入 |
|
||
|
||
### 扩展与生态
|
||
| 子模块 | 状态 | 说明 |
|
||
|---|---|---|
|
||
| 微信生态 | ✅ | wxchat + uni-app 对接完整 |
|
||
| 应用市场生态 | ✅ | 开发者中心/分润/下载完整 |
|
||
| CLI 命令体系 | ✅ | AppService 注册 4 条命令完整 |
|
||
| 打包与分发 | ✅ | 两个 package 脚本完整 |
|
||
|
||
---
|
||
|
||
## 五、补齐路线图(待完善 / 缺失能力)
|
||
|
||
### A. 运营工具补全(优先级高)— 已全部完成 ✅(2026-08-07)
|
||
1. **积分规则管理后台(⬜→✅,2026-08-07 新增)**:新增 `score_rule`/`score_log` 表 + `app/backend/controller/Score.php`(规则 CRUD + 流水查看)+ 模型 + validate + 视图/JS + `admin_power` 菜单种子;任务发积分改为走 `Score::change()`(事务内改 `user.score` 并写 `score_log` 流水)。
|
||
2. **支付网关 mqpay 免签真接入(🟡→✅,核实已具备)**:经排查 `addon/mqpay` 插件已实现免签全流程——个人收款码扫码 + 金额零头防撞单 + 安卓监听 App 自动确认(`notify-app`,md5 验签)+ 后台人工确认(`Confirm`),并可选启用 Yansongda 真实商户支付。原标注"未接入"系调研不完整所致,实际无需改动。
|
||
3. **博客后台管理完善(🟡→✅,核实已具备)**:`addon/blog/controller/backend/` 下已有 Article/Category/Comment/Dashboard/Index/Setting/Stat/Tag/User 共 9 个后台控制器,后台管理完整,无需补齐。
|
||
|
||
### B. 安全与管控增强(优先级中)— 已全部完成 ✅(2026-08-07)
|
||
1. **内容审核 / 云审机制(⬜→✅,2026-08-07 新增)**:
|
||
- forum:`forum_topic` 补 `audit_reason` 列(install.sql 事实源 + `SchemaGuard::ensureForumSchema()` 兜底);`need_audit` 开启时发帖走 `AiAuditService` 机审(命中违规直接驳回,通过转人工待审);后台 `Topic::audit()/reject()` + 路由 + 「待审帖子」菜单子项 + 列表审核按钮;前台详情页仅 `status=1` 可见。
|
||
- blog:`blog_article` 补 `audit_status` 列(0草稿/1待审/2通过/3驳回,install.sql + `SchemaGuard::ensureBlogSchema()` 兜底);`BlogArticle` 模型 `$allowField` 加 `audit_status`;发布走机审;后台 `Article::audit()/reject()` + 审核状态列/筛选 + 路由 + 菜单子项。
|
||
- 复用 `addon/wxchat/service/AiAuditService.php`(已存在的云审接入点)。
|
||
2. **即时通信稳定性(🟡→✅,2026-08-07 新增)**:
|
||
- Broker 过载保护:新增 `max_connections`(连接数硬上限拒绝新连接防雪崩)+ `publish_rate_limit`(单连接令牌桶限流,超量静默丢弃);config 暴露后台可调。
|
||
- 客户端重连封装:`client/MqttClient.js`(指数退避 1s→30s + 会话恢复 + 遗嘱 LWT + 心跳兜底)。
|
||
- 压测脚本:`benchmark.php`(纯 PHP 零依赖,模拟 N 客户端并发连接 + 高频发布,验证稳定性)。
|
||
|
||
### C. 差异化能力扩展(优先级低,对标 Discuz! 缺失项)
|
||
1. **GEO 地理位置 / LBS(⬜→✅,2026-08-08 新增)**:
|
||
- `forum_topic`/`blog_article` 加可选 `lat`/`lng` 字段(install.sql 事实源 + `SchemaGuard::ensureForumSchema/ensureBlogSchema` 兜底)。
|
||
- `ForumSearchService::nearby()` / `BlogSearchService::nearby()`:Haversine 球面距离过滤(零依赖),发帖时可带坐标(前端定位可选填)。
|
||
- 前台「附近帖子」(`/forum/nearby`)、「附近文章」(`/blog/nearby`) 页:浏览器定位 → 半径列表,未定位可手动传 lat/lng。
|
||
2. **AI 推荐 / 个性化(⬜→✅,2026-08-08 新增)**:
|
||
- 基于内容相似度的相关推荐:`EsSearch::moreLikeThis()`(ES more_like_this,内容相关度,启用 ES 时生效)+ `ForumSearchService::related()` / `BlogSearchService::related()`(ES 不可用时降级为同版块/同分类/标签重叠相似度)。
|
||
- 接入点:forum 帖子详情页右侧「相关帖子」、blog 文章详情页「相关推荐」。
|
||
3. **ElasticSearch 全文检索(⬜→✅,2026-08-08 新增)**:
|
||
- 通用封装 `ywxapp/library/Search/EsSearch.php`(GuzzleHttp 调 ES 9200 REST,ensureIndex/indexDoc/deleteDoc/search/rebuild,IK 分词降级 standard,不可用时抛异常由上层降级)。
|
||
- `ForumSearchService` / `BlogSearchService`:配置开关 `search_engine=like|es`,默认 LIKE,**ES 不可用时自动降级**到原生模糊检索(零风险)。
|
||
- 薄封装:ES 仅返回 id 列表 → `whereIn('id', $ids)` 回表取完整行 + 关联,复用现有视图。
|
||
- 接入点:forum 前台搜索、blog 前台搜索替换为 ES 查询;发帖/编辑/删除时同步索引(`sync/remove`)。
|
||
- 配置项:`addon/forum/config.php` + `addon/blog/config.php` 加 `search_engine`/`es_host`/`es_index`。
|
||
4. **可视化工作流 / 审批流(✅)**——用于插件上架审核流可视化。
|
||
- `appmarket_addon_review_log` 审核历史日志表(install.sql + SchemaGuard 双源)。
|
||
- `AddonReview` 后台加 `approve`/`reject` 写入审核日志;`detail`(JSON)/`detailview`(HTML)/`history`(JSON) 三接口 + 路由。
|
||
- 列表页"查看详情"按钮 → iframe 弹层打开 `detailview`:提交信息卡 + 审核状态步骤条 + 历史时间线。
|
||
|
||
### D. 对外材料
|
||
- 对外介绍页可直接复用本分类五大类结构,突出「应用市场商业化闭环」差异化卖点。
|
||
- 版本规划表以第四节状态总览为准,按 A→B→C 优先级排期。
|