礼品卡充值系统
适用于 XIUNOX 论坛的礼品卡兑换插件,管理员批量生成带面额的礼品卡,用户输入卡密即可为账户充值金币,适用于活动奖励、线下推广等场景。
版本
插件版本:1.1.0
最低 XIUNOX 版本:1.1
作者:段先生
功能概述
功能 | 说明 |
|---|---|
批量生成 | 后台批量生成礼品卡(单次 1-99 张),可设置面额和有效期 |
卡密管理 | 每张卡拥有唯一卡号与卡密,支持按状态/面额筛选,支持分页 |
前台兑换 | 用户在积分页面直接兑换,输入卡密即可获得金币 |
兑换记录 | 用户通过模态框查看自己的历史兑换记录 |
批量作废 | 管理员可勾选多张未使用的卡密一键作废 |
CSV 导出 | 可将卡密列表导出为 CSV 文件 |
过期自动失效 | 超过有效期的卡密自动标记为"已过期" |
安装
将
navg_cn_giftcard目录放入论坛的plugin/目录下进入后台 → 插件管理 → 找到「礼品卡充值系统」→ 点击「安装」
安装后会自动创建
navg_giftcard数据表安装后清除
tmp/缓存(重要)!!!!!!!!
使用说明
管理员
进入后台 → 插件管理 → 点击「礼品卡充值系统」的「设置」按钮
生成卡密:设置面额(金币)、数量(1-99)、有效期 → 点击「生成」
管理卡密:可查看所有卡密,按状态/面额筛选,分页浏览
批量作废:勾选未使用的卡密 → 点击「批量作废」
导出 CSV:点击「导出CSV」下载全部卡密数据
前台用户
进入个人中心 → 积分页面,在「积分记录」卡片下方可直接看到「兑换礼品卡」卡片
输入卡密 → 点击「立即兑换」→ 金币即时到账
点击「兑换记录」→ 弹窗查看历史兑换详情
卡密状态
状态 | 值 | 说明 |
|---|---|---|
未使用 | 0 | 可正常兑换 |
已使用 | 1 | 已被兑换,不可再次使用 |
已过期 | 2 | 超过有效期,不可兑换 |
已作废 | 3 | 管理员手动作废,不可兑换 |
技术架构
注册的 Hook
Hook 文件 | 用途 |
|---|---|
| 注册 Service 类 |
| 注册前后台路由 |
| 前台路由分发 |
| 后台路由分发 |
| 语言包 |
| 用户中心导航入口 |
| 积分页注入 JS 配置 |
路由表
路由名 | URL 格式 | 用途 |
|---|---|---|
|
| 前台兑换页 |
|
| 用户兑换记录页 |
|
| 用户兑换记录 JSON |
|
| 后台卡密列表 |
|
| 后台生成卡密 |
|
| 后台导出 CSV |
|
| 后台作废单张 |
|
| 后台批量作废 |
数据库表
CREATE TABLE navg_giftcard (
id int unsigned NOT NULL AUTO_INCREMENT,
card_no varchar(32) NOT NULL DEFAULT '', -- 卡号(唯一)
card_key varchar(64) NOT NULL DEFAULT '', -- 卡密(MD5)
amount int unsigned NOT NULL DEFAULT 0, -- 面额(金币)
expire_time int unsigned NOT NULL DEFAULT 0, -- 过期时间戳(0=永久)
status tinyint NOT NULL DEFAULT 0, -- 状态:0未使用 1已使用 2已过期 3已作废
used_uid int unsigned NOT NULL DEFAULT 0, -- 兑换人 UID
used_time int unsigned NOT NULL DEFAULT 0, -- 兑换时间戳
created int unsigned NOT NULL DEFAULT 0, -- 创建时间戳
PRIMARY KEY (id),
UNIQUE KEY card_no (card_no),
KEY card_key (card_key),
KEY status (status),
KEY used_uid (used_uid),
KEY created (created)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;文件结构
navg_cn_giftcard/
├── conf.json # 插件配置
├── install.php # 安装脚本
├── uninstall.php # 卸载脚本
├── setting.php # 后台入口
├── README.md
├── model/
│ └── NavgGiftcardService.php # 核心业务逻辑
├── route/
│ ├── navg_giftcard.php # 前台路由
│ └── admin/
│ └── navg_giftcard.php # 后台路由
├── hook/
│ ├── admin_index_route_case_end.php
│ ├── footer_js_after.htm
│ ├── index_route_case_end.php
│ ├── lang_zh_cn_bbs.php
│ ├── model_inc_file.php
│ ├── model_route_table_end.php
│ └── user_nav_end.htm
├── view/
│ └── htm/
│ ├── admin_generate.htm # 后台生成页面
│ ├── admin_generate_result.htm # 后台生成结果页面
│ ├── admin_list.htm # 后台卡密列表
│ ├── navg_giftcard.htm # 前台兑换页面
│ └── navg_giftcard_history.htm # 用户兑换记录页面
└── static/
├── css/
│ └── navg_giftcard.css
└── js/
└── navg_giftcard.js # 前端交互(兑换卡片注入 + 模态框)卸载
进入后台 → 插件管理 → 找到「礼品卡充值系统」→ 点击「卸载」
卸载后会自动删除
navg_giftcard数据表和相关配置卸载后清除
tmp/缓存
注意事项
插件不修改任何主程序文件,所有功能仅在插件目录内完成
积分页面的兑换卡片通过 JS 动态注入,不覆盖核心模板
修改插件文件后需清除
tmp/目录下的编译缓存卡密由 MD5 生成,不可逆向推导
兑换操作使用数据库事务,保证原子性
测试地址
账号admin1,123456
目前正在修复,维护中ing...





