艺培场馆课时预约小程序用户端 & 后台联动踩坑下篇(排课核销、定时任务、教师端联动、弱网并发、页面交互异常)

承接第五篇联动上篇,本篇聚焦剩余全部非底层安全类问题:核销与爽约跨端同步、教师端与管理员后台的数据联动、云开发定时任务业务异常、网络弱网并发场景、三端视图渲染、遗留体验类缺陷。 纯后台内部 Bug 回看第四篇;预约课时缓存类联动回看第五篇;Token 安全、分包、PC 管理端 Demo 放到第七篇。 全部案例来自三端整体功能测试,格式统一:现象 → 根因分析 → 修复方案 → 开发启示。

一、核销、爽约业务跨三端联动踩坑

坑 1:后台管理员撤销核销,学员端课时不即时刷新

现象:管理员后台执行撤销核销,数据库课时已经返还;学员打开个人套餐、消费流水页面,仍然显示扣减后的旧课时,需要下拉刷新才看到返还后的课时。

根因:学员端课时、流水页面存在内存缓存;撤销核销是后台逆向操作,客户端没有感知,页面不会主动刷新。

修复方案:课时、流水页面onShow每次进入强制拉取最新数据;撤销核销完成后下发订阅消息提醒学员课时变动。

开发启示:撤销、回滚这类逆向业务,同样会改变用户资产,客户端页面进入必须重新拉取服务端数据。

坑 2:教师端标记学员爽约,后台预约状态不同步

现象:教师在教师端把学员标记爽约;管理员后台打开该排班预约列表,学员状态仍然是未上课,爽约标记没有同步到后台。

根因:教师端爽约标记只写教师端本地视图,没有调用公共的爽约记录写入接口;没有更新数据库预约记录的爽约字段。

修复方案:教师端标记爽约调用统一公共接口,更新数据库预约记录爽约状态;后台、教师端读取同一套数据库字段展示状态。

开发启示:教师端属于后台能力裁剪出来的子端,所有写操作必须调用统一后端接口,禁止教师端只修改前端本地状态。

坑 3:教师端生成核销二维码,排班已取消仍然可以生成令牌

现象:管理员后台手动取消某条排班;教师端进入该排班依旧可以生成有效期 30 分钟核销二维码,学员扫码还可以完成核销扣课时。

根因:教师端生成二维码接口没有校验排班当前业务状态;只做简单的排班 ID 存在性判断。

修复方案:生成核销二维码接口增加排班状态校验;已取消、已过期、已结课排班禁止生成核销令牌。

开发启示:凭证、令牌生成接口,必须校验关联业务单据真实状态,不能只校验单据是否存在。

坑 4:同一学员,教师端和后台手动重复核销同一笔预约

现象:教师端正在核销学员,同时管理员后台对同一个学员做手动核销;并发情况下两次核销都执行成功,学员课时被重复扣减。

根因:核销接口缺少行级状态锁;没有先判断预约是否已经完成核销;并发请求同时读到 “未核销” 状态,双双执行扣课时。

修复方案

  1. 核销业务执行前查询预约状态,如果已经核销直接拦截;
  2. 使用云开发事务,保证「更新预约状态 + 扣减课时 + 写入核销记录」为原子操作,防止并发重复核销。

开发启示:扣减资产类业务,并发场景一定要做状态校验 + 事务保证原子性,避免重复扣减。

二、教师端与管理员后台联动问题

坑 5:教师端数据隔离失效,可以看到其他教师排班数据

现象:教师账号登录教师端,部分列表接口返回全部教师排班,不限于自己授课的班级,出现数据越权。

根因:部分排班查询接口,教师角色的过滤条件没有正确拼接;超级管理员角色过滤条件生效,教师角色忘记拼接teacherId过滤。

修复方案:封装角色鉴权查询中间件;教师身份自动在查询条件追加teacherId = 当前登录教师ID,强制过滤非本人授课数据。

开发启示:多角色数据隔离,不要在每一处业务手动写过滤;封装公共查询中间件,避免某一处接口漏掉过滤条件造成越权。

坑 6:后台修改教师可授课时间 / 休息日,教师端没有即时生效

现象:管理员后台修改教师每周可授课时间、休息日配置;教师端查看个人授课配置,依旧展示旧的休息日与可授课时段。

根因:教师端对教师档案做了本地缓存;后台修改教师档案之后教师端没有清除缓存。

修复方案:教师端个人信息、授课配置页面 onShow 重新拉取服务端教师档案数据,不使用长期缓存。

开发启示:后台会修改的角色配置信息,客户端不要持久缓存,每次进入页面拉取最新。

坑 7:教师端回复评价,后台评价列表看不到教师回复内容

现象:教师在教师端完成课程评价回复;管理员后台评价管理页面看不到这条教师回复,C 端学员端可以正常看到回复。

根因:教师端回复评价写入的数据库字段,和后台读取的回复字段不是同一个;字段命名不一致导致后台读取不到。

修复方案:统一评价回复数据库字段;教师端、管理员后台读写同一套回复字段。

开发启示:多端读写同一张数据表,字段命名、结构体必须严格对齐,避免出现写 A 字段读 B 字段这类低级错误。

三、云开发定时任务业务异常(服务端定时任务,引发三端状态不同步)

坑 8:定时任务 30 分钟校正排班预约状态,部分异常排班没有被更新

现象:部分早已过期的排班,定时任务没有自动把预约状态更新为已过期;三端页面一直显示未上课。

根因:定时任务云函数批量遍历数据,单次查询数量受限;部分记录没有被遍历到;部分异常脏数据的时间字段为 null,时间判断逻辑报错跳过该条记录。

修复方案

  1. 定时任务使用分页分批遍历全部数据,避免查询截断漏掉数据;
  2. 对时间字段做空值兜底判断,跳过脏数据或者标记异常日志。

开发启示:云开发定时任务批量处理数据,一定要做分页分批,注意边界脏数据会中断整个循环。

坑 9:定时任务执行失败无告警,业务异常完全无感知

现象:定时任务云函数因为接口报错、数据库超限异常终止;开发 / 运营人员完全不知道定时任务没有执行,大量预约状态不会自动流转。

根因:定时任务没有增加异常捕获、日志上报、告警通知逻辑。

修复方案:定时任务增加 try‑catch 捕获全部异常;执行完成输出执行统计日志;发生异常记录日志,通过订阅消息通知管理员。

开发启示:定时任务属于后台隐形业务,执行失败不会有页面反馈,必须增加异常捕获与告警。

坑 10:定时任务自动过期预约,没有返还学员冻结课时

现象:定时任务把超时预约状态改为已过期,但是没有执行课时返还;学员课时被冻结无法使用,也不会退回。

根因:定时任务只修改预约记录状态,没有调用预约取消公共函数,漏掉课时返还逻辑。

修复方案:定时任务触发预约过期,直接调用公共cancelAppointment()函数,统一完成状态变更、课时返还、流水写入。

开发启示:定时任务修改业务数据,不要直接写数据库;尽量服用已封装好的业务公共函数,保证业务逻辑和手动操作完全一致。

四、弱网、并发、三端视图渲染与遗留体验缺陷

坑 11:弱网环境教师端生成核销二维码延迟,重复点击生成多个令牌

现象:网络较差时,教师点击生成签到码,接口响应慢;教师重复点击按钮,生成多个不同有效期的核销二维码令牌。

根因:前端没有接口请求中 loading 置灰;重复点击触发多次接口调用,生成多条令牌记录。

修复方案:生成二维码按钮请求期间置灰 loading,禁止重复点击;后端校验同一个排班未结束只允许存在一个有效令牌,旧令牌自动失效。

开发启示:网络抖动场景,按钮防重复点击;后端也要做业务层限制,不能只靠前端 loading。

坑 12:后台排班周视图,大量排班数据渲染卡顿

现象:后台排班管理切换到周视图,当周排班数量很多的时候页面渲染卡顿,滚动不流畅。

根因:一次性渲染整周全部排班 DOM,没有做虚拟列表分页渲染。

修复方案:周视图做虚拟滚动,只渲染可视区域排班卡片;减少一次性渲染 DOM 节点数量。

开发启示:B 端日历、周视图,数据量大一定要做虚拟列表,否则页面会出现严重卡顿。

坑 13:批量排班存在多条冲突时,错误提示信息过于笼统

现象:后台批量生成排班,多条排班发生教师、教室冲突,仅提示 “部分排班失败”,看不到冲突明细。

第四篇讲后台侧,本篇站在三端联动视角:教师端、学员端也无法感知哪一些班次创建失败。

根因:批量接口只返回成功失败计数,没有返回失败明细列表;前端只展示计数,没有展示冲突详情。

修复方案:批量接口收集每一条失败记录的日期、冲突原因,返回明细数组;前端弹窗展示全部失败条目。

开发启示:批量操作,返回失败明细,降低排查问题成本。

坑 14:学员端超小屏手机课程介绍文本换行溢出

现象:在分辨率很小的手机上,课程详情课程介绍文本超出容器,出现文字溢出遮挡;大屏手机显示正常。

根因:文本容器写死高度,没有开启自动换行、文本溢出处理。

修复方案:调整 css 样式,开启自动换行;超长文本做折叠展开交互。

开发启示:移动端小程序要覆盖小屏机型测试,文本类内容要做好溢出兜底。

五、第六章通用开发启示

  1. 教师端是管理员后台裁剪出来的轻量化子端,教师端所有写操作必须调用统一后端接口,禁止只修改前端本地状态,否则会出现三端数据不一致。
  2. 核销、扣课时、回滚返还这类资产变更业务,并发场景要使用事务、状态前置校验,防止重复扣减、重复回滚。
  3. 定时任务属于服务端隐形业务,不要直接裸写数据库更新,尽量复用业务公共函数;增加异常捕获、日志、告警,防止任务失败无人知晓。
  4. 多角色的数据隔离,尽量封装公共查询中间件,不要在每一个接口手动写过滤条件,避免遗漏造成越权泄露数据。
  5. 弱网环境下,前端按钮防抖置灰只是第一层防护,后端仍然要做重复请求、重复操作的业务拦截。
  6. 日历、周视图这类大量数据渲染页面,必须考虑大数据量渲染性能,必要时使用虚拟列表。
  7. 移动端必须覆盖小屏幕机型,文本、容器样式做好溢出兜底,不能只在开发机测试。

本文属于《全栈项目实战手记|艺培场馆课时预约小程序》专栏,系列持续更新,可订阅专栏阅读完整连载。

连载目录回顾

第一篇:艺培场馆课时预约小程序 B 端管理后台完整产品设计思路

第二篇:艺培场馆课时预约小程序 C 端学员端完整产品设计思路

第三篇:艺培场馆课时预约小程序后台、教师端、学员端实拍与业务流程图汇总

第四篇:艺培场馆课时预约小程序后台开发踩坑复盘(课程、学员、权限配置类 Bug)

第五篇:艺培场馆课时预约小程序用户端 & 后台联动踩坑上篇(预约、课时、同步问题)

第六篇:艺培场馆课时预约小程序用户端 & 后台联动下篇(排课核销、定时任务、页面交互异常)

第七篇:艺培场馆课时预约小程序 底层安全、交互、分包全量迭代复盘

第八篇:艺培场馆课时预约小程序 PC 管理端 Demo 完整开发成果展示 第

九篇:艺培场馆课时预约小程序全项目开发历程完整复盘总

posted @ 2026-10-26 10:03  阿星t4  阅读(7)  评论(0)    收藏  举报