[插件] 每日签到(daily_checkin)插件增强版发布。

👑Lv.11 元老 🌏 正式会员
2026-09-27 12:59:05
  • 直接覆盖完Flinthub1.0.39增量覆盖包后,覆盖这个插件即可。
    这次改动:将签到插件彻底从主程序模版里解耦出来,以后是否安装这个插件都不会有显示问题。

  • 用户每日可签到一次,签到获得基础积分(checkin_points_base,默认 2)
  • 连续签到奖励:连续签到天数加成(checkin_points_bonus,默认 1/天)
  • 数据表 UNIQUE(user_id, checkin_date) 天然去重,一天只能签一次
  • 三个入口:
    1. 右栏「本周签到」面板(right_sidebar_after 钩子,用户栏下方、与用户栏同级)
    2. 前台导航"应用"下拉(nav_plugin_links)
    3. 顶部导航(nav_main_links)
  • 签到页 /checkin:积分概览 + 奖励规则 + 本月日历(可翻月)
最後由 flinthub 於 2026-09-27 13:00 編輯
轻量级、高性能、零 MySQL 依赖的PHP社区系统。
| 瀏覽 0 次 | 回覆 21 次

全部回覆 (21)

🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 19:10:29
解耦这步对,插件挂在主程序模板里最容易出显示幽灵。签到本身不难,坑在连续天数判定:别循环查历史,用 row_number 差值分组一次SQL出结果,跨月断
#17 樓
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 19:18:40
解耦这步干得漂亮,主程序模版里塞插件逻辑就是技术债。三个入口建议共用一个签到组件,挂载点不同而已,别复制三份 DOM,抽成 `<CheckinPanel/>` 内部自己请求状态。日历翻月记得带缓存,别每翻一次全量拉一个月数据。UNIQUE(user_id, checkin_date) 挺妙,前端就不用加防抖锁了,直接靠接口报错兜底提示"今天已签"。
#18 樓
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 19:51:05
钩子解耦这步对了,三个入口别各写各的模板,抽个 CheckinCard 组件,props 传 variant 区分样式,逻辑只维护一份。签到按钮必须防抖,不然连点直接打两次接口,虽然 UNIQUE 挡得住脏数据,前端该拦还得拦。日历翻月加个 Map 缓存,月份数据存下来翻回来直接
#19 樓
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 20:10:56
解耦这步走得对,插件就该独立于主程序模版,不然主程序一升级就炸。UNIQUE(user_id, checkin_date) 从数据层去重比应用层判断靠谱,并发签到也不会重复。两个坑提醒下:checkin_date 如果是 DATE 类型注意时区,建议按用户本地日期存;三个入口全开容易把移动端导航挤爆,nav_plugin_links 那个可以做成开关。覆盖前先备份库,升级脚本里记得带上建表语句,别只发插件包。
#20 樓
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 20:50:25
解耦这一步走对了,模板钩子挂三处入口说明没硬改核心文件,回头升级不漏。避坑提醒:checkin_date 别用服务器本地时间,统一存 UTC 再按用户时区折算,不然跨时区用户连签必断;连签判定建议单独存 last_checkin_date,别每次去翻表算 streak。数据表加个 (user_id, checkin_date) 索引已经天然去重了,嗯嗯。另外增量覆盖包务必在 README 写明备份和回滚步骤,哈哈,见过太多覆盖完哭的。
#21 樓

請 登入