更新记录

1.3.0.(2026-07-27) 下载此版本

版本更新记录

v1.0.0

  • 初始版本发布
  • 基础表白功能(发布、浏览、点赞、评论)
  • 管理后台(用户管理、帖子管理)

v1.1.0

  • 新增圈子功能(圈子列表、加入圈子、圈子帖子)
  • 新增话题功能(话题列表、话题帖子)
  • 新增弹幕功能
  • 新增收藏功能

v1.2.0

  • 优化用户体验
  • 统一 URL 配置管理(前端/后端)
  • 点赞收藏状态颜色统一(粉红色 #ff2d78 / 黄色 #ffc107)
  • 粒子效果动画(表情扩散)
  • 帖子卡片长按操作(举报、拉黑、删除)
  • 系统通知分类(系统公告/活动通知/版本更新)
  • 举报工单处理(自动发送系统通知)
  • 圈子名称唯一校验

v1.3.0

  • 新增个人主页统计区域(紫色半透明背景)
  • 编辑资料页左右布局优化
  • 消息红点自动更新(切换 Tab 时刷新)
  • 管理员权限优化(帖子置顶、评论置顶)
  • 图片审核(腾讯云内容安全)
  • 邮箱找回密码功能

平台兼容性

uni-app(4.76)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

一、项目介绍

校园表白墙 是一个基于 uni-app + Vue 3 + Node.js 的微信小程序社交平台,专为校园场景打造。用户可以匿名发布表白、浏览帖子、互动交流,支持圈子、话题、弹幕等丰富功能。

核心特色

  • 🎭 匿名表白:支持匿名发布,保护用户隐私
  • 💖 互动社交:点赞、收藏、评论、关注、私信,带精美粒子效果
  • 🔔 消息通知:系统公告、活动通知、版本更新,支持置顶功能
  • 🎯 圈子话题:兴趣圈子、热门话题、精准推荐
  • 粒子效果:点赞收藏精美动画效果(表情扩散)
  • 🎨 浪漫主题:粉色浪漫主题设计,深色模式适配
  • 📱 多端支持:微信小程序、H5、App 多端发布
  • 🎬 视频发布:支持视频上传(50MB以内)和播放,支持多种格式(MP4、MOV、AVI等)

适用场景

  • 校园表白墙、校园论坛、校园社交
  • 企业内部社交平台、兴趣社区
  • 活动报名、话题讨论、投票互动

一、更新日志

v2.1.0(2026-07-18)

  • 视频上传功能:新增视频上传接口,支持50MB以内视频文件上传
  • 视频格式支持:支持 MP4、MPEG、MOV、AVI、FLV、3GP、WEBM、MKV 等格式
  • 视频播放:帖子详情页支持视频播放,显示封面和时长
  • 资料页优化:保存按钮改为右下角悬浮按钮,避免被胶囊遮挡
  • 导航栏优化:所有子页面标题居中显示,统一样式
  • 评论输入优化:表情只能追加到文字末尾,不能插入中间
  • 表情选择框:调整布局,支持把输入框顶起来
  • 文件上传修复:使用 uni.uploadFile 替代 FormData,解决微信小程序兼容性问题
  • 主包优化:将大图片资源迁移到云存储,减少主包体积约10MB

v2.0.0(2026-07-17)

  • 基础功能完善:表白发布、评论互动、点赞收藏、私信消息
  • 圈子话题:兴趣圈子、热门话题、精准推荐
  • 粒子效果:点赞收藏精美动画效果(表情扩散)
  • 消息通知:系统公告、活动通知、版本更新
  • 管理后台:用户管理、帖子审核、圈子管理、话题管理、举报管理

二、快速开始

2.1 环境要求

软件 版本 说明
Node.js 16.x+ JavaScript运行时
MySQL 5.7+ 关系型数据库
Nginx 1.18+ 反向代理服务器(可选)
PM2 5.x+ 进程管理器(生产环境)
HBuilderX 最新版 前端开发IDE(推荐)

2.2 一键启动(开发环境)

# 1. 克隆项目
git clone  ################
cd loveapp-new

# 2. 安装后端依赖
cd loveapp-admin
npm install

# 3. 配置环境变量(复制模板并修改)
cp .env.example .env
# 编辑 .env 文件,配置数据库和微信小程序信息

# 4. 启动后端服务(开发模式)
npm run dev

# 5. 前端开发(打开 HBuilderX)
# 文件 → 打开目录 → 选择 love 目录
# 运行 → 运行到小程序模拟器 → 微信开发者工具

三、技术栈

3.1 前端技术栈

技术 版本 说明
uni-app 3.x 跨端框架,支持微信小程序/H5/App
Vue 3.x 渐进式JavaScript框架(Composition API)
SCSS - CSS预处理器
ES6+ - JavaScript语法
iconfont - 阿里矢量图标库

3.2 后端技术栈

技术 版本 说明
Node.js 16.x+ JavaScript运行时
Express 4.18.2 Web框架
Sequelize 6.35.2 ORM框架(MySQL)
MySQL 5.7+ 关系型数据库
JWT 9.0.2 身份认证
Multer 1.4.5 文件上传
Nodemailer 6.9.13 邮件发送(找回密码)
腾讯云SDK 4.1.260 图片内容安全审核

3.3 开发工具

工具 说明
HBuilderX 前端开发IDE
微信开发者工具 小程序调试工具
PM2 进程管理
Nginx 反向代理

四、项目结构

loveapp-new/
├── love/                              # 前端 uni-app 项目
│   ├── components/                    # 公共组件
│   │   ├── EmojiPicker.vue            # 表情选择器
│   │   ├── FriendSelector.vue         # 好友选择器
│   │   ├── MusicPlayer.vue            # 音乐播放器
│   │   ├── ParticleEffect.vue         # 粒子效果组件(点赞/收藏动画)
│   │   └── SharePoster.vue            # 分享海报
│   ├── custom-tabbar/                 # 自定义底部导航栏
│   │   └── index.vue                  # TabBar组件(带消息红点)
│   ├── pages/                         # 页面目录
│   │   ├── index/                     # 首页(表白墙瀑布流)
│   │   ├── detail/                    # 帖子详情(含评论区)
│   │   ├── publish/                   # 发表白(匿名、图片、话题)
│   │   ├── circle/                    # 圈子列表
│   │   ├── circle-posts/              # 圈子帖子列表
│   │   ├── messages/                  # 消息中心(私信/通知)
│   │   ├── profile/                   # 个人中心
│   │   ├── my-posts/                  # 我的帖子
│   │   ├── my-likes/                  # 我的点赞
│   │   ├── my-collects/               # 我的收藏
│   │   ├── my-circles/                # 我的圈子
│   │   ├── my-follows/                # 我的关注
│   │   ├── my-followers/              # 我的粉丝
│   │   ├── blacklist/                 # 黑名单
│   │   ├── chat/                      # 聊天页面(私信)
│   │   ├── edit-profile/              # 编辑资料(左右布局)
│   │   ├── user-profile/              # 用户主页
│   │   ├── topic-posts/               # 话题帖子列表
│   │   ├── system-notices/            # 系统通知(分类tab)
│   │   ├── login/                     # 登录页面
│   │   ├── agreement/                 # 用户协议
│   │   ├── privacy/                   # 隐私设置
│   │   └── maintenance/               # 维护页面
│   ├── static/                        # 静态资源
│   │   ├── fonts/                     # 字体图标(iconfont)
│   │   ├── tabs/                      # TabBar图标
│   │   ├── banner-bg.png              # Banner背景
│   │   ├── logo.png                   # Logo
│   │   └── love.png                   # 应用图标
│   ├── utils/                         # 工具函数
│   │   ├── api.js                     # API接口封装
│   │   ├── config.js                  # 全局配置(URL统一管理)
│   │   ├── format.js                  # 格式化工具(日期、数字)
│   │   └── request.js                 # 请求封装(统一拦截、错误处理)
│   ├── App.vue                        # 应用入口(全局样式、生命周期)
│   ├── main.js                        # 主入口(Vue配置)
│   ├── pages.json                     # 页面路由配置(tabBar、pages)
│   ├── manifest.json                  # 应用配置(AppID、权限)
│   ├── project.config.json            # HBuilderX项目配置
│   └── uni.scss                       # 全局样式变量(主题色、字体)
│
├── loveapp-admin/                     # 后端管理系统
│   ├── config/                        # 配置文件
│   │   ├── config.js                  # 应用配置(整合.env)
│   │   ├── database.js                # 数据库配置(Sequelize)
│   │   └── audit.js                   # 审核配置(图片审核开关)
│   ├── controllers/                   # 控制器(业务逻辑)
│   │   ├── adminController.js         # 管理员认证(登录、修改密码)
│   │   ├── wxController.js            # 微信用户(登录、注册、资料)
│   │   ├── postController.js          # 帖子管理(审核、置顶、删除)
│   │   ├── postWxController.js        # 帖子微信接口(列表、详情、互动)
│   │   ├── commentController.js       # 评论管理
│   │   ├── commentWxController.js     # 评论微信接口
│   │   ├── userController.js          # 用户管理(封禁、管理员)
│   │   ├── messageController.js       # 消息管理
│   │   ├── messageWxController.js     # 消息微信接口
│   │   ├── circleController.js        # 圈子管理(CRUD、名称唯一校验)
│   │   ├── circleWxController.js      # 圈子微信接口
│   │   ├── topicController.js         # 话题管理
│   │   ├── bannerController.js        # Banner管理
│   │   ├── noticeController.js        # 通知管理(分类、置顶、发布)
│   │   ├── ticketController.js        # 举报工单(处理、通知)
│   │   ├── uploadController.js        # 上传控制器(图片审核)
│   │   ├── configController.js        # 配置管理
│   │   ├── subscribeController.js     # 订阅消息
│   │   ├── subscribeTemplateController.js
│   │   ├── danmakuController.js       # 弹幕管理
│   │   ├── danmakuWxController.js     # 弹幕微信接口
│   │   ├── followWxController.js      # 关注微信接口
│   │   └── qrcodeController.js        # 二维码生成
│   ├── services/                      # 服务层
│   │   ├── auditService.js            # 审核服务
│   │   ├── imageAuditService.js       # 图片审核服务(本地规则)
│   │   ├── tencentImageAuditService.js # 腾讯云图片审核
│   │   └── wechatService.js           # 微信服务(登录、模板消息)
│   ├── models/                        # 数据模型(Sequelize)
│   │   ├── User.js                    # 用户模型
│   │   ├── Post.js                    # 帖子模型
│   │   ├── Comment.js                 # 评论模型
│   │   ├── Like.js                    # 点赞模型
│   │   ├── Collect.js                 # 收藏模型
│   │   ├── Follow.js                  # 关注模型
│   │   ├── Circle.js                  # 圈子模型
│   │   ├── CircleMember.js            # 圈子成员模型
│   │   ├── Message.js                 # 消息模型
│   │   ├── Danmaku.js                 # 弹幕模型
│   │   ├── Blacklist.js               # 黑名单模型
│   │   ├── Admin.js                   # 管理员模型
│   │   ├── Topic.js                   # 话题模型
│   │   ├── Banner.js                  # Banner模型
│   │   ├── Notice.js                  # 通知模型
│   │   ├── Ticket.js                  # 举报工单模型
│   │   ├── Config.js                  # 配置模型
│   │   ├── SubscribeTemplate.js       # 订阅消息模板模型
│   │   ├── SubscribeMessage.js        # 订阅消息记录模型
│   │   └── index.js                   # 模型导出
│   ├── middlewares/                   # 中间件
│   │   └── auth.js                    # JWT认证中间件
│   ├── routes/                        # 路由配置
│   │   └── index.js                   # 路由入口(所有API路由)
│   ├── views/                         # 管理后台页面(HTML)
│   │   ├── login.html                 # 管理员登录页
│   │   ├── index.html                 # 仪表盘
│   │   └── admin/                     # 管理模块页面
│   │       ├── users.html             # 用户管理
│   │       ├── posts.html             # 帖子管理
│   │       ├── circles.html           # 圈子管理
│   │       ├── topics.html            # 话题管理
│   │       ├── banners.html           # Banner管理
│   │       ├── notices.html           # 通知管理
│   │       ├── tickets.html           # 举报管理
│   │       ├── configs.html           # 配置管理
│   │       └── subscribe-templates.html
│   ├── deploy/                        # 部署配置
│   │   ├── nginx.conf                 # Nginx配置模板
│   │   └── pm2.json                   # PM2配置模板
│   ├── utils/                         # 工具函数
│   │   ├── notification.js            # 通知工具(系统通知发送)
│   │   └── notifyChecker.js           # 通知检查器
│   ├── migrations/                    # 数据库迁移脚本
│   ├── uploads/                       # 上传文件目录
│   ├── app.js                         # 应用入口(Express启动)
│   ├── package.json                   # 依赖配置
│   └── .env                           # 环境变量(数据库、微信等)
│
├── .env.example                       # 环境变量模板
├── .gitignore                         # Git忽略配置
└── README.md                          # 项目文档

五、搭建教程

5.1 服务器环境准备(宝塔面板)

5.1.1 安装 Node.js

# 登录宝塔面板(推荐使用宝塔面板管理服务器)
# 软件商店 → 搜索 Node.js → 安装最新版本(16.x+)

# 验证安装
node -v    # 应显示 v16.x 或更高
npm -v     # 应显示 8.x 或更高

5.1.2 安装 MySQL

# 软件商店 → 搜索 MySQL → 安装 5.7 或 8.0 版本

# 创建数据库
# 数据库 → 添加数据库
# 数据库名: t_lovewall_top
# 用户名: t_lovewall_top
# 密码: 自定义密码(建议使用复杂密码)

# 授权远程访问(如需本地开发连接)
GRANT ALL PRIVILEGES ON t_lovewall_top.* TO 't_lovewall_top'@'%' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES;

5.1.3 创建站点

# 网站 → 添加站点
# 域名: 你的域名或 IP
# 根目录: /www/wwwroot/loveapp-admin
# PHP版本: 纯静态(不需要PHP)

5.2 前端搭建

5.2.1 下载项目

# 克隆项目到本地
git clone https://gitee.com/xiaoli-888/loveapp.git
cd loveapp-new

5.2.2 安装依赖

cd love
npm install

# 如果安装失败,尝试使用淘宝镜像
npm install --registry=https://registry.npmmirror.com

5.2.3 配置前端 URL

编辑 love/utils/config.js

export const BASE_URL = 'http://你的服务器IP或域名/'
export const API_BASE_URL = BASE_URL
export const IMAGE_BASE_URL = BASE_URL

说明:项目已实现 URL 统一管理,更换域名只需修改此文件。

5.2.4 运行项目

方式一:使用 HBuilderX(推荐)

  1. 打开 HBuilderX
  2. 文件 → 打开目录 → 选择 love 目录
  3. 运行 → 运行到小程序模拟器 → 微信开发者工具
  4. 首次运行需要配置微信小程序 AppID

方式二:使用命令行

# 开发模式(微信小程序)
npm run dev:mp-weixin

# 构建生产版本(微信小程序)
npm run build:mp-weixin

# 开发模式(H5)
npm run dev:h5

# 构建生产版本(H5)
npm run build:h5

5.2.5 微信开发者工具配置

  1. 打开微信开发者工具
  2. 导入项目 → 选择 love/unpackage/dist/build/mp-weixin 目录(开发模式)或构建后的目录
  3. 配置 AppID(测试号或正式号)
  4. 开启「不校验合法域名」(开发环境)

5.3 后端搭建

5.3.1 上传后端代码

# 将 loveapp-admin 目录上传到服务器
scp -r loveapp-admin root@你的服务器IP:/www/wwwroot/

# 或者使用 git 克隆到服务器
cd /www/wwwroot
git clone https://gitee.com/xiaoli-888/loveapp.git
mv loveapp/loveapp-admin .

5.3.2 安装依赖

cd /www/wwwroot/loveapp-admin
npm install

# 如果安装失败,尝试使用淘宝镜像
npm install --registry=https://registry.npmmirror.com

5.3.3 配置环境变量

编辑 .env 文件(项目已提供 .env.example 模板):

# 服务端口
PORT=3000

# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_NAME=
DB_USER=
DB_PASSWORD=你的数据库密码

# JWT配置(建议修改为复杂密钥)
JWT_SECRET=loveapp_admin_secret_key_2024
JWT_EXPIRES_IN=7d

# 文件上传路径
UPLOAD_PATH=./uploads

# 微信小程序配置(必填,否则用户登录使用设备ID)
WECHAT_APPID=你的微信小程序AppID
WECHAT_APPSECRET=你的微信小程序AppSecret

# 腾讯云配置(图片审核,可选)
TENCENT_SECRET_ID=你的腾讯云SecretId
TENCENT_SECRET_KEY=你的腾讯云SecretKey
TENCENT_REGION=ap-beijing

# 服务器基础URL(用于生成图片链接、二维码等)
BASE_URL=http://你的服务器IP或域名

重要提示

  • 微信小程序 AppID 和 AppSecret 必须配置,否则用户无法正常登录
  • JWT_SECRET 建议修改为随机生成的复杂字符串
  • 腾讯云配置为可选,不配置则不进行图片内容安全审核

5.3.4 启动服务

# 安装 PM2(生产环境推荐)
npm install -g pm2

# 启动服务
pm2 start app.js --name loveapp-admin

# 查看状态
pm2 status

# 查看日志
pm2 logs loveapp-admin

# 重启服务
pm2 restart loveapp-admin

5.3.5 设置开机自启

pm2 startup
pm2 save

5.4 配置 Nginx 反向代理

5.4.1 使用项目配置模板

# 复制配置文件
cp loveapp-admin/deploy/nginx.conf /www/server/panel/vhost/nginx/你的域名.conf

5.4.2 修改配置

编辑 Nginx 配置文件:

server {
    listen 80;
    server_name 你的服务器IP或域名;

    root /www/wwwroot/loveapp-admin;

    # 后端 API 代理
    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
    }

    # 静态文件服务(上传的图片)
    location /uploads/ {
        alias /www/wwwroot/loveapp-admin/uploads/;
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }

    # 管理后台页面
    location /admin/ {
        alias /www/wwwroot/loveapp-admin/views/admin/;
    }

    # 首页重定向到管理后台登录
    location = / {
        rewrite ^ /admin/login.html permanent;
    }
}

5.4.3 重启 Nginx

nginx -t && nginx -s reload

5.5 配置 HTTPS(推荐)

# 在宝塔面板中配置
# 网站 → 站点设置 → SSL → Let's Encrypt(免费证书)
# 开启强制 HTTPS

# 修改后端 .env 文件
BASE_URL=https://你的域名

# 修改前端 love/utils/config.js
export const BASE_URL = 'https://你的域名/'

5.6 数据库初始化

系统启动时会自动执行以下初始化操作:

  1. 自动创建数据表:Sequelize 会根据模型自动创建所有数据表
  2. 创建默认管理员:用户名 admin,密码 admin123
  3. 初始化示例数据
    • Banner 轮播图(6条)
    • 话题(8条)
    • 圈子(4条)
    • 工单(3条)

首次启动日志

开始连接数据库...
数据库连接成功
开始同步数据库模型...
数据库模型同步成功
初始化数据...
默认管理员账号已创建: admin / admin123
默认轮播图数据已初始化
默认话题数据已初始化
默认圈子数据已初始化
默认工单数据已初始化
服务器启动成功,端口: 3000
API地址: http://localhost:3000/api

六、模块依赖安装

6.1 后端依赖列表

依赖包 版本 说明
bcryptjs ^2.4.3 用户密码加密
cors ^2.8.5 跨域资源共享
cos-nodejs-sdk-v5 ^3.0.0 腾讯云COS存储(图片云存储)
dotenv ^16.3.1 环境变量管理
express ^4.18.2 Web框架
jsonwebtoken ^9.0.2 JWT身份认证
multer ^1.4.5-lts.1 文件上传
mysql2 ^3.6.5 MySQL数据库驱动
nodemailer ^6.9.13 邮件发送(找回密码)
sequelize ^6.35.2 ORM框架
tencentcloud-sdk-nodejs ^4.1.260 腾讯云SDK(图片内容安全审核)

6.2 开发依赖

依赖包 版本 说明
nodemon ^3.0.2 开发环境自动重启

6.3 前端依赖

依赖包 说明
vue@3.x Vue框架
@dcloudio/uni-app uni-app核心库
@dcloudio/uni-components uni-app组件库
sass CSS预处理器

6.4 安装命令汇总

# 前端依赖
cd love
npm install

# 后端依赖
cd ../loveapp-admin
npm install

# 全局安装 PM2(生产环境)
npm install -g pm2

# 全局安装 nodemon(开发环境)
npm install -g nodemon

6.5 依赖版本锁定

项目使用 package-lock.json 锁定依赖版本,确保不同环境安装的依赖版本一致。


七、API 接口文档

7.1 基础地址

http://你的服务器IP或域名/api/

7.2 接口分类总览

模块 前缀 说明
管理后台 /api/admin/ 管理员登录、用户管理、帖子管理等(需JWT认证)
微信小程序 /api/wx/ 用户登录、用户信息、个人中心等
帖子 /api/posts/ 帖子列表、详情、点赞、收藏等
评论 /api/comments/ 评论列表、发表、点赞等
圈子 /api/circles/ 圈子列表、详情、加入等
关注 /api/users/:id/follow 关注、粉丝列表等
消息 /api/messages/ 私信消息、系统通知等
话题 /api/topics/ 话题列表、搜索等
举报 /api/posts/:id/report 帖子、用户、评论举报
上传 /api/upload/ 图片上传(支持多图)
二维码 /api/qrcode/ 帖子二维码生成
配置 /api/config/ 系统配置(公共接口)
Banner /api/banners/ 首页横幅(公共接口)
订阅 /api/subscribe/ 微信订阅消息
黑名单 /api/blacklist/ 黑名单管理
弹幕 /api/danmakus/ 弹幕功能

7.3 管理后台接口(需登录)

7.3.1 管理员认证

方法 路径 说明
POST /api/admin/login 管理员登录
GET /api/admin/info 获取管理员信息
PUT /api/admin/password 修改密码
PUT /api/admin/username 修改用户名

POST /api/admin/login 请求示例

{
  "username": "admin",
  "password": "admin123"
}

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "username": "admin",
    "role": "super",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

7.3.2 用户管理

方法 路径 说明
GET /api/admin/users 获取用户列表(支持分页、搜索)
GET /api/admin/users/stats 用户统计(总数、今日新增)
GET /api/admin/users/:id 获取用户详情
PUT /api/admin/users/:id/status 更新用户状态(封禁/解封)
PUT /api/admin/users/:id/admin 设置/取消管理员
PUT /api/admin/users/:id/profile 更新用户资料
DELETE /api/admin/users/:id 删除用户

GET /api/admin/users 请求参数

参数 类型 必填 说明
page number 页码,默认1
size number 每页数量,默认20
keyword string 搜索关键词(昵称/账号)
status number 状态筛选(0正常/1禁用)

7.3.3 帖子管理

方法 路径 说明
GET /api/admin/posts 获取帖子列表
GET /api/admin/posts/stats 帖子统计
GET /api/admin/posts/:id 获取帖子详情
PUT /api/admin/posts/:id/audit 审核帖子(通过/拒绝)
PUT /api/admin/posts/:id/top 设置置顶
PUT /api/admin/posts/:id 更新帖子
DELETE /api/admin/posts/:id 删除帖子

PUT /api/admin/posts/:id/audit 请求示例

{
  "status": 1,
  "audit_note": "审核通过"
}

7.3.4 圈子管理

方法 路径 说明
GET /api/admin/circles 获取圈子列表
GET /api/admin/circles/:id 获取圈子详情
POST /api/admin/circles 创建圈子(名称唯一校验)
PUT /api/admin/circles/:id 更新圈子(名称唯一校验)
DELETE /api/admin/circles/:id 删除圈子

7.3.5 话题管理

方法 路径 说明
GET /api/admin/topics 获取话题列表
GET /api/admin/topics/:id 获取话题详情
POST /api/admin/topics 创建话题
PUT /api/admin/topics/:id 更新话题
DELETE /api/admin/topics/:id 删除话题

7.3.6 Banner管理

方法 路径 说明
GET /api/admin/banners 获取Banner列表
GET /api/admin/banners/:id 获取Banner详情
POST /api/admin/banners 创建Banner
PUT /api/admin/banners/:id 更新Banner
DELETE /api/admin/banners/:id 删除Banner

7.3.7 系统通知

方法 路径 说明
GET /api/admin/notices 获取通知列表
GET /api/admin/notices/:id 获取通知详情
POST /api/admin/notices 创建通知
PUT /api/admin/notices/:id 更新通知
DELETE /api/admin/notices/:id 删除通知
PUT /api/admin/notices/:id/publish 发布通知

通知分类

  • system:系统公告
  • activity:活动通知
  • version:版本更新

7.3.8 举报管理

方法 路径 说明
GET /api/admin/tickets 获取举报列表
GET /api/admin/tickets/count 举报统计
GET /api/admin/tickets/:id 获取举报详情
PUT /api/admin/tickets/:id 更新举报状态
DELETE /api/admin/tickets/:id 删除举报
POST /api/admin/tickets/:id/handle 处理举报(自动发送系统通知)

举报状态

  • pending:待处理
  • processing:处理中
  • resolved:已解决
  • closed:已关闭

7.3.9 系统配置

方法 路径 说明
GET /api/admin/configs 获取所有配置
GET /api/admin/configs/:key 获取单个配置
POST /api/admin/configs 设置配置
PUT /api/admin/configs/:key 更新配置
DELETE /api/admin/configs/:key 删除配置

配置项

  • wechat.app_id:微信小程序AppID
  • wechat.app_secret:微信小程序AppSecret
  • contact.wechat:客服微信
  • contact.phone:客服电话
  • contact.email:客服邮箱
  • music.url:背景音乐URL
  • audit.enable:是否启用图片审核
  • upload.max_size:最大上传大小(MB)
  • agreement.user:用户协议内容
  • agreement.privacy:隐私政策内容

7.3.10 订阅消息模板

方法 路径 说明
GET /api/admin/subscribe-templates 获取模板列表
GET /api/admin/subscribe-templates/:type 按类型获取模板
POST /api/admin/subscribe-templates 创建模板
PUT /api/admin/subscribe-templates/:id 更新模板
DELETE /api/admin/subscribe-templates/:id 删除模板

7.3.11 系统统计

方法 路径 说明
GET /api/admin/stats 获取系统统计数据

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "total_users": 1234,
    "total_posts": 5678,
    "total_comments": 9012,
    "total_likes": 12345,
    "total_collects": 6789,
    "today_users": 23,
    "today_posts": 56,
    "today_comments": 89,
    "pending_audit": 12
  }
}

7.4 微信小程序接口

7.4.1 用户认证

方法 路径 说明
POST /api/wx/login 微信登录(获取OpenID)
POST /api/wx/register 账号注册
POST /api/wx/account-login 账号密码登录
GET /api/wx/user 获取用户信息
PUT /api/wx/user 更新用户信息
PUT /api/wx/user/password 修改密码
POST /api/wx/user/set-password 设置密码
PUT /api/wx/user/email 绑定邮箱
POST /api/wx/user/send-reset-email 发送找回密码邮件
POST /api/wx/user/reset-password 重置密码
POST /api/wx/get-phone-number 获取用户手机号

POST /api/wx/login 请求示例

{
  "code": "微信登录code",
  "encryptedData": "加密数据",
  "iv": "解密向量"
}

7.4.2 个人中心

方法 路径 说明
GET /api/users/me/posts 我的帖子
GET /api/users/me/likes 我的点赞
GET /api/users/me/collects 我的收藏
GET /api/users/me/circles 我的圈子
GET /api/users/:userId/posts 用户帖子(他人主页)
PUT /api/users/privacy 更新隐私设置

7.4.3 关注相关

方法 路径 说明
POST /api/users/:id/follow 关注/取消关注
GET /api/users/:id/followers 获取粉丝列表
GET /api/users/:id/follows 获取关注列表
GET /api/users/follow-status 获取关注状态

7.4.4 帖子相关

方法 路径 说明
GET /api/posts 获取帖子列表(支持分页、筛选)
GET /api/posts/:id 获取帖子详情
POST /api/posts 创建帖子(含图片上传)
POST /api/posts/:id/like 点赞/取消点赞
POST /api/posts/:id/collect 收藏/取消收藏
PUT /api/posts/:id/top 置顶(管理员)
DELETE /api/posts/:id 删除帖子

GET /api/posts 请求参数

参数 类型 必填 说明
page number 页码,默认1
size number 每页数量,默认10
topic_id number 话题筛选
circle_id number 圈子筛选
anonymous number 是否匿名(0/1)
sort string 排序方式(latest/hottest)

7.4.5 评论相关

方法 路径 说明
GET /api/posts/:id/comments 获取评论列表
POST /api/posts/:id/comments 发表评论
POST /api/comments/:id/like 评论点赞
POST /api/comments/:id/top 评论置顶(管理员)
DELETE /api/comments/:id 删除评论

7.4.6 圈子相关

方法 路径 说明
GET /api/circles 获取圈子列表
GET /api/circles/:id 获取圈子详情
GET /api/circles/:id/posts 圈子帖子列表
POST /api/circles/:id/join 加入/退出圈子
GET /api/circles/user/list 用户加入的圈子

7.4.7 消息相关

方法 路径 说明
GET /api/messages 获取消息列表(私信)
POST /api/messages 发送消息
PUT /api/messages/read-all 全部已读
PUT /api/messages/read-by-user 按用户标记已读
DELETE /api/messages/:id 删除消息

7.4.8 系统通知

方法 路径 说明
GET /api/notices 获取通知列表(支持分类筛选)
GET /api/notices/unread 未读通知数
GET /api/notices/:id 获取通知详情

GET /api/notices 请求参数

参数 类型 必填 说明
type string 分类筛选(system/activity/version)

7.4.9 话题相关

方法 路径 说明
GET /api/topics 获取话题列表
GET /api/topics/search 搜索话题
GET /api/topics/:id 获取话题详情
GET /api/topics/:id/posts 话题帖子列表

7.4.10 黑名单

方法 路径 说明
GET /api/blacklist 获取黑名单
POST /api/blacklist 添加黑名单
DELETE /api/blacklist/:id 移除黑名单

7.4.11 弹幕相关

方法 路径 说明
GET /api/danmakus 获取弹幕列表
POST /api/danmakus 发送弹幕

7.4.12 订阅消息

方法 路径 说明
GET /api/subscribe/status 获取订阅状态
POST /api/subscribe/status 更新订阅状态
POST /api/subscribe/add-count 添加订阅次数
GET /api/subscribe/templates 获取活动模板

7.4.13 举报功能

方法 路径 说明
POST /api/posts/:id/report 举报帖子
POST /api/users/:id/report 举报用户
POST /api/comments/:id/report 举报评论

POST /api/posts/:id/report 请求示例

{
  "reason": "内容违规",
  "description": "帖子包含不良内容"
}

7.5 公共接口(无需登录)

7.5.1 首页Banner

方法 路径 说明
GET /api/banners 获取首页Banner

7.5.2 系统配置

方法 路径 说明
GET /api/config/music 获取音乐配置
GET /api/config/audit 获取审核配置
GET /api/config/upload 获取上传配置
GET /api/config/app 获取应用配置
GET /api/config/wechat 获取微信配置
GET /api/config/contact 获取客服配置
GET /api/config/email 获取邮箱配置
GET /api/config/agreement 获取协议配置
GET /api/config/subscribe-templates 获取订阅模板
GET /api/public/footer 获取页脚信息

7.5.3 图片上传

方法 路径 说明
POST /api/upload/image 上传单张图片
POST /api/upload/images 上传多张图片(最多9张)
POST /api/upload/video 上传视频(支持本地和COS存储)

图片上传限制

  • 单张图片最大:10MB
  • 支持格式:jpg、jpeg、png、gif、webp
  • 自动压缩:超过2MB自动压缩

视频上传限制

  • 单视频最大:50MB
  • 支持格式:mp4、mpeg、mov、avi、flv、3gp、webm、mkv
  • 存储方式:本地存储或腾讯云COS
  • 上传接口:POST /api/upload/video

7.5.4 二维码生成

方法 路径 说明
GET /api/qrcode/post/:postId 生成帖子二维码

7.6 错误码说明

错误码 说明
200 成功
400 请求参数错误
401 未授权(登录过期)
403 无权限
404 资源不存在
500 服务器错误

八、功能介绍

8.1 前端功能

8.1.1 首页模块

功能 说明
表白墙首页 瀑布流展示帖子,支持下拉刷新、上拉加载更多
Banner轮播 首页顶部横幅广告,支持点击跳转
话题入口 热门话题快捷入口,点击进入话题详情
帖子卡片 展示图片、内容、互动数据(点赞/评论/收藏)
长按操作 长按帖子显示操作菜单(举报、拉黑、删除等)

8.1.2 表白发布

功能 说明
匿名发布 支持匿名表白,保护用户隐私
图片上传 支持多图上传(最多9张),带压缩功能
视频上传 支持视频上传(50MB以内),支持多种格式
话题选择 选择关联话题,自动添加 #话题名# 标签
心情标签 选择当前心情(开心、难过、期待等)
圈子选择 选择发布到指定圈子

8.1.3 帖子详情

功能 说明
帖子详情展示 完整展示帖子内容、图片、话题、心情
评论列表 评论瀑布流展示,支持点赞、置顶
点赞互动 点赞/取消点赞,带粉色粒子效果(💗❤️💕)
收藏互动 收藏/取消收藏,带黄色粒子效果(⭐🌟✨)
分享功能 复制链接分享,生成二维码
举报功能 举报违规内容
长按操作 长按帖子显示操作菜单

8.1.4 圈子模块

功能 说明
圈子列表 展示所有圈子,按排序顺序排列
圈子详情 圈子介绍、成员数、帖子数、加入状态
圈子帖子 圈子内帖子列表,支持筛选
加入圈子 加入/退出圈子,实时更新成员数
我的圈子 我加入的圈子列表

8.1.5 消息模块

功能 说明
私信消息 用户之间私信聊天,支持实时接收
系统通知 系统公告、活动通知、版本更新,支持分类tab
最近收到 点赞、评论、关注通知
消息红点 未读消息提示,切换tab自动更新

8.1.6 个人中心

功能 说明
用户资料 头像、昵称、签名、背景图、学院、年级
统计区域 点赞数、关注数、粉丝数(紫色半透明背景)
我的帖子 我发布的帖子列表
我的点赞 我点赞的帖子列表
我的收藏 我收藏的帖子列表
我的关注 我关注的用户列表
我的粉丝 关注我的用户列表
我的圈子 我加入的圈子列表
黑名单 拉黑用户列表,支持移除

8.1.7 设置模块

功能 说明
编辑资料 修改昵称、签名、性别、生日(左右布局)
背景图上传 上传个人主页背景图
隐私设置 隐私开关配置(帖子可见性等)
账号安全 绑定邮箱、修改密码、找回密码

8.2 管理后台功能

8.2.1 仪表盘

功能 说明
数据统计 用户数、帖子数、评论数、点赞数、收藏数
今日数据 今日新增用户、帖子、评论
审核待办 待审核帖子数量,点击跳转审核

8.2.2 用户管理

功能 说明
用户列表 分页展示所有用户,支持搜索、筛选
用户详情 查看用户完整资料、帖子、评论
封禁用户 封禁/解封用户账号
设置管理员 赋予用户管理员权限
删除用户 删除用户账号(谨慎操作)
用户统计 用户注册趋势统计图表

8.2.3 帖子管理

功能 说明
帖子列表 分页展示所有帖子,支持状态筛选
帖子审核 审核新发布的帖子(通过/拒绝)
设置置顶 置顶热门帖子
删除帖子 删除违规帖子
帖子统计 帖子发布趋势统计图表

8.2.4 圈子管理

功能 说明
圈子列表 展示所有圈子
创建圈子 创建新圈子(名称唯一校验)
编辑圈子 修改圈子信息(名称唯一校验)
删除圈子 删除圈子

8.2.5 话题管理

功能 说明
话题列表 展示所有话题
创建话题 创建新话题
编辑话题 修改话题信息
删除话题 删除话题
设置热门 设置为热门话题

8.2.6 Banner管理

功能 说明
Banner列表 展示所有Banner,按位置分组
创建Banner 创建新Banner(首页/圈子页)
编辑Banner 修改Banner信息
删除Banner 删除Banner
排序设置 设置展示顺序

8.2.7 系统通知

功能 说明
通知列表 展示所有通知,支持分类筛选
创建通知 创建新通知(系统公告/活动通知/版本更新)
编辑通知 修改通知内容
删除通知 删除通知
发布通知 发布通知到用户(自动推送)
置顶通知 设置通知置顶(置顶项优先显示)

8.2.8 举报管理

功能 说明
举报列表 展示所有举报工单,支持状态筛选
举报详情 查看举报内容、截图
处理工单 处理举报(通过/拒绝),自动发送系统通知
删除工单 删除已处理工单
举报统计 举报数据统计图表

8.2.9 系统配置

功能 说明
客服配置 设置客服微信、电话、邮箱
音乐配置 设置背景音乐URL
审核配置 设置图片审核开关
上传配置 设置文件上传参数
协议配置 设置用户协议、隐私政策内容

8.2.10 订阅消息

功能 说明
模板管理 管理微信订阅消息模板
发送消息 发送订阅消息给单个用户
群发消息 发送订阅消息给所有用户

九、后台配置

9.1 登录后台

访问地址: http://你的服务器IP或域名/admin/login.html
默认账号: admin
默认密码: admin123

重要提示:首次登录后请立即修改密码!

9.2 微信小程序配置

登录后台后,进入「系统配置」→ 设置微信小程序配置:

配置项 说明
app_id 微信小程序AppID
app_secret 微信小程序AppSecret

获取方式

  1. 登录微信公众平台(mp.weixin.qq.com)
  2. 进入「开发」→「开发管理」→「开发设置」
  3. 获取 AppID 和 AppSecret(需要管理员扫码验证)

9.3 图片审核配置(可选)

配置腾讯云内容安全服务进行图片审核:

  1. 登录腾讯云控制台(console.cloud.tencent.com)
  2. 搜索并开通「内容安全 CMS」
  3. 进入「访问管理」→「API密钥管理」创建 SecretId 和 SecretKey
  4. 在后台「系统配置」中设置审核开关和腾讯云密钥

审核规则

  • 敏感内容检测(色情、暴力、政治敏感)
  • 广告内容检测
  • 违规图片拦截

9.4 邮箱配置(可选)

配置邮箱用于找回密码功能:

配置项 说明
user 邮箱账号(如:support@example.com)
pass 邮箱密码(或授权码,如QQ邮箱SMTP授权码)
host SMTP服务器地址(如:smtp.qq.com)
port SMTP端口(如:465,SSL加密)
secure 是否使用SSL(true/false)

常见邮箱SMTP配置

邮箱 SMTP服务器 端口 SSL
QQ邮箱 smtp.qq.com 465
163邮箱 smtp.163.com 465
Gmail smtp.gmail.com 465

9.5 客服配置

设置客服联系方式:

配置项 说明
wechat 客服微信号
phone 客服电话
email 客服邮箱

十、URL 配置管理

为方便更换域名,项目实现了 URL 统一配置管理。更换域名时只需修改以下两个文件:

10.1 前端配置

配置文件love/utils/config.js

export const BASE_URL = 'http://你的服务器IP或域名/'
export const API_BASE_URL = BASE_URL
export const IMAGE_BASE_URL = BASE_URL

使用方式:在需要 URL 的地方引入配置

import { BASE_URL } from '../../utils/config'

10.2 后端配置

配置文件loveapp-admin/.env

BASE_URL=http://你的服务器IP或域名

使用方式:在 controller 中通过 config 获取

const config = require('../config/config')
const BASE_URL = config.baseUrl

10.3 更换域名步骤

  1. 修改前端:love/utils/config.js → 更新 BASE_URL
  2. 修改后端:loveapp-admin/.env → 更新 BASE_URL
  3. 修改 Nginx:loveapp-admin/deploy/nginx.conf → 更新 server_name
  4. 重启服务:pm2 restart loveapp-admin && nginx -s reload

十一、部署指南

11.1 前端部署

11.1.1 构建生产版本

cd love

# 构建微信小程序版本
npm run build:mp-weixin

# 构建H5版本
npm run build:h5

# 构建App版本
npm run build:app-plus

11.1.2 上传到微信小程序后台

  1. 打开微信开发者工具
  2. 导入构建后的项目(unpackage/dist/build/mp-weixin
  3. 点击「上传」按钮
  4. 登录微信公众平台 → 版本管理 → 提交审核

11.1.3 H5部署

# 将构建后的H5文件上传到服务器
scp -r unpackage/dist/build/h5/* root@你的服务器IP:/www/wwwroot/love-h5/

# 配置Nginx
server {
    listen 80;
    server_name h5.你的域名.com;
    root /www/wwwroot/love-h5;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    # 反向代理API
    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

11.2 后端部署

11.2.1 使用 PM2 部署

# 启动服务
pm2 start app.js --name loveapp-admin

# 查看状态
pm2 status

# 重启服务
pm2 restart loveapp-admin

# 停止服务
pm2 stop loveapp-admin

# 删除服务
pm2 delete loveapp-admin

# 查看日志
pm2 logs loveapp-admin

# 查看实时日志
pm2 logs loveapp-admin --stream

# 设置开机自启
pm2 startup
pm2 save

# 查看进程资源使用
pm2 monit

11.2.2 使用 PM2 配置文件

项目已提供 deploy/pm2.json 配置模板:

{
  "name": "loveapp-admin",
  "script": "app.js",
  "cwd": "/www/wwwroot/loveapp-admin",
  "env": {
    "NODE_ENV": "production"
  },
  "instances": 1,
  "watch": false,
  "max_memory_restart": "1G",
  "error_file": "./logs/err.log",
  "out_file": "./logs/out.log",
  "log_date_format": "YYYY-MM-DD HH:mm:ss"
}

使用方式

pm2 start deploy/pm2.json

11.2.3 使用 Docker 部署(可选)

创建 Dockerfile

FROM node:16-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]

创建 docker-compose.yml

version: '3.8'
services:
  loveapp-admin:
    build: .
    ports:
      - "3000:3000"
    environment:
      - PORT=3000
      - DB_HOST=mysql
      - DB_NAME=t_lovewall_top
      - DB_USER=t_lovewall_top
      - DB_PASSWORD=你的密码
      - WECHAT_APPID=你的AppID
      - WECHAT_APPSECRET=你的AppSecret
      - BASE_URL=http://你的域名
    depends_on:
      - mysql
    restart: always

  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    environment:
      - MYSQL_DATABASE=t_lovewall_top
      - MYSQL_USER=t_lovewall_top
      - MYSQL_PASSWORD=你的密码
      - MYSQL_ROOT_PASSWORD=你的密码
    volumes:
      - mysql-data:/var/lib/mysql
    restart: always

volumes:
  mysql-data:

构建并运行:

docker-compose up -d

11.3 Nginx 配置

完整的 Nginx 配置参考 loveapp-admin/deploy/nginx.conf

server {
    listen 80;
    server_name your-domain.com;

    root /www/wwwroot/loveapp-admin;

    # 后端 API 代理
    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
    }

    # 静态文件(上传的图片)
    location /uploads/ {
        alias /www/wwwroot/loveapp-admin/uploads/;
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }

    # 管理后台页面
    location /admin/ {
        alias /www/wwwroot/loveapp-admin/views/admin/;
    }

    # 首页重定向到管理后台登录
    location = / {
        rewrite ^ /admin/login.html permanent;
    }

    # 错误页面
    error_page 404 /admin/login.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /www/wwwroot/loveapp-admin/public;
    }
}

11.4 微信小程序审核注意事项

  1. 服务器域名配置

    • 在微信公众平台 → 开发 → 开发设置 → 服务器域名中配置:
      • request合法域名:https://你的域名
      • uploadFile合法域名:https://你的域名
      • downloadFile合法域名:https://你的域名
  2. 隐私协议

    • 在后台配置用户协议和隐私政策内容
    • 在小程序中添加「用户协议」和「隐私政策」页面链接
  3. 审核材料

    • 准备小程序名称、头像、简介
    • 准备功能页面截图(首页、发布页、个人中心等)
    • 准备用户协议和隐私政策文本

十二、数据库表结构

系统启动时会自动创建所有数据表,无需手动创建。

12.1 数据表清单

表名 说明
users 用户表
posts 表白帖子表
comments 评论表
likes 点赞表
collects 收藏表
follows 关注表
circles 圈子表
circle_members 圈子成员表
messages 消息表
danmakus 弹幕表
blacklist 黑名单表
admins 管理员表
topics 话题表
banners Banner表
notices 通知表
tickets 举报工单表
configs 配置表
subscribe_templates 订阅消息模板表
subscribe_messages 订阅消息记录表

12.2 核心表结构

users(用户表)

字段 类型 说明
id BIGINT 用户ID(主键)
openid VARCHAR(100) 微信OpenID
account VARCHAR(50) 账号(可用于账号密码登录)
password VARCHAR(255) 密码(bcrypt加密)
email VARCHAR(100) 邮箱(用于找回密码)
phone VARCHAR(20) 手机号
nickname VARCHAR(50) 昵称
avatar VARCHAR(500) 头像URL
signature VARCHAR(200) 个性签名
college VARCHAR(50) 学院
grade VARCHAR(20) 年级
gender TINYINT 性别(1男/2女)
birthday DATE 生日
background_image VARCHAR(500) 背景图URL
is_admin TINYINT 是否管理员(0否/1是)
status TINYINT 状态(0正常/1禁用)
warning_count INT 警告次数
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

posts(帖子表)

字段 类型 说明
id BIGINT 帖子ID(主键)
user_id BIGINT 用户ID(外键)
content TEXT 内容
images TEXT 图片列表(JSON数组)
video VARCHAR(500) 视频URL
video_cover VARCHAR(500) 视频封面URL
anonymous TINYINT 是否匿名(0否/1是)
topic_id BIGINT 话题ID(外键)
circle_id BIGINT 圈子ID(外键)
mood VARCHAR(20) 心情标签
likes INT 点赞数(缓存)
comments INT 评论数(缓存)
status TINYINT 状态(0待审核/1正常/2删除)
is_top TINYINT 是否置顶(0否/1是)
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

comments(评论表)

字段 类型 说明
id BIGINT 评论ID(主键)
post_id BIGINT 帖子ID(外键)
user_id BIGINT 用户ID(外键)
content TEXT 评论内容
parent_id BIGINT 父评论ID(回复)
likes INT 点赞数(缓存)
is_top TINYINT 是否置顶(0否/1是)
status TINYINT 状态(0正常/1删除)
created_at DATETIME 创建时间

likes(点赞表)

字段 类型 说明
id BIGINT 点赞ID(主键)
user_id BIGINT 用户ID(外键)
post_id BIGINT 帖子ID(外键)
created_at DATETIME 创建时间

collects(收藏表)

字段 类型 说明
id BIGINT 收藏ID(主键)
user_id BIGINT 用户ID(外键)
post_id BIGINT 帖子ID(外键)
created_at DATETIME 创建时间

follows(关注表)

字段 类型 说明
id BIGINT 关注ID(主键)
user_id BIGINT 用户ID(关注者)
follow_id BIGINT 被关注者ID
created_at DATETIME 创建时间

circles(圈子表)

字段 类型 说明
id BIGINT 圈子ID(主键)
name VARCHAR(50) 圈子名称(唯一)
description VARCHAR(500) 圈子描述
icon VARCHAR(500) 圈子图标
member_count INT 成员数(缓存)
post_count INT 帖子数(缓存)
sort_order INT 排序顺序
status TINYINT 状态(0正常/1禁用)
created_at DATETIME 创建时间

notices(通知表)

字段 类型 说明
id BIGINT 通知ID(主键)
type VARCHAR(20) 类型(system/activity/version)
title VARCHAR(100) 标题
content TEXT 内容
is_pinned TINYINT 是否置顶(0否/1是)
status TINYINT 状态(0草稿/1已发布)
publish_time DATETIME 发布时间
created_at DATETIME 创建时间

tickets(举报工单表)

字段 类型 说明
id BIGINT 工单ID(主键)
type VARCHAR(20) 类型(post/user/comment/system)
target_id BIGINT 目标ID(帖子/用户/评论)
reporter_id BIGINT 举报人ID
title VARCHAR(100) 工单标题
content TEXT 举报内容
reason VARCHAR(50) 举报原因
priority VARCHAR(20) 优先级(low/medium/high/urgent)
status VARCHAR(20) 状态(pending/processing/resolved/closed)
handle_note TEXT 处理备注
handled_by BIGINT 处理人ID
created_at DATETIME 创建时间

十三、开发指南

13.1 开发模式

13.1.1 前端开发

cd love

# 微信小程序开发模式
npm run dev:mp-weixin

# H5开发模式
npm run dev:h5

使用 HBuilderX(推荐)

  1. 打开 HBuilderX
  2. 文件 → 打开目录 → 选择 love 目录
  3. 运行 → 运行到小程序模拟器 → 微信开发者工具

13.1.2 后端开发

cd loveapp-admin

# 开发模式(使用 nodemon 自动重启)
npm run dev

# 生产模式
npm start

13.2 代码规范

13.2.1 JavaScript 规范

  • 使用 ES6+ 语法
  • 使用 const/let 代替 var
  • 箭头函数优先
  • 异步操作使用 async/await
  • 使用模板字符串代替字符串拼接

13.2.2 Vue 规范

  • 使用组合式 API(Composition API)
  • 组件名使用 PascalCase
  • 文件名使用 kebab-case
  • 模板中使用 2 空格缩进
  • 使用 <script setup> 语法

13.2.3 SCSS 规范

  • 使用变量定义颜色和字体大小
  • 使用嵌套规则
  • 使用 mixin 复用样式
  • 使用 BEM 命名规范

13.2.4 后端规范

  • Controller 层只负责请求处理和响应
  • Service 层负责业务逻辑
  • Model 层定义数据结构
  • 使用统一的错误处理

13.3 调试技巧

13.3.1 前端调试

  1. 使用微信开发者工具调试
  2. 在 HBuilderX 中设置断点
  3. 使用 console.log 输出调试信息
  4. 使用 uni.showToast 显示临时提示

13.3.2 后端调试

# 查看 PM2 日志
pm2 logs loveapp-admin

# 查看实时日志
pm2 logs loveapp-admin --stream

# 开发模式下调试
npm run dev

13.3.3 数据库调试

-- 查看最近的帖子
SELECT * FROM posts ORDER BY created_at DESC LIMIT 10;

-- 查看用户信息
SELECT id, nickname, avatar, created_at FROM users LIMIT 20;

-- 查看未处理的工单
SELECT * FROM tickets WHERE status = 'pending';

13.4 添加新功能

13.4.1 添加新页面(前端)

  1. love/pages/ 目录下创建新目录
  2. 创建 page.vue 文件
  3. love/pages.json 中注册页面
  4. love/utils/api.js 中添加 API 方法

13.4.2 添加新接口(后端)

  1. loveapp-admin/controllers/ 目录下创建新控制器
  2. loveapp-admin/routes/index.js 中注册路由
  3. loveapp-admin/models/ 目录下创建新模型(如需要)

十四、常见问题

14.1 前端连接后端失败

原因:URL 配置错误或网络不通

解决

  1. 检查 love/utils/config.js 中的 BASE_URL 是否正确
  2. 检查服务器防火墙是否开放 3000 端口
  3. 检查 Nginx 配置是否正确
  4. 使用 curl http://服务器IP:3000/api/banners 测试后端是否正常

14.2 图片上传失败

原因:文件权限不足或路径错误

解决

  1. 检查 uploads 目录权限:chmod -R 755 uploads
  2. 检查 .env 中的 UPLOAD_PATH 是否正确
  3. 检查 Nginx 是否配置了 /uploads/ 路由
  4. 检查文件大小是否超过限制(默认 10MB)

14.3 微信登录失败

原因:AppID 或 AppSecret 配置错误

解决

  1. 检查 .env 中的 WECHAT_APPID 和 WECHAT_APPSECRET
  2. 检查微信公众平台的 AppID 和 AppSecret 是否正确
  3. 检查微信小程序是否已发布(测试号可直接使用)
  4. 检查服务器域名是否在微信公众平台配置

14.4 数据库连接失败

原因:数据库配置错误

解决

  1. 检查 .env 中的数据库配置
  2. 检查数据库是否已创建
  3. 检查数据库用户权限
  4. 使用 mysql -u 用户名 -p 测试数据库连接

14.5 PM2 启动失败

原因:端口被占用或依赖缺失

解决

  1. 检查端口是否被占用:lsof -i :3000
  2. 检查依赖是否安装:npm install
  3. 查看 PM2 日志:pm2 logs loveapp-admin

14.6 小程序审核被拒

常见原因

  1. 服务器域名未配置:在微信公众平台配置服务器域名
  2. 隐私协议缺失:添加用户协议和隐私政策页面
  3. 功能描述不符:准备功能页面截图,确保描述准确
  4. 敏感内容:检查是否包含敏感内容

14.7 帖子发布后不显示

原因:帖子需要审核

解决

  1. 登录管理后台
  2. 进入「帖子管理」→「待审核」
  3. 审核通过后帖子即可显示

14.8 圈子名称重复

原因:圈子名称需要唯一

解决

  • 创建或更新圈子时,系统会自动检查名称是否重复
  • 选择不同的圈子名称

十五、版本更新记录

v1.0.0

  • 初始版本发布
  • 基础表白功能(发布、浏览、点赞、评论)
  • 管理后台(用户管理、帖子管理)

v1.1.0

  • 新增圈子功能(圈子列表、加入圈子、圈子帖子)
  • 新增话题功能(话题列表、话题帖子)
  • 新增弹幕功能
  • 新增收藏功能

v1.2.0

  • 优化用户体验
  • 统一 URL 配置管理(前端/后端)
  • 点赞收藏状态颜色统一(粉红色 #ff2d78 / 黄色 #ffc107)
  • 粒子效果动画(表情扩散)
  • 帖子卡片长按操作(举报、拉黑、删除)
  • 系统通知分类(系统公告/活动通知/版本更新)
  • 举报工单处理(自动发送系统通知)
  • 圈子名称唯一校验

v1.3.0

  • 新增个人主页统计区域(紫色半透明背景)
  • 编辑资料页左右布局优化
  • 消息红点自动更新(切换 Tab 时刷新)
  • 管理员权限优化(帖子置顶、评论置顶)
  • 图片审核(腾讯云内容安全)
  • 邮箱找回密码功能

十六、许可证

MIT License

MIT License

Copyright (c) 2024 校园表白墙

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

本项目仅供学习交流使用,请勿用于商业用途。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。