一、核心定位
多功能内容聚合平台,支持文章、图片、资源、论坛、考卷等内容形态,包含用户权限管理、后台运营配置、前台展示交互三大核心模块,满足用户浏览、发布、互动及管理员运营管理需求。
二、权限体系设计
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 内容内页通用规则
- 展示内容:标题、正文/资源链接/图片、发布者、发布时间
- 互动功能:评论发布/删除、点赞
- 资源页额外功能:网盘链接展示(按后台排序)
六、关键业务规则
- 权限继承:用户权限由所属用户组决定,高级权限包含普通权限所有项
- 答题规则:考卷未通过可无限答题,通过/未通过均需遵守冷却时间,奖励仅可获取指定次数
- 邀请码规则:强制注册时需填写未使用的邀请码,生成邀请码需消耗指定金条
- 格式生效规则:分类关联格式后,该分类下所有内容均按此格式展示
- 网盘识别规则:前台输入的资源链接,匹配后台配置的网盘域名自动识别
- 媒体库清理规则:仅清理未关联任何业务场景(文章、头像、题目等)的图片,每周一次
- 等级升级规则:用户经验值达到对应等级的"所需经验值"时,自动升级