签到插件

签到插件

每日签到,获取积分奖励

插件 v1.0.2 贰先生 积分 付费 10 金币

xnx_checkin 签到插件

功能

  • 每日签到:用户每日可签到一次,按随机奖励区间 reward_base_min ~ reward_base_max 发放积分

  • 连续签到奖励:第 3/7/15/30 天额外奖励(独立配置金额)

  • 满勤奖励:周满勤 reward_weekly_full / 月满勤 reward_monthly_full

  • 每日前三名:当日最早签到的 3 名用户额外奖励 reward_top1/2/3,并标记 is_top3 / top3_rank

  • 心情记录:签到时可选择心情(happy/calm/tired/sad/excited),存入 xnx_checkin_mood 表,提供今日心情统计

  • 日历视图:当月签到日历(已签到日期高亮,支持切换年月)

  • 排行榜:累计签到天数榜 / 连续签到天数榜,缓存 300 秒

  • 后台管理:12 项奖励参数配置、发现页入口配置、签到记录查询(按 uid/日期范围筛选 + 分页)、补签(manualCheckin 指定 uid + 日期)

  • API 接口:xnx_checkin_api 提供 do(POST 签到)/ status(GET 查询状态)/ 日历等 JSON 接口

  • 前台路由:xnx_checkin(签到主页)、xnx_checkin_calendar(日历页)、xnx_checkin_rank(排行榜页)

  • 首页注入:index_site_brief_post_after.htm 显示签到按钮(未登录跳登录 / 已签到跳签到页 / 未签到跳签到页),状态缓存 60 秒

  • 性能优化:getCheckinStatus 通过一次批量查当月记录 + 一次查上月末记录消除 N+1(原 N+4 次查询降为 3 次)

  • 完整缓存:状态 60 秒 / 今日统计 60 秒 / 排行榜 300 秒 / 防刷锁 5 秒,通过 CacheHelper::registerKeys('checkin', ...) 注册

文件结构

plugin/xnx_checkin/
├── conf.json
├── install.php / uninstall.php / upgrade.php
├── setting.php     (后台配置 + 记录查询 + 补签)
├── index.php       (签到主页)
├── api.php         (JSON 接口:do/status/...)
├── calendar.php    (日历页)
├── rank.php        (排行榜页)
├── admin.php       (后台入口,转发到 setting.php)
├── update.md
├── model/CheckinService.php
├── lang/
│   ├── zh-cn.php
│   ├── zh-tw.php
│   └── en-us.php
├── hook/
│   ├── index_site_brief_post_after.htm   (首页签到按钮)
│   ├── index_site_brief_stats_after.htm
│   ├── index_route_case_end.php
│   ├── admin_index_route_case_end.php
│   ├── lang_zh_cn_bbs.php
│   ├── lang_zh_tw_bbs.php
│   └── lang_en_us_bbs.php
├── view/
│   ├── css/checkin.css
│   └── htm/
│       ├── checkin_index.htm
│       ├── checkin_calendar.htm
│       ├── checkin_rank.htm
│       ├── checkin_modal.htm
│       └── checkin_admin.htm

配置流程

  1. 后台启用插件(自动建 xnx_checkin_log 日志表 + xnx_checkin_mood 心情表,写入 12 项默认奖励参数)

  2. 进入「插件设置」配置积分类型、基础奖励区间、连续奖励 3/7/15/30、周/月满勤、前三名奖励

  3. 切换到「签到记录」标签可按 uid/日期范围筛选并补签

  4. 测试:用户访问 ?xnx_checkin → 点击签到 → 获得随机积分 + 连续奖励 + 前三名奖励(若有);首页显示「已签到 / 签到」按钮;日历页查看历史签到;排行榜页查看 Top 用户

扩展说明

  • 事件 hookxnx_checkin_do_checkin_end.php

    • 触发位置:CheckinService::doCheckin() 签到成功后(事务提交、积分发放、缓存清理完毕之后)触发

    • 可用变量:$uid(用户 ID)、$totalReward(总奖励积分)、$newContinuous(连续天数)、$newTotal(累计天数)、$isTop3(是否前三)、$top3Rank(前三名次)、$creditsType(积分类型)、$today(日期)、$mood(心情)

    • 监听方在自身 hook/ 目录放置 xnx_checkin_do_checkin_end.php 即可注入逻辑(如 xnx_feeds 监听此 hook 将签到动作写入动态流)


截图 3
v1.0.2 2026-07-22
修复新安装时签到失败的问题
v1.0.1 2026-07-22
作者信息
贰先生
贰先生 贰先生
XIUNOX开发者
7
应用
38
安装
2026-06
加入
应用详情
应用分类 插件
版本 v1.0.2
适用版本 1.1
开发者 贰先生
下载量 9
浏览 33
更新时间 2026-07-23
发布时间 2026-07-22
最新回复 6
查看全部
  • 欧阳 Lv2
    需要,支持一下!
    5小时前
  • 老猫 Lv2
    6,来了
    5小时前
  • 支持一下
    5小时前
  • 轩逸 Lv2
    显示签到失败什么鬼
    6小时前
    Laity Lv3 回复@轩逸
    我也是....
    6小时前
    贰先生 管理 作者 回复@Laity
    更新下
    5小时前
  • Laity Lv3
    支持一下
    6小时前
  • AI Lv1

    感谢 贰先生 分享这款功能完善的签到插件。v1.0.1 版本在性能优化(N+1 查询优化)和缓存策略上做得相当细致,特别是支持心情记录与日历视图,增强了用户粘性。

    关于扩展性,Hook xnx_checkin_do_checkin_end.php 的设计非常清晰,方便第三方插件(如动态流)解耦集成,符合 XIUNOX 的插件开发规范。

    几点小建议供参考:

    1. 防刷机制:除了 5 秒锁,建议确认是否限制了同一 IP 短时间内的请求频率,以防恶意脚本刷分。
    2. 数据一致性:在“补签”功能中,需确保事务回滚机制完善,避免手动插入日志导致连续签到天数计算错误。
    3. 前端交互:若结合 htmx,可考虑将签到按钮改为异步提交,提升无刷新体验。

    期待看到更多基于此 Hook 生态的联动插件!如有具体集成问题,欢迎继续交流。【以上由 AI 自动回复,仅供参考】

    6小时前
查看全部评论 / 发表评论
完整评论功能在讨论帖中,点击前往