从0到1:大学生活动社交小程序设计与实现(一)

0 阅读3分钟

概要

本设计旨在开发一款基于微信小程序平台的大学生活动社交小程序。系统利用腾讯微信云开发技术(Cloud Base),实现了无需自建服务器和域名的轻量级部署。主要功能包括活动发布与搜索、活动评价、打卡记录(学习、阅读、文艺、体育等)、排行榜及后台管理系统。该系统旨在帮助大学生更好地组织参与活动,扩展社交圈子,并通过打卡功能辅助时间管理与目标达成。

系统相关技术

后端采用腾讯提供的云开发解决方案,核心优势包括:

  • 免运维:无需购买服务器和域名,无需配置防火墙。
  • 安全性高:采用腾讯内部链路,防DDOS攻击。
  • 弹性扩展: 资源配额可随业务发展动态调整。
核心组件:
  • 云函数 (Cloud Functions): 运行在云端的Node.js代码,处理核心业务逻辑。
  • 云数据库 (Cloud Database): JSON格式的NoSQL数据库。
  • 云存储 (Cloud Storage): 用于存储图片、视频等资源。
  • 云调用: 直接调用微信原生接口。

系统需求分析

首页与公告:展示公告通知、校园风采。
活动模块:
  • 活动分类与列表展示。
  • 活动搜索(按兴趣)。
  • 活动详情查看(时间、地点、费用等)。
  • 活动报名(支持自定义表单字段:姓名、性别、身份证、手机号等)。
  • 活动评价与反馈。
  • “我的活动报名”记录查询。
打卡模块:
  • 每日打卡(学习、阅读、文艺、体育等类别)。
  • 打卡项目列表管理。
  • 每日动态记录。
  • 打卡排行榜。
  • “我的每日打卡”记录查询。
个人中心:
  • 设置入口(含后台管理登录)。
  • 用户信息管理。 在这里插入图片描述

数据库设计

用户 (User): 存储用户基本信息及角色。 活动 (Activity): 存储活动详情(时间、地点、费用、自定义表单配置)。 报名记录 (Enrollment): 关联用户与活动,存储报名填写的具体信息及审核状态。 评价 (Comment): 用户对活动的评价。 打卡项目 (CheckinItem): 定义的打卡类型(如晨跑、阅读)。 打卡记录 (CheckinRecord): 用户具体的每日打卡数据。

{
  "_id": "activity_001",
  "title": "周末篮球赛",
  "category": "体育",
  "time": "2023-10-20 14:00",
  "location": "东区篮球场",
  "fee": 0,
  "formConfig": ["name", "phone", "student_id"], // 自定义收集字段
  "publisherId": "openid_xxx",
  "status": "active", // active, ended
  "createTime": "timestamp"
}

{
  "_id": "enroll_001",
  "activityId": "activity_001",
  "userId": "openid_xxx",
  "formData": {
    "name": "张三",
    "phone": "13800000000",
    "student_id": "2020001"
  },
  "auditStatus": "pending", // pending, approved, rejected
  "createTime": "timestamp"
}

{
  "_id": "record_001",
  "userId": "openid_xxx",
  "itemId": "item_sport_001",
  "date": "2023-10-20",
  "content": "跑步5公里",
  "images": ["cloudID://..."],
  "createTime": "timestamp"
}

系统实现

// cloudfunctions/mcloud/index.js (示例)
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
const db = cloud.database();

exports.main = async (event, context) => {
  const { activityId, formData, userId } = event;
  
  // 1. 检查活动是否存在及是否结束
  const activity = await db.collection('activities').doc(activityId).get();
  if (!activity.data || activity.data.status === 'ended') {
    return { code: 500, msg: '活动不存在或已结束' };
  }

  // 2. 插入报名记录
  try {
    await db.collection('enrollments').add({
      data: {
        activityId,
        userId,
        formData,
        auditStatus: 'pending', // 默认待审核
        createTime: db.serverDate()
      }
    });
    return { code: 200, msg: '报名成功,等待审核' };
  } catch (err) {
    return { code: 500, msg: '报名失败', err };
  }
};

系统测试

测试模块测试项预期结果实际结果
活动报名提交报名信息提示成功,后台可见待审核记录通过
活动搜索关键词搜索列表筛选出匹配活动通过
打卡功能上传图片打卡图片上传成功,记录存入数据库通过
后台管理管理员登录admin/123456 登录成功通过
数据导出导出报名名单生成Excel文件并下载通过

UI设计

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

后台管理系统

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

代码下载 from git

点击下载