一个基于微信小程序云开发的协会招新报名系统,集成了报名管理、录取查询、AI助手等功能。
本小程序为AIU协会设计,提供完整的招新报名流程管理,包括学生报名、管理员审核、录取查询等功能,并集成Dify AI助手提供智能问答服务。
- 展示协会基本信息
- 提供公众号二维码和官网链接
- 集成AI聊天机器人(点击展开)
- 隐藏彩蛋:连续点击Logo 8次进入管理员登录
- 表单字段:
- 基本信息:姓名、手机号、微信号、出生日期、性别、政治面貌
- 学业信息:学院、年级、专业/班级
- 志愿选择:第一志愿、第二志愿(运营部/外联部/创智部/宣传部)、是否服从调剂
- 个人材料:个人简介、其他说明、头像上传
- 功能特性:
- 本地草稿自动保存
- 表单验证(手机号格式、必填项检查)
- 重复提交自动覆盖旧数据(基于openid去重)
- 头像上传至云存储
- 左右滑动切换页面
- 三阶段进度条:未报名 → 面试 → 录取结果
- 实时查询录取状态(基于openid)
- 显示录取部门或拒绝原因
- 支持下拉刷新
- 集成Dify聊天机器人
- 流式响应(SSE)
- 美观的聊天界面
- 支持多轮对话
- AI头像居中显示
- 访问方式:在"了解协会"页面连续点击Logo 8次
- 密码保护:默认密码
1433223 - 功能模块:
- 查看所有报名学生列表
- 按志愿部门筛选
- 按录取状态筛选(面试中/已录取/已拒绝)
- 搜索功能(姓名/手机号)
- 点击学生查看详细信息(含头像)
- 录取/拒绝操作(指定录取部门)
- 框架:微信小程序原生开发
- UI组件:
- Picker(日期/性别/志愿选择)
- Switch(服从调剂)
- Scroll-view(聊天消息列表)
- 自定义TabBar
- 本地存储:wx.Storage(表单草稿)
- 手势交互:左右滑动切换页面
- 云开发:腾讯云微信小程序云开发
- 云函数:
quickstartFunctions(统一入口) - 云数据库:
signup:学生报名数据(含openid、status、志愿等)admissions:管理员录取决策
- 云存储:头像图片、小程序码
- 第三方API:Dify AI(聊天机器人)
- 后续目标:重新设计后端,使用MySQL
getOpenId:获取用户openidsignupSubmit:提交/更新报名(upsert)signupGetStatus:查询个人录取状态adminUpsertAdmission:管理员录取/拒绝操作difyChat:AI聊天(云端代理)createApplications:创建报名集合getMiniProgramCode:生成小程序码
POST /api/signup:网站报名接口(按手机号去重)GET /api/status?mobile=xxx:查询录取状态POST /api/admissions:管理员录取接口(需Token认证)
{
_id: "自动生成",
openid: "用户openid",
name: "姓名",
mobile: "手机号",
wechat: "微信号",
birth: "出生日期",
gender: "性别",
political: "政治面貌",
college: "学院",
grade: "年级",
majorClass: "专业/班级",
firstChoice: "第一志愿",
secondChoice: "第二志愿",
adjustable: true/false,
intro: "个人简介",
other: "其他说明",
avatarUrl: "头像云存储fileID",
status: "interview/admitted/rejected",
createdAt: "创建时间",
updatedAt: "更新时间"
}{
_id: "自动生成",
openid: "用户openid",
name: "姓名",
mobile: "手机号",
status: "admitted/rejected/interview",
department: "录取部门",
createdAt: "创建时间",
updatedAt: "更新时间"
}在云开发控制台配置以下环境变量:
# Dify AI配置
DIFY_API_BASE=https://api.dify.ai
DIFY_API_KEY=your_dify_api_key
DIFY_APP_ID=your_dify_app_id
# 管理员权限配置
ADMIN_OPENIDS=openid1,openid2,openid3 # 管理员openid列表(逗号分隔)
ADMIN_TOKEN=your_secure_token # HTTP接口认证Token- 云环境ID:在
miniprogram/app.js中配置
env: "cloud1-2g8fmz4264601283" // 替换为你的云环境ID- Dify配置:在
miniprogram/app.js中配置
globalData: {
dify: {
apiBase: "https://api.dify.ai/v1",
apiKey: "your_dify_api_key"
}
}git clone <repository_url>
cd AIU报名小程序- 在微信开发者工具中打开项目
- 点击"云开发"按钮,开通云开发服务
- 创建云环境并记录环境ID
# 右键 cloudfunctions/quickstartFunctions 文件夹
# 选择"上传并部署:云端安装依赖"或使用命令行:
cd cloudfunctions/quickstartFunctions
npm install
# 在开发者工具中右键上传- 进入云开发控制台
- 选择"云函数" → "quickstartFunctions" → "配置"
- 添加环境变量(见上文"云函数环境变量")
- 云开发控制台 → 云函数 → quickstartFunctions
- 开启"HTTP触发"
- 记录触发路径(供外部网站调用)
将以下图片上传到 miniprogram/images/ 目录:
AIU会标.png:协会Logo报名.png、录取查询.png、了解协会.png:功能图标tab/目录:底部导航栏图标(普通+激活状态)official_qr.png:公众号二维码
- 在微信开发者工具中点击"编译"
- 真机预览或上传体验版
AIU报名小程序/
├── cloudfunctions/ # 云函数
│ └── quickstartFunctions/ # 统一云函数入口
│ ├── index.js # 主逻辑
│ ├── package.json # 依赖配置
│ └── config.json # 云函数配置
├── miniprogram/ # 小程序前端
│ ├── app.js # 全局配置
│ ├── app.json # 页面路由、tabBar配置
│ ├── app.wxss # 全局样式
│ ├── pages/
│ │ ├── about/ # 了解协会页
│ │ ├── apply/ # 报名页
│ │ ├── query/ # 录取查询页
│ │ ├── chat/ # AI助手页
│ │ └── admin/ # 管理员后台
│ │ ├── login.js # 登录页
│ │ ├── index.js # 学生列表页
│ │ └── detail.js # 学生详情页
│ └── images/ # 图片资源
├── README.md # 项目说明
└── project.config.json # 项目配置
-
首次使用:
- 打开小程序,进入"了解协会"页面
- 点击"报名"进入报名表单
- 填写完整信息后提交
-
查询录取:
- 点击底部"录取查询"
- 自动显示当前录取状态
- 下拉刷新获取最新状态
-
AI咨询:
- 点击底部"AI助手"
- 输入问题获取智能回答
-
登录:
- 在"了解协会"页面连续点击Logo 8次
- 输入密码
1433223
-
审核报名:
- 查看学生列表
- 使用筛选/搜索功能定位学生
- 点击学生查看详情
- 点击"录取"或"拒绝"按钮
-
批量操作:
- 使用部门筛选查看特定志愿
- 逐个审核并录取
-
权限配置:
- 管理员openid需提前配置到环境变量
- HTTP接口需配置Token防止未授权访问
-
数据安全:
- 学生数据仅管理员可见
- 云函数自动鉴权(基于openid)
- 敏感操作需二次确认
-
性能优化:
- 图片上传前自动压缩
- 列表数据分页加载(默认50条)
- 聊天记录本地缓存
-
兼容性:
- 支持微信基础库 2.10.0+
- 需开启云开发权限
- 建议使用最新版微信客户端
- 检查云环境ID是否正确
- 确认云函数已成功部署
- 查看云函数日志排查错误
- 检查Dify环境变量配置
- 确认API Key有效
- 查看网络请求是否成功
- 确认openid已添加到ADMIN_OPENIDS
- 检查密码是否正确(默认1433223)
- 清除缓存后重试
- 已实现基于openid的upsert逻辑
- 检查云函数signupSubmit是否正常
- 查看数据库是否有重复记录
- 微信云开发文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html
- Dify文档:https://docs.dify.ai/
- 开发人员微信:clf3047076929(有需要可直接询问)
第六届AIU创智部部长陈林峰
本项目仅供AIU协会内部使用。
1.完善管理员界面,方便录取
2.内嵌网页(需要https,AIU的网站目前仍是http)
3.完成企业验证,才能上线小程序。