- 资源预约与摇号ID resource_booking版本 1.0.0插件制作者 cxk123售价 30 积分2641 行 / 158.1 KBHook / 路由 / 后台页把会议室、场地、器材或号源按时间段开放预约:名额满了可以摇号或排队等退号,需要审核的资源由管理团队把关,爽约太多会被暂时限制预约。收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。app/plugins/resource_booking/plugin.php插件预览6 张开发日志已有 1 条
此项目接受所有登录用户协助维护和提交更新。
主楼 版本 1.0.0 更新:
resource_booking 1.0.0 · 首次上架
把「会议室 / 场地 / 器材 / 号源」按时间段开放预约:名额满了摇号或排队等退号,需要审核的资源由管理团队把关,爽约太多会被暂时限制预约。
资源与时段
- 资源:名称 / 说明 / 位置 / 图片 / 是否需审批 / 最短最长时长 / 提前截止 / 取消截止 / 爽约阈值 / 签到开关 / 黑白名单用户组,可逐个上架下架。
- 周模板:一条「周三 09:00–10:00 / 名额 4」,未来两周的具体时段自动铺开;例外日支持「整日关闭」与「临时加开一场」。
- 时段网格:按天分组,一眼看到每个格子的剩余名额、候补人数、摇号池人数和「我的状态」。
预约与防重
- 选时段即可提交;同一人同一时段不可能重复占位(数据库唯一约束 + 占位列仲裁,双击 / 多标签页都只会成一单)。
- 名额守卫式占用:同秒多人抢最后一个名额时恰好只有一人成功,绝不超卖。
超额三策略(每个资源单独选)
- 先到先得:满了直接提示「名额已满」。
- 摇号:超额进摇号池,到点自动开奖,中签 / 未中签都会收到通知;同一份名单 + 同一个种子必然同一个结果(结果可复现)。
- 候补:超额自动排队;有人取消 → 自动把名额递给候补第一位并通知,递补有确认截止时间,逾期未确认会自动顺延给下一位。
审批 · 取消 · 爽约 · 核销
- 需审批的资源:提交后名额先为你保留,管理团队通过 / 驳回(驳回必填理由),驳回立刻释放名额并触发递补。
- 本人可在截止前取消;管理团队可强制取消(必填理由),两者都会释放名额并触发递补。
- 时段结束后未签到记为爽约,累计到阈值(可按资源单独设)后会暂时不能预约该资源。
- 签到窗口内可自助核销,管理团队可代核销,全部留档。
后台
- 资源 / 周模板 / 例外日 / 未来时段与摇号 / 预约与候补 逐块管理;手动干预(指定中签、调整候补顺序)必须填理由并写进审计台账。
- 统计:使用率、爽约率、按资源的预约与爽约分布、爽约次数最多的用户。
- 计划任务负责铺时段、到点摇号、收尾(爽约判定、递补超时顺延、名额计数自愈)。
工程说明
- 三驱动可移植(SQLite / MySQL / PostgreSQL):只用核心
app_db_*助手与 unix 时间戳,无窗口函数、无方言 upsert、无驱动分支。 - 页面路径零循环内查库:列表 ≤4 条、详情 ≤5 条、我的预约 ≤4 条、提交 ≤4 条;首页与主题页 0 条额外查询。
- 幂等安装 / 干净卸载;覆盖升级时结构自愈,不会把插件停用。
插件质量报告
插件:
resource_bookingHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 top.bar.actions 顶部栏插件入口,同一请求只执行一次(展示位置:版块导航与搜索框前后) 否 5 - - - - admin.tabs 后台管理页标签栏(展示位置:后台Tab) 否 1 - - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_resource_booking_resources字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 plugin_resource_booking_rules字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 plugin_resource_booking_exceptions字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 plugin_resource_booking_slots字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 plugin_resource_booking_bookings字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 plugin_resource_booking_logs字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 - 82天前
有意思
牛🐮