# campus-memo **Repository Path**: frailty/campus-memo ## Basic Information - **Project Name**: campus-memo - **Description**: 校园备忘录小程序,一个微信原生小程序练手项目 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-07 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园备忘录小程序 - 部署说明 > 基于微信小程序云开发技术,适用于校园学生、教师、社团管理者的日常事务管理系统。 --- ## 一、项目结构 ``` campus-memo/ ├── miniprogram/ # 小程序前端代码 │ ├── app.js # 全局逻辑(登录、云环境初始化) │ ├── app.json # 全局配置(页面路由、TabBar) │ ├── app.wxss # 全局样式 │ ├── utils/ │ │ └── util.js # 工具函数(日期格式化、角色标签等) │ └── pages/ │ ├── login/ # 登录页(微信授权 + 角色选择) │ ├── index/ # 首页(备忘录列表 + 统计) │ ├── memo-edit/ # 备忘录新建/编辑页 │ ├── memo-detail/ # 备忘录详情页 │ ├── category/ # 分类管理页 │ ├── remind/ # 提醒通知页 │ ├── search/ # 搜索页 │ ├── share/ # 协作共享页 │ ├── profile/ # 个人中心 + 意见反馈 │ ├── teacher/ # 教师管理台 │ ├── club/ # 社团管理台 │ └── admin/ # 系统管理员台 ├── cloudfunctions/ # 云函数 │ ├── sendRemind/ # 定时提醒推送(需配置定时触发器) │ ├── checkPermission/ # 权限校验 │ ├── getStats/ # 数据统计 │ └── initDB/ # 数据库初始化(一次性执行) └── project.config.json # 微信开发者工具项目配置 ``` --- ## 二、快速开始 ### 第 1 步:导入项目 1. 打开 **微信开发者工具**(建议 1.06 及以上版本) 2. 点击「导入项目」 3. 选择本项目根目录 `campus-memo/` 4. 填入你的小程序 **AppID**(在微信公众平台申请) 5. 勾选「使用云开发」 ### 第 2 步:创建云开发环境 1. 在微信开发者工具中点击「云开发」按钮 2. 开通云开发,创建一个环境(记住环境 ID,如 `campus-memo-xxxx`) 3. 打开 `miniprogram/app.js`,将 `YOUR_ENV_ID` 替换为你的环境 ID: ```js wx.cloud.init({ env: 'YOUR_ENV_ID', // ← 替换这里 traceUser: true }); ``` ### 第 3 步:创建数据库集合 在云开发控制台 → 数据库,依次创建以下集合(权限均设为「所有用户可读,仅创建者可写」,system_config 设为「仅管理员可读写」): | 集合名 | 说明 | 权限建议 | |---|---|---| | `user` | 用户信息 | 所有用户可读,仅创建者可写 | | `memo` | 备忘录 | 所有用户可读,仅创建者可写 | | `category` | 分类 | 所有用户可读,仅创建者可写 | | `memo_log` | 操作日志 | 所有用户可读,仅创建者可写 | | `notification` | 通知提醒 | 所有用户可读,仅创建者可写 | | `feedback` | 意见反馈 | 所有用户可读,仅创建者可写 | | `system_config` | 系统配置 | 仅管理员可读写 | ### 第 4 步:部署云函数 在微信开发者工具中,右键点击 `cloudfunctions/` 下的每个云函数目录,选择「上传并部署(云端安装依赖)」: - `checkPermission` — 权限校验 - `getStats` — 数据统计 - `initDB` — 数据库初始化(部署后在云函数控制台手动触发一次) - `sendRemind` — 提醒推送(需配置定时触发器,见下方说明) ### 第 5 步:配置定时触发器(提醒推送) 在云函数控制台 → `sendRemind` → 配置触发器: ```json { "triggers": [ { "name": "remind_timer", "type": "timer", "config": "*/5 * * * * *" } ] } ``` > 每 5 分钟检查一次待发送提醒。 ### 第 6 步:配置订阅消息(可选) 如需真实推送提醒通知: 1. 在微信公众平台 → 订阅消息,申请「备忘提醒」类模板 2. 将模板 ID 填入 `cloudfunctions/sendRemind/index.js` 中的 `YOUR_TEMPLATE_ID` 3. 重新部署 `sendRemind` 云函数 --- ## 三、用户角色说明 | 角色 | 标识 | 功能权限 | |---|---|---| | 学生 | `student` | 备忘录增删改查、分类管理、提醒设置、搜索 | | 教师 | `teacher` | 学生所有功能 + 教师管理台(发布作业/考试通知) | | 社团管理者 | `club_admin` | 学生所有功能 + 社团管理台(活动备忘、成员共享) | | 系统管理员 | `admin` | 所有功能 + 系统管理台(用户管理、内容管理、反馈处理) | > 首次登录时,用户可选择角色。管理员账号需在数据库中手动将 `user.role` 字段改为 `admin`。 --- ## 四、数据库字段说明 ### user 集合 | 字段 | 类型 | 说明 | |---|---|---| | `openid` | String | 微信 openid(唯一标识) | | `nick_name` | String | 微信昵称 | | `real_name` | String | 真实姓名 | | `avatar_url` | String | 头像 URL | | `role` | String | 角色:student/teacher/club_admin/admin | | `student_id` | String | 学号(学生填写) | | `status` | String | 状态:active/banned | | `create_time` | Date | 注册时间 | ### memo 集合 | 字段 | 类型 | 说明 | |---|---|---| | `openid` | String | 创建者 openid | | `title` | String | 标题 | | `content_html` | String | 正文(富文本 HTML) | | `category_id` | String | 分类 ID | | `tags` | Array | 标签列表 | | `status` | String | 状态:published/draft/archived | | `remind_time` | Date | 提醒时间 | | `remind_frequency` | String | 提醒频率:once/daily/weekly/workday | | `is_collaborative` | Boolean | 是否开启协作 | | `share_list` | Array | 共享成员 openid 列表 | | `attachments` | Array | 附件列表(含 fileID) | | `create_time` | Date | 创建时间 | | `update_time` | Date | 更新时间 | --- ## 五、常见问题 **Q: 登录后显示"环境未初始化"?** A: 检查 `app.js` 中的云环境 ID 是否正确,并确认云开发已开通。 **Q: 数据库读取失败?** A: 检查集合的权限设置,确保已按上方说明配置。 **Q: 提醒推送不生效?** A: 确认已配置定时触发器,且用户已在小程序内授权订阅消息。 **Q: 如何设置管理员账号?** A: 先正常登录小程序,然后在云开发数据库控制台找到该用户记录,将 `role` 字段改为 `admin`。 --- ## 六、技术栈 - **前端**:微信小程序原生(WXML + WXSS + JS) - **后端**:微信云开发(云数据库 + 云函数 + 云存储) - **数据库**:云数据库(MongoDB 兼容) - **推送**:微信订阅消息 API --- *本项目由 Manus AI 根据开题报告自动生成,仅供学习参考。*