> 这是《从零开发校园墙微信小程序》系列的第 0 篇。系列根据我真实在跑的项目「培正森林」重写,文中代码都来自生产代码(密钥与内部地址已脱敏)。 ## 它是什么 「培正森林」是给广东培正学院做的**校园墙 / 表白墙** 微信小程序。同学在小程序里写下一段话、配几张图,投稿就会出现在「墙」上;别人可以浏览、评论、回复。除此之外,它还顺手做了几件校园里很实用的事: * **课表** :绑定教务账号后拉取课表(强智教务),按教学周展示,还能导出、分享成卡片; * **考试倒计时** :自己添加考试,看剩余天数,一键加到手机日历; * **文章 / 公告** :管理员在后台发布,小程序里展示; * **问题反馈** :用户提交,后台回复,开发者邮箱收每日汇总; * **管理后台** :审核、封禁、敏感词、配置、审计日志都能在网页里操作。 ## 一个关键设计:墙就是一个微博账号 很多人第一次看会好奇:投稿存在哪里? 项目的「墙」**建在微博之上** :小程序把投稿发给后端,后端做完校验后,通过微博开放平台接口,以墙号的身份发一条微博;同时把这条微博**镜像一份到自己的数据库** ,小程序读墙时读的是自己的库,而不是实时去调微博。 这样做有三个好处: 1. 墙天然有一个公开出口,微博上的人也能看到; 2. 自己的库可以做搜索、分页、缩略图,速度不受微博接口限制; 3. 微博的评论也能被镜像回来,小程序里直接回复。 代价是要处理微博接口的**频率限制** 和**令牌失效** ,这会在后面的文章里反复出现。 ## 整体架构 ``` ┌──────────────────────┐ HTTPS ┌─────────────────────────────┐ │ 微信小程序(Taro) │ ───────────────────▶ │ 后端 Spring Boot (WebFlux) │ │ Vue3 + NutUI + Pinia │ ◀─────────────────── │ Sa-Token 鉴权 │ └──────────────────────┘ JSON │ MyBatis-Plus + R2DBC │ └───┬───────┬────────┬────────┘ ┌──────────────────────┐ │ │ │ │ 管理后台(Vue3+Vite) │ ───────────────────────▶ │ │ │ └──────────────────────┘ MariaDB Redis MinIO │ 业务数据 │ 会话/缓存 │ 图片 └──────────┬─┴────────────┘ ▼ 微博开放平台 API 微信接口(登录 / 内容安全) ``` ## 技术栈 层 | 选型 | 说明 ---|---|--- 小程序 | Taro 3.6 + Vue3(` 发表评论 取消回复 使用cookie技术保留您的个人信息以便您下次快速评论,继续评论表示您已同意该条款 评论 * 私密评论 名称 * 🎲 邮箱 * 地址 发表评论 提交中...