源社区应用商店
一、版本记录
版本 日期 作者 说明
v0.1 2025-09-9 ①全页面手机版视觉稿②后台完整布局③评论区管理+附件④UTF-8
二、总体定位
- 产品名称:Official App Center(官方应用中心)
- 终端:PC(≥1200px)、Pad(768-1199px)、Mobile(≤767px)
- 技术:DZX3.5 插件;PHP7.4-8.x+MySQL5.7-8.x;
- 编码:插件所有代码文件强制 UTF-8 无 BOM(含模板、语言包、JS、CSS)
三、设计系统
3.1 品牌色
- Primary:#5270FF → #7A87FF 45°渐变
- 功能色:Success #10C961 / Error #FF3B30 / Warning #FFCC00
- 中性色:Title #141733 / Body #3C4054 / Line #EEF0F6 / Bg #FAFBFC
3.2 圆角 & 阴影
- 卡片圆角:PC 12px / Mobile 16px
- 按钮圆角:PC 8px / Mobile 12px
- 阴影:0 4 24px rgba(82,112,255,0.08)
3.3 字体
- PC:PingFang SC, HarmonyOS_Sans, 14px
- Mobile:系统字体,15px 基准
3.4 栅格
- PC:24 列,间隙 24px,最大宽 1200px
- Mobile:4 列,间隙 16px,左右安全距 16px
3.5 动效
- hover: y-4px + 阴影 50ms ease
- 路由切换:opacity 100ms + 微 blur
- 按钮点击:涟漪中心扩散 200ms
3.6 暗黑模式
四、技术与耦合策略
功能 复用论坛 插件自建
用户权限 $_G['group']
原生权限体系 ❌
附件大小 $_G['group']['maxattachsize']
❌
交易积分 后台【积分设置】已存在字段 ❌
消息通知 common_member_notice
❌
缓存 memory()->get/set
跟随论坛配置 ❌
文件存储 本地/COS/OSS/Kodo(插件自建驱动) ✅
网盘上传 白名单+HEAD检测(插件自建) ✅
评论区管理 后台设置管理组+附件权限 ✅
五、文件存储策略(详细)
5.1 本地存储
- 路径:
data/attachment/appstore/
- 命名:
{uid}_{md5}_{timestamp}.{ext}
- 病毒扫描:ClamAV 实时扫描
5.2 云存储(COS/OSS/Kodo)
- 配置:后台填 Region、Bucket、SecretId、SecretKey、CDN域名
- 上传流程:文件→病毒扫描→本地上传→云存储驱动→成功删除本地→
remote=1
- 下载流程:优先CDN→404时fallback本地→统计+1
5.3 迁移详细逻辑
- 后台按钮:「本地→云」「云→本地」
- 点击后弹窗:
- 单选:①仅改配置 ②迁移文件
- 输入:并发数(默认5)、失败重试(默认3)
- 队列表
migration_queue
:
id, file_id, direction(cloud/local), status(wait/done/fail), retry, update_time
- 计划任务
cron_migration.php
:
- 消费 N 条队列
- 下载源文件到临时目录
- 上传到目标存储
- 校验 MD5
- 更新
remote
字段
- 失败:retry+1;达到上限写日志+后台红点
- 站长通知:迁移完成发送
common_member_notice
六、缓存策略(跟随论坛)
- 介质:后台【性能->内存】所选 File/Redis/Memcached
- KEY 前缀:
appstore_{sid}_
- 生命周期:与论坛主题列表一致(300s);详情页 60s;评论 30s
- 清理:应用状态变更时
memory()->rm()
七、信息架构 IA
根 /
├─ 首页(PC+Mobile)
├─ 分类列表
├─ 搜索页
├─ 排行榜
├─ 应用详情页(含评论区)
├─ 开发者主页
├─ 用户中心
├─ 上传应用
├─ 更新应用
├─ 审核跟踪
├─ 帮助&协议
└─ 后台管理(PC)
八、全局规则
- 路由:
plugin.php?id=appstore&mod={page}&ac={sub}
- 伪静态:
/app/{id}.html
/category/{catid}.html
- 权限:继承
$_G['group']
;新增「开发者」「审核员」
- 货币:使用论坛【积分设置】交易积分字段
- 上传大小:读
maxattachsize
;后缀后台白名单
- 通知:插入
common_member_notice
;跳论坛消息中心
- 缓存:跟随论坛内存设置;KEY 见第 5 节
- 评论:表结构复用 forum_thread/post;type='appstore_comment'
- SEO:伪静态 + TKD + 结构化数据 Product
九、页面级需求(PC & Mobile 双模板)
9.1 首页
Mobile 视觉稿(像素级)
┌─ 状态栏高 24px(系统) ┐
├─ 导航栏高 56px │
│ 分类图标(左)Logo 居中 发布+(右) │
├─ Hero 轮播高 210px(16:9) │
│ 指示器圆点 6px;手势滑动 │
├─ 分类宫格 8 个 72px 图标 + 12px 文字 │
├─ 搜索入口高 48px(圆角 12) │
├─ 新品卡片单列 │
│ 卡片高 120px;圆角 16;阴影 Y4 │
├─ 排行榜标签高 48px;指示线 2px │
├─ 猜你喜欢瀑布流 │
│ 卡片宽 = (屏幕-48)/2;高度自适应 │
└─ 悬浮发布按钮 56px;右下 16px 安全距 │
PC 视觉稿
- 导航通栏高 64px;轮播高 400px;三栏排行榜;瀑布流三列
- 其余元素同 Mobile 比例放大
实现逻辑
- 轮播/精选:后台「首页装修」拖拽排序;缓存 300s
- 瀑布流:前端
column-count:2
+ IntersectionObserver 懒加载
- 下拉加载:URL
plugin.php?id=appstore&mod=index&page=2
返回 JSON
9.2 分类列表
Mobile
- 顶部 Tab 横向滑动(一级分类)
- 筛选抽屉:价格、评分、时间、排序
- 结果瀑布流;加载更多
PC
- 左侧树形分类+标签多选;右侧双列卡片;排序条;网格/列表切换
逻辑
- 分类树:读
forum_forum
where type='appstore'
- 筛选缓存 KEY
appstore_cat_{catid}_{filter_md5}
300s
9.3 搜索页
Mobile
- 搜索框吸顶;历史标签横向;即时建议下拉
- 结果双列;空态插图+热门关键词
PC
- 左侧高级筛选;右侧双列;支持语法
tag:游戏 价格:免费
逻辑
- 建议接口:
mod=suggest&q=关键词
返回 JSON
- 结果缓存:
appstore_search_{md5(q+filter)}
300s
9.4 排行榜
- 维度:下载/评分/新品/飙升/付费;时间日周月总
- Mobile:顶部标签;下拉加载
- PC:三栏并排 TOP100
- 缓存:每小时;KEY
appstore_rank_{type}_{time}
3600s
9.5 应用详情页(含评论区)
Mobile 视觉稿
┌─ 返回+分享 │ 名称+收藏(右上) ┐
├─ 媒体区轮播高 210px │
├─ 信息区吸顶(图标+名称+评分+下载按钮) │
├─ Tab 横向滑动:详情 | 版本 | 评论 | 问答 │
├─ 评论区(见下独立章节) │
└─ 底部悬浮下载按钮高 56px │
PC 视觉稿
- 媒体区左 640px;信息区右 360px;评论区全宽;侧边栏相关推荐
实现逻辑
- 媒体:图片懒加载;视频自动播放静音
- 价格:限时免费倒计时 JS;到期 cron 改回积分
- 下载:按钮触发
gateway.php?id=xx→302→CDN/本地
9.6 评论区(手机版独立模板)
Mobile 视觉稿
├─ 评论输入框吸底高 88px │
│ 左侧头像 32px;中间输入;右侧发送 │
│ 支持图+语音+表情 │
├─ 排序 Tab:最新/最热/最早(下拉菜单) │
├─ 单条卡片: │
│ ├─ 头像 40px + 昵称 + 等级徽章 │
│ ├─ 内容区(图片宽度=屏幕-32px) │
│ ├─ 底部:点赞 | 回复 | 举报 | 时间 │
│ └─ 楼中楼默认 2 条;点「展开 3 条」 │
└─ 加载更多:论坛原生分页 20 │
PC 视觉稿
逻辑
- 发帖:调用
forum_post.php?action=reply
with type='appstore_comment'
- 点赞:调用
home.php?mod=spacecp&ac=praise
- 缓存:与帖子回帖一致 30s;KEY
appstore_comments_{appid}_{page}
9.7 开发者主页
Mobile
- 封面图 180px;头像 80px 居中;认证标
- Tab:应用 | 动态 | 关于
- 应用卡片双列瀑布流
PC
- 封面 1440×320;左侧统计;右侧公告;应用三列
逻辑
- 统计 SQL:应用数、下载数、积分收益(读
common_credit_log
)
9.8 用户中心
Mobile
- 底部 Tab:首页/搜索/发布/消息/我的
- 「我的」页面:用户卡片+宫格+动态时间轴
- 点击「消息」→ 跳
home.php?mod=space&do=notice
PC
- 左侧导航树;右侧 Dashboard 图表(Chart.js)
- 积分图表:读
common_credit_log
逻辑
9.9 上传应用(首次)
Mobile 视觉稿(单页折叠)
┌─ 进度条(0%-100%)高 4px ┐
├─ 基础信息折叠块 │
│ 名称* / 分类* / 标签 / 简介* │
├─ 文件折叠块 │
│ 选择文件按钮高 48px │
│ 自动解析 config.xml→版本号 │
├─ 图文折叠块 │
│ 封面图拖拽裁剪 │
│ 截图≥3(拖拽排序) │
│ 详情描述富文本+Markdown 切换 │
├─ 定价折叠块 │
│ 免费/积分/限时免费单选 │
│ 限时免费→日期时间选择器 │
└─ 底部保存草稿 + 提交按钮 │
PC 视觉稿
- 4 步向导;左侧步骤指示;右侧内容区
- 封面图裁剪弹窗(Cropper.js)
逻辑
- 文件大小:实时读
<!--{eval echo $_G['group']['maxattachsize']}-->
- 后缀:本地允许 = 论坛
attachextensions
;网盘允许 = 后台白名单
- 云存储:选择 COS/OSS/Kodo→后台填密钥→文件流上传→
remote=1
9.10 更新应用(版本)
Mobile
- 顶部提示「当前版本 1.2.3」
- 表单块:
- 版本号 / 更新日志(富文本)
- 文件(可选,不选则只更新日志)
- 截图(可选,可替换)
- 提交→进入审核→原版本状态=历史
PC
- 版本时间轴左+表单右
- 支持「版本对比」diff 弹窗
逻辑
- 写入
appstore_version
新记录;状态=待审核
- 审核通过后旧版本
status=history
9.11 审核跟踪
Mobile
- 时间轴垂直;图标+状态+时间+审核员留言
- 底部「重新提交」按钮(如被拒绝)
PC
逻辑
- 状态机:待审核→初审→复审→通过/拒绝→已上架/需修改
- 每次变更:插入
common_member_notice
+ 邮件(跟随论坛)
9.12 帮助&协议
Mobile
- 折叠面板 FAQ;顶部搜索关键词高亮
- 底部「提交工单」→跳论坛工单插件
PC
逻辑
9.13 后台管理(PC 仅)
布局
┌─ 顶部导航:Logo | 消息 | 头像 ┐
├─ 左侧菜单树(可折叠) │
│ ├─ 仪表盘
│ ├─ 应用管理
│ ├─ 评论管理
│ ├─ 云存储迁移
│ ├─ 首页装修
│ ├─ 营销工具
│ ├─ 财务
│ └─ 系统设置
├─ 右侧内容区(卡片式) │
└─ 底部:版本号 + 返回站点 │
关键页面
- 仪表盘
- 实时 PV、待审核、迁移进度(进度条+百分比)
- 图表:7 日上传/下载趋势(Chart.js)
- 应用管理
- 表格:ID、名称、作者、版本、状态、操作(审核/下架/删除)
- 批量操作:审核、移动分类、生成兑换码
- 版本对比弹窗:截图、日志、文件大小 diff
- 云存储迁移
- 进度条+实时日志(WebSocket)
- 按钮:暂停/继续/重试失败
- 首页装修
- 系统设置
- 后缀白名单输入框
- 交易积分下拉选择
- 云存储密钥表单(测试按钮)
- 暗黑模式开关
十、业务逻辑流
上传:
用户→JS校验→forum_attachment→云存储驱动→成功删除本地→写入appstore_apps→审核
下载:
用户→gateway.php→统计+1→302→CDN/本地→失败fallback本地
评论:
用户→forum_post.php→type='appstore_comment'→缓存30s→返回JSON
通知:
审核变更→common_member_notice→home.php?mod=space&do=notice
十一、数据库表 & 字段
表名 核心字段
appstore_apps id, name, catid, price_type, price, credit_type, status, uid, create_time
appstore_version id, app_id, version, log, file_url, size, md5, status
appstore_netdisk id, app_id, url, password, status, check_time
appstore_download_log id, app_id, uid, ip, create_time
migration_queue id, file_id, direction, status, retry, update_time
forum_attachment 沿用+ remote字段
forum_thread/post 沿用+ type='appstore_comment'
十二、安全 & 合规
- 上传:后缀白名单+大小+病毒扫描(ClamAV)
- 网盘:HEAD 限 5s;内网 IP 黑名单;SSRF 过滤
- 下载:gateway 302;IP 限速 60/小时
- 评论:敏感词;举报≥3 自动隐藏
- 数据:HTTPS;云存储私有读+CDN 签名
- 合规:GDDR 浮层;DMCA 投诉
十三、SEO & 结构化数据
- 伪静态:
/app/{id}.html
- TKD:后台填;标题模板「{app_name} - 官方应用中心」
- Schema:Product / AggregateRating / Offer / BreadcrumbList
- Sitemap:自动生成;每日更新
十四、交付清单
- 安装包:plugin.xml + 脚本(UTF-8)
- 模板:所有页面 PC+Mobile 独立 .htm(UTF-8)
- 后台:admin 模板 + 迁移 CLI(UTF-8)
- 语言:lang/zh-cn.php、en.php(UTF-8)
- 组件:轮播、瀑布流、评论、上传、富文本(UTF-8)
- 文档:本文档 + 接口swagger + 测试用例(UTF-8)
十五、上线检查单
- 论坛 cron 已开启
- 内存缓存已配置(Redis/File)
- 伪静态规则已写入 Nginx
- 云存储密钥已测(一键测试通过)
- 病毒扫描服务已启动
- 评论敏感词库已同步
- 数据库备份完成