【教培管家】后台订单管理与预约确认

目录

⏳ 前情回顾

在上一讲中,我们完成了支付闭环:从统一下单到支付回调。目前支付成功后,系统会自动更新订单为"已支付、待确认"状态。

今天,我们将聚焦于后台教务管理,引入系统"心脏"------签到/课消记录表,并实现管理员一键确认预约、同步生成排课记录的核心功能。


🎯 本节目标

  1. "核心心脏"架构理解 :深入理解 Attendances 表作为教务枢纽的设计。
  2. 后台订单管理搭建:创建预约管理页面,配置数据表格与筛选。
  3. 确认预约逻辑实现 :编写 confirmBooking 方法,实现订单状态更新与课表记录生成。

第一步:教务"心脏"------数据结构设计

既然我们已经确定了以 【签到/课消记录表】 为核心的架构,那么这张表就是整个教务系统的"心脏"。它连接了学员、排课、老师甚至财务课消。

学员课表

Attendances这张表记录了"谁、在什么时候、上了什么课、结果如何"。

字段名称 字段标识 类型 说明
关联学员 child_id 关联关系 关联 Children
关联排课 schedule_id 关联关系 关联 Schedule
关联订单 booking_id 关联关系 关联 Bookings
课程类型 type 枚举 1: 体验课, 2: 正课
上课日期 lesson_date 日期 冗余字段,方便快速查询
开始时间 start_time 文本 从排课表同步过来的时间点
状态 status 枚举 1: 待签到, 2: 到课, 3: 请假, 4: 旷课
预计消耗 cost_count 数字 本次上课预计消耗课时 (正课1.0, 体验课0)
实际扣除 actual_cost 数字 老师点名后实际扣除的课时
执教老师 teacher_id 关联关系 从排课表同步的老师 ID
数据来源 source 枚举 1: 计划任务, 2: 手动添加
确认时间 confirm_time 日期时间 老师点名确认的具体时间
课堂备注 remark 文本 老师填写的课堂表现或备注

第二步:后台订单管理搭建

打开管理后台,点击创建页面的图标

创建预约管理页面

添加布局组件

添加数据表格组件

数据模型选择学员课表,勾选场景

添加筛选条件

切换到布局模型,添加菜单

按照同样的操作继续创建预约管理,数据模型选择预约表


第三步:确认预约逻辑实现 (核心衔接)

当管理员点击"确认预约"时,系统需要同时完成"订单状态更新"和"写入课表记录"。

打开预约管理页面,在操作列添加按钮,修改为确认预约

在代码区添加自定义方法,方法名改为confirmBooking

javascript 复制代码
export default async function ({ event, data }) {
  const booking = data.target; // 获取当前行数据
  console.log("booking",booking)
  try {
    $w.utils.showLoading({ title: '处理中...' });

    // 1. 更新订单状态为"已确认"
    await $w.cloud.callDataSource({
      dataSourceName: 'Bookings',
      methodName: 'wedaUpdateV2',
      params: {
        data: {
          confirmStatus: '2' // 已确认
        },
        filter: {
          where: {
            _id: { $eq: booking._id }
          }
        }
      }
    });

    // 2. 写入"心脏"表 (Attendances)
    // 从关联的排课信息中获取时间、日期、老师等冗余字段
    await $w.cloud.callDataSource({
      dataSourceName: 'Attendances',
      methodName: 'wedaCreateV2',
      params: {
        data: {
          child_id: { _id: booking.child_id._id },
          schedule_id: { _id: booking.schedule_id._id },
          booking_id: { _id: booking._id },
          type: booking.type,
          lesson_date: booking.schedule_id.date, // 同步日期
          start_time: booking.schedule_id.startTime, // 同步时间
          teacher_id: { _id: booking.teacher_id._id }, // 同步老师
          status: '1', // 待签到
          cost_count: booking.type === '1' ? 0 : 1, // 体验课不消课
          source: '2' // 手动添加/后台触发
        }
      }
    });

    $w.utils.showToast({ title: '确认成功,已同步至课表', icon: 'success' });
    $w.table1.refresh();
  } catch (e) {
    console.error("确认预约失败", e);
    $w.utils.showToast({ title: '操作失败', icon: 'error' });
  } finally {
    $w.utils.hideLoading();
  }
}

给按钮配置点击事件,调用我们的方法,传入所在行的数据

给按钮绑定条件展示,当确认排课等于1的时候显示


最终效果

教务登录系统看到一条排课信息

点击确认预约,自动将排课写入到学员课表表里


🚀 总结

通过本节课,我们确立了以 Attendances 表为核心的教务架构,并实现了从后台手动确认预约到生成课表记录的完整闭环。这为学员端查看课表打下了坚实的数据基础。

下一讲,我们将转战小程序端,实现:学员端"我的课表"展示与签到

相关推荐
Rooting++4 小时前
小程序{{ }}和vue{{ }}语法的区别
前端·vue.js·小程序
博、、8 小时前
折扣卡CPS系统源码实战开发指南:从架构设计到落地部署全解析
小程序·需求分析
lhldsg11 小时前
折扣卡CPS小程序定制全流程实战指南:从需求分析到上线部署
java·前端·小程序
suliqiang12 小时前
【前端技术】 Web 前端技术36年 演进全景图
信息可视化·微信小程序·小程序·前端框架·uni-app·人机交互·xcode
梦梦代码精21 小时前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
weixin_493503671 天前
商会小程序附件上传:分片上传 + OSS 直传完整实现(Vue3 + 阿里云 OSS 实战)
阿里云·小程序·云计算
优度网1 天前
微信小程序主体变更公证书线上办理流程与业务交接风险规避方法浅析(2026)
小程序
m0_587383001 天前
外卖CPS系统开发实战:从架构设计到运营落地全指南
java·spring·小程序·架构·需求分析
T01156181 天前
全栈项目实战手记|艺培场馆课时预约小程序 PC 管理端 Demo 完整开发成果展示
小程序
凡泰AI1 天前
如何为政务 APP 搭建开放平台,实现多部门、第三方供应商标准化入驻与统一管理
android·大数据·小程序·uni-app·app·政务