root 4f5893f87a fix: 修复首页空白/失效外链/云函数越权,补齐缺失页面与种子数据
## 阻断性缺陷
- list.vue 是 0 字节空文件、slist.vue 与 search/search.vue 从未存在,
  而前者是 tabBar 首页、后者是 tabBar「搜索」页 —— 开屏即白屏。
  按 .nvue 原型与详情页契约重建三页(CSS 渐变主视觉、分类筛选、搜索历史/热搜/联想)。
- parse-image-url.js 对空封面调 undefined.startsWith 直接抛错,列表页整页崩。
- 云函数目录缺 uni-cms-articles / uni-cms-categories / uni-cms-unlock-record
  schema 与 schema.ext.js,线上内容渲染与解锁逻辑无配置可用。

## 越权与数据一致性
- uni-cms-articles:del/update/add 全部无鉴权,未登录即可删任意文章、
  改他人文章作者与阅读量。补 login + 作者归属校验,作者与计数改为服务端取值。
- comments.likeComment/relikeComment:直接采信客户端传入的 user_id,
  可冒名点赞刷计数。改为以令牌为准,并纳入事务。
- comments.updateComment:对数组取 .author_id,权限判断恒失败;
  字段名 updateTime 与 ip_location 类型与 schema 不符。
- comments.deleteComment:`!root_id === 0` 优先级错误导致计数恒不减;
  且误更新 uni-cms-articles、按不存在的 type 字段删点赞明细产生孤儿数据。
- cms-articles-like/collect:查重条件混入本次请求时间戳,防重永远失效,
  可无限重复刷计数;补唯一索引并事务化。
- cms-vote:读-改-写票数导致并发丢票,记录与统计非原子;改为事务 + 原子自增。
- cms-articles-log:忽略传入 user_id 直接返回全表,泄露全站浏览记录。
- article_info:get() 使用未定义变量必崩;读接口全部无鉴权。
- user-info:公开资料接口可查任意用户 last_login_ip。

## 资源与数据
- 全项目清空失效的签名外链(expire_at 均为 2025-03,必然 403),
  改为本地生成资源:6 套文章模板、8 个编辑器图标、2 张文章配图。
- 新增分类 / 模板 / 礼物 / 热搜词种子数据,并在 db_init.json 登记,
  同时补上点赞、收藏、投票、浏览日志的唯一索引。

## 功能
- 草稿箱:预览页拆出「发布」与「存为草稿」,作品列表按状态筛选并显示徽标。
  原实现有 4 个 tab 但只有 1 个有内容,且 article_status 在 UI 上无体现。
- 编辑中断恢复:接上原本空实现的「编辑草稿」回调,区分新建与编辑已有文章。

## 工具
- tools/audit-project.js:编码 / 页面路由 / 云调用 / 云函数鉴权 / 敏感信息检查
- tools/check-vue.js:SFC 脚本语法(词法扫描处理 import·export 与条件编译)
- tools/verify.js:一键验证;两个检查器各带自测,防止"永远通过"
- tools/gen-*.py:模板与图标资源生成脚本
2026-09-11 17:48:27 +08:00
2025-03-12 20:11:03 +08:00
2026-09-06 19:36:36 +08:00
2025-06-13 20:46:10 +08:00
2025-03-12 20:11:03 +08:00
2025-03-20 19:32:25 +08:00

军歌嘹亮

军旅题材内容社区,基于 uni-app (Vue 3) + uniCloud 构建,覆盖 H5、小程序与 App 多端。

功能

  • 内容社区(uni-cms):文章浏览 / 搜索 / 详情 / 编辑器(sv-editor)/ 分类筛选
  • 互动:评论与多级回复、点赞、收藏、关注、浏览历史、投票
  • 内容创作:文章发布、草稿、模板选择、投票设置、封面与图片上传
  • 账户体系(uni-id):短信验证码登录、账号密码登录、注册、重置密码、绑定手机、实名认证
  • 变现:uni-pay 支付、余额与提现(部分为占位实现)

技术栈

层 说明
前端 uni-app (Vue 3) + uView UI + z-paging + mescroll
后端 uniCloud 阿里云空间(云对象 / JQL / clientDB)
支付 uni-pay
账户 uni-id-pages
开发工具 HBuilderX(标准版即可,无需 CLI 工程)

目录结构

pages/                      主包:首页、个人中心、登录、详情、自检页
pages2/                     分包:编辑文章、设置、关注、历史、收藏、余额、提现
pages3/                     分包:uni-id 账户体系页面
uni_modules/                插件与组件(uView、uni-cms、uni-pay 等)
uniCloud-alipay/
  cloudfunctions/           云对象:文章、评论、点赞、收藏、关注、投票、用户
  database/                 数据库 schema 与初始化数据
common/                     全局工具与 uView 初始化
components/                 业务组件(评论、图片网格等)
tools/                      静态审计与自测脚本
static/                     静态资源
android/                    Kotlin + Compose 原生安卓版本(独立工程)

开发与运行

  1. 用 HBuilderX(3.8+,Vue3 兼容版)打开本目录。
  2. 在 HBuilderX 中关联 uniCloud 服务空间(绑定 uniCloud-alipay 目录对应的空间)。
  3. 右键 cloudfunctions 与 database 目录,上传 schema 与云函数,并运行初始化数据。
  4. 用 HBuilderX 内置浏览器运行;或配置自定义 vite.config.js,指定 HBUILDERX_HOME。

自测

node tools/audit-project.js          # 静态审计:编码 / 路由 / 云调用 / 敏感信息
node tools/audit-project.js --json   # 机器可读输出,退出码非 0 表示存在错误

应用内自检页:pages/test/test,可验证页面路由与云函数连通性。

注意事项

  • 测试用 private.wxb4c2c6c51ecba864.key 为用户本地文件,不要提交(已加入 .gitignore)。
  • 小程序 appid、tabBar 配置见 manifest.json 与 pages.json。
  • Vue3 下 $delete 已被移除,兼容补丁见 main.js。
  • uView 组件需通过 uni.$u.props 初始化,见 common/uview-init.js。
S
Description
No description provided
Readme
13 MiB
Languages
Vue 54%
JavaScript 41.4%
HTML 2.6%
SCSS 0.9%
CSS 0.7%
Other 0.4%