刘常宁

正在加载内容与界面动效

黄金乡2.0 产品设计

2026/02/057 次浏览1 个赞

一、核心定位

多功能内容聚合平台,支持文章、图片、资源、论坛、考卷等内容形态,包含用户权限管理、后台运营配置、前台展示交互三大核心模块,满足用户浏览、发布、互动及管理员运营管理需求。

二、权限体系设计

2.1 用户组

  • 默认用户组:游客、管理员
  • 支持自定义创建用户组,批量分配权限

2.2 权限清单

权限类型 具体权限项
普通权限 访问网站、下载资源、发布/删除自有评论、无需金条下载资源、可见隐藏文章、发布/编辑/删除自有文章、发布/编辑/删除自有图片、发布/编辑/删除自有资源、发布/编辑/删除自有论坛帖子、上传图片、私聊
高级权限 编辑/删除他人文章、编辑/删除他人图片、编辑/删除他人论坛帖子、后台管理功能使用权限

三、数据库设计(MongoDB 适配版)

3.1 用户集合(users)

{
  "_id": ObjectId,
  "avatar": String, // 头像URL
  "account": String, // 账号(唯一)
  "password": String, // 加密存储
  "gold": Number, // 金条数量
  "title": {
    "owned": [String], // 已获得的头衔ID列表(支持多个)
    "worn": String // 当前佩戴的头衔ID(仅一个)
  },
  "medal": {
    "owned": [String], // 已获得的勋章ID列表(支持多个)
    "worn": String // 当前佩戴的勋章ID(仅一个)
  },
  "userGroup": String, // 用户组ID
  "email": String, // 邮箱(唯一)
  "experience": Number, // 经验值
  "level": String, // 等级ID
  "signInRecord": { // 签到记录
    "lastSignInTime": Date, // 上次签到时间
    "continuousDays": Number, // 连续签到天数
    "totalSignInDays": Number // 总签到天数
  },
  "inviter": String, // 邀请者账号(如有)
  "createTime": Date, // 创建时间
  "updateTime": Date // 更新时间
}

3.2 用户组集合(userGroups)

{
  "_id": ObjectId,
  "name": String, // 用户组名称(如游客、管理员)
  "permissions": { // 权限配置(布尔值标识是否拥有)
    "visitSite": Boolean,
    "downloadResource": Boolean,
    "publishComment": Boolean,
    "deleteOwnComment": Boolean,
    "downloadWithoutGold": Boolean,
    "viewHiddenArticle": Boolean,
    // 其余权限项依次列写,高级权限同此结构
    "editOthersArticle": Boolean
  },
  "createTime": Date,
  "updateTime": Date
}

3.3 内容基础集合(contents)

(文章、资源、图片、论坛帖子共用基础结构,通过type字段区分)

{
  "_id": ObjectId,
  "type": String, // 类型:article/image/resource/forum
  "title": String, // 标题(图片/资源可选)
  "content": String, // 内容(文章/帖子正文、图片描述、资源说明)
  "categoryId": ObjectId, // 分类ID
  "formatId": ObjectId, // 格式ID
  "publisher": String, // 发布者账号
  "publishTime": Date, // 发布时间
  "updateTime": Date, // 更新时间
  "status": String, // 状态:normal/hidden(仅文章支持隐藏)
  "stats": { // 统计数据
    "viewCount": Number, // 浏览量
    "likeCount": Number, // 点赞数
    "commentCount": Number // 评论数
  },
  // 资源特有字段
  "netdiskLinks": [
    {
      "netdiskId": ObjectId, // 网盘配置ID
      "link": String, // 网盘链接
      "sort": Number // 排序权重(后台配置)
    }
  ],
  // 图片特有字段
  "imageUrl": String, // 图片URL
  // 论坛帖子特有字段
  "lastReplyTime": Date, // 最后回复时间
  "lastReplyUser": String // 最后回复用户账号
}

3.4 评论集合(comments)

{
  "_id": ObjectId,
  "contentId": ObjectId, // 关联内容ID
  "contentType": String, // 关联内容类型(article/image/resource/forum)
  "publisher": String, // 发布者账号
  "content": String, // 评论内容
  "publishTime": Date, // 发布时间
  "updateTime": Date, // 更新时间
  "status": String // 状态:normal/deleted
}

3.5 分类集合(categories)

{
  "_id": ObjectId,
  "name": String, // 分类名称
  "parentId": ObjectId, // 父分类ID(无则为null,支持子分类)
  "type": String, // 关联内容类型(article/image/resource/forum)
  "formatId": ObjectId, // 关联格式ID
  "showOnHome": Boolean, // 是否展示在首页
  "sort": Number, // 排序权重
  "createTime": Date,
  "updateTime": Date
}

3.6 格式集合(formats)

{
  "_id": ObjectId,
  "name": String, // 格式名称
  "ratio": String, // 比例(如16:9/4:3)
  "hasText": Boolean, // 是否有文字
  "isWaterfall": Boolean, // 是否为瀑布流
  "createTime": Date,
  "updateTime": Date
}

3.7 考卷集合(exams)

{
  "_id": ObjectId,
  "name": String, // 考卷名称
  "categoryId": ObjectId, // 考卷分类ID
  "passScore": Number, // 通过分数
  "isRandom": Boolean, // 题目是否随机
  "showQuestionCount": Number, // 每次考试显示题目数量
  "maxAttempts": Number, // 可答题次数(获取奖励次数,未通过无限答)
  "coolingTime": Number, // 答题冷却时间(秒)
  "rewards": { // 通过奖励
    "gold": Number, // 金条数量
    "title": String, // 头衔
    "medals": [String], // 勋章ID列表
    "userGroup": String // 目标用户组ID
  },
  "createTime": Date,
  "updateTime": Date
}

3.8 考题集合(examQuestions)

{
  "_id": ObjectId,
  "examId": ObjectId, // 关联考卷ID
  "type": String, // 题型:choice/essay(选择/问答)
  "content": String, // 题目内容
  "imageUrl": String, // 题目图片URL(可选)
  "score": Number, // 题目分数
  // 选择题特有字段
  "options": [String], // 选项列表
  "correctAnswer": [String] // 正确答案(支持多选)
  "createTime": Date,
  "updateTime": Date
}

3.9 考卷分类集合(examCategories)

{
  "_id": ObjectId,
  "name": String, // 分类名称
  "sort": Number, // 排序权重
  "createTime": Date,
  "updateTime": Date
}

3.10 等级集合(levels)

{
  "_id": ObjectId,
  "name": String, // 等级名称
  "requiredExperience": Number, // 所需经验值
  "sort": Number, // 排序权重(按等级高低)
  "createTime": Date,
  "updateTime": Date
}

3.11 签到配置集合(signInConfig)

{
  "_id": ObjectId,
  "continuousDaysRewards": [
    {
      "days": Number, // 连续签到天数
      "gold": Number, // 金条奖励
      "title": String, // 头衔奖励(可选)
      "medals": [String] // 勋章奖励(可选)
    }
  ],
  "updateTime": Date
}

3.12 邀请码集合(invitationCodes)

{
  "_id": ObjectId,
  "code": String, // 邀请码(唯一)
  "creator": String, // 创建者账号
  "isUsed": Boolean, // 是否被使用
  "user": String, // 使用者账号(未使用则为null)
  "createTime": Date,
  "useTime": Date // 使用时间(未使用则为null)
}

3.13 邀请码配置集合(invitationConfig)

{
  "_id": ObjectId,
  "forceInvitation": Boolean, // 是否强制邀请码注册
  "goldRequired": Number, // 生成邀请码所需金条数量
  "updateTime": Date
}

3.14 幻灯片集合(slides)

{
  "_id": ObjectId,
  "page": String, // 关联页面:home/article/resource/image/forum/exam
  "images": [
    {
      "url": String, // 图片URL
      "link": String, // 跳转链接(可选)
      "sort": Number // 排序权重
    }
  ],
  "updateTime": Date
}

3.15 网盘配置集合(netdisks)

{
  "_id": ObjectId,
  "name": String, // 网盘名称(如百度网盘)
  "domain": String, // 域名(如pan.baidu.com)
  "sort": Number, // 排序权重
  "createTime": Date,
  "updateTime": Date
}

3.16 网站配置集合(siteConfig)

{
  "_id": ObjectId,
  "siteName": String, // 网站名称
  "siteDescription": String, // 网站描述
  "logoUrl": String, // Logo URL
  "emailConfig": { // 邮箱配置
    "smtpHost": String,
    "smtpPort": Number,
    "smtpUser": String,
    "smtpPass": String,
    "fromEmail": String
  },
  "updateTime": Date
}

3.17 论坛板块集合(forumSections)

{
  "_id": ObjectId,
  "name": String, // 板块名称
  "description": String, // 板块描述
  "sort": Number, // 排序权重
  "createTime": Date,
  "updateTime": Date
}

3.18 验证码集合(verificationCodes)

{
  "_id": ObjectId,
  "type": String, // 题型:choice/essay(选择/问答)
  "content": String, // 验证内容
  "imageUrl": String, // 验证图片URL(可选)
  "options": [String], // 选项列表(仅选择题)
  "correctAnswer": [String], // 正确答案
  "createTime": Date,
  "updateTime": Date
}

3.19 媒体库集合(mediaLibrary)

{
  "_id": ObjectId,
  "url": String, // 图片URL
  "uploader": String, // 上传者账号
  "usage": { // 使用场景
    "type": String, // 用途:avatar/article/forum/exam
    "targetId": ObjectId // 关联目标ID(如文章ID、用户账号)
  },
  "uploadTime": Date,
  "isValid": Boolean // 是否有效(未被清理)
}

四、后台功能模块设计

4.1 核心运营功能

4.1.1 图片清理

  • 触发机制:每周自动执行
  • 清理规则:删除用户不可见的图片(未关联到任何内容、头像等场景的图片)
  • 反馈:显示本次清理的图片数量

4.1.2 用户管理

  • 操作:添加、删除、编辑用户
  • 编辑字段:头像、账号、密码、金条、头衔、勋章、用户组、邮箱
  • 展示:用户列表(含所有字段信息)

4.1.3 媒体库管理

  • 操作:上传、删除图片
  • 展示:图片URL、上传账号、使用位置(关联目标ID+用途)

4.1.4 考卷管理

  • 考卷操作:添加、删除、编辑考卷及考卷分类
  • 题目操作:为考卷添加/删除/编辑题目(选择/问答,支持图片)
  • 配置项:题目分数、通过分数、题目是否随机、每次显示题目数量、可答次数、答题冷却时间、通过奖励
  • 关联规则:题目仅归属所属考卷

4.1.5 内容管理(文章/图片/资源/论坛帖子)

  • 展示:全站内容列表(含发布者、发布时间、内容类型)
  • 操作:点击跳转前台对应内容页
  • 评论管理:展示所有评论(含发布者、发布时间、关联内容),点击跳转前台评论位置

4.1.6 格式管理

  • 操作:添加、删除、编辑格式
  • 配置项:比例、是否有字、是否为瀑布流

4.1.7 分类管理

  • 规则:参考WP博客,支持子分类
  • 操作:添加时选择关联格式及是否展示到首页
  • 效果:分类下内容按关联格式展示

4.1.8 论坛板块管理

  • 操作:创建、编辑、删除论坛板块
  • 展示:全部帖子列表

4.1.9 验证码管理

  • 操作:添加、删除、编辑验证码
  • 配置:支持选择/问答题型,可添加图片

4.1.10 等级管理

  • 操作:添加、删除、修改等级
  • 配置:等级名称、所需经验值

4.1.11 签到管理

  • 配置:连续签到天数对应的奖励(金条、头衔、勋章、用户组)

4.1.12 邀请码管理

  • 配置:是否强制邀请码注册、生成邀请码所需金条数量
  • 展示:邀请码列表(含邀请码、创建者、是否被使用、使用者账号)
  • 规则:一个邀请码仅可使用一次

4.1.13 幻灯片管理

  • 配置范围:首页、文章页、资源页、论坛页、考卷页(独立配置)
  • 操作:添加、删除、排序幻灯片图片及跳转链接

4.1.14 网盘配置

  • 操作:添加、排序网盘
  • 配置:网盘名称、域名
  • 效果:前台发布资源时,填入对应网盘链接可自动识别

4.1.15 网站配置

  • 配置项:网站名称、网站描述、Logo、邮箱配置(注册/找回密码用)

五、前台功能模块设计

5.1 页面结构

5.1.1 首页

  • 核心组件:幻灯片、热门内容、选中分类(按配置展示)
  • 侧边栏:签到功能、全站最新评论

5.1.2 文章页

  • 核心组件:幻灯片、文章分类
  • 切换功能:最新文章/热门文章

5.1.3 资源页

  • 核心组件:幻灯片、资源分类
  • 切换功能:最新资源/热门资源

5.1.4 图片页

  • 核心组件:幻灯片、图片分类
  • 切换功能:最新图片/热门图片

5.1.5 论坛页

  • 核心组件:幻灯片、论坛板块
  • 切换功能:最新帖子/最新回复/最多点赞

5.1.6 考试页

  • 核心组件:幻灯片
  • 展示规则:按考卷分类排序展示考卷

5.2 内容内页通用规则

  • 展示内容:标题、正文/资源链接/图片、发布者、发布时间
  • 互动功能:评论发布/删除、点赞
  • 资源页额外功能:网盘链接展示(按后台排序)

六、关键业务规则

  1. 权限继承:用户权限由所属用户组决定,高级权限包含普通权限所有项
  2. 答题规则:考卷未通过可无限答题,通过/未通过均需遵守冷却时间,奖励仅可获取指定次数
  3. 邀请码规则:强制注册时需填写未使用的邀请码,生成邀请码需消耗指定金条
  4. 格式生效规则:分类关联格式后,该分类下所有内容均按此格式展示
  5. 网盘识别规则:前台输入的资源链接,匹配后台配置的网盘域名自动识别
  6. 媒体库清理规则:仅清理未关联任何业务场景(文章、头像、题目等)的图片,每周一次
  7. 等级升级规则:用户经验值达到对应等级的"所需经验值"时,自动升级