【XIUNOX插件】货币兑换 v1.0.0

navgcn_exchange 货币兑换插件

插件介绍

功能概述

货币兑换插件提供金币与人民币余额之间的双向即时兑换功能,支持独立汇率配置、手续费比例、最低限额控制及用户组权限管理。

核心功能

功能

说明

金币 → 人民币

用户将金币按设定汇率兑换为人民币余额

人民币 → 金币

用户将人民币余额按设定汇率兑换为金币

实时预览

输入兑换数量时前端实时计算预估结果

手续费

支持按百分比收取手续费,从兑换目标中扣除

交易记录

用户可查看历史兑换记录,支持分页

积分日志

兑换操作自动写入积分日志,可在积分记录页查看

用户组权限

后台可限定允许兑换的用户组,不选则全员可用

功能开关

后台可一键关闭兑换功能,前台入口自动隐藏

后台设置

设置项

说明

默认值

金币→人民币汇率

多少金币兑换 1 元人民币

10

人民币→金币汇率

1 元人民币兑换多少金币

1

最低金币兑换

单次兑换最低金币数量

1

最低人民币兑换

单次兑换最低人民币金额【强烈建议设置为1】!!!!

0.01

手续费比例

按百分比从兑换目标中扣除

0%

允许兑换的用户组

限制可参与兑换的用户组

全部

启用兑换

功能总开关

开启

安装与卸载

  • 安装:将插件目录放入 plugin/ 下,后台启用即可。install.php 自动创建 navg_exchange_log 交易日志表,并为 user 表添加 rmb 字段。

  • 卸载uninstall.php 自动删除交易日志表并清理配置。

文件结构

plugin/navgcn_exchange/
├── conf.json                          # 插件配置
├── install.php                        # 安装脚本
├── uninstall.php                      # 卸载脚本
├── setting.php                        # 后台设置页
├── icon.png                           # 插件图标
├── hook/
│   ├── admin_index_route_case_end.php # 后台路由注册
│   ├── lang_zh_cn_bbs.php            # 中文语言包
│   ├── model_inc_file.php            # Service 类注册
│   ├── model_route_table_end.php     # 前台路由注册
│   ├── my_end.php                    # 前台兑换处理
│   └── my_sidebar_nav_credits_before.htm # 侧边栏导航入口
├── model/
│   └── NavgExchangeService.php       # 核心业务逻辑
└── view/htm/
    ├── my_navg_exchange.htm          # 前台兑换页面
    └── setting.htm                   # 后台设置页面

自检报告

自检时间:2026-07-24 依据:XIUNOX 插件开发规范(Skill: xiunox-plugin-dev)+ 项目 AGENTS.md 规则


conf.json

检查项

结果

必填字段完整(name/brief/version/bbs_version/installed/enable)

version 三位制(1.0.0)

bbs_version 两位制(1.1)

hooks_rank 键名与 hook 文件名一致(含扩展名)

dependencies 为合法对象

installedenable 为 0(插件已激活)已检查修改!

install.php

检查项

结果

!defined('DEBUG') AND exit 守卫

CREATE TABLE IF NOT EXISTS 幂等

DEFAULT CHARSET=utf8mb4

SHOW COLUMNS + ALTER TABLE 字段升级幂等

db_sql_find保留 db_sql_find 注释

setting_set 初始化默认配置

CacheHelper::registerKeys() 注册缓存键

末尾 xn_unlink 清理 tmp/model.min.php

uninstall.php

检查项

结果

文件名用 uninstall.php(标准拼写)

DROP TABLE IF EXISTS 幂等

setting_delete 清理配置

setting.php

检查项

结果

$gid != 1 && $gid != 2 && $gid != 3 权限检查(含版主)

POST 有 CsrfService::check()

param() 取值已做类型转换

使用 admin_plugin_setting_url('navgcn_exchange') 重定向

通过 Service 类存取设置

汇率/限额参数校验完整

model/NavgExchangeService.php

检查项

结果

!defined('DEBUG') AND exit 守卫

静态方法模式

db_find / db_count / db_insert / db_update 优先使用

$db->sqlFindOne()保留 db_sql_find_one 注释

SQL 参数 intval() 转义

事务 BEGIN/COMMIT/ROLLBACK 完整

db_insert 后检查返回值

用户缓存清理(cache_delete + $g_static_users

使用 user_read_cache 获取用户信息

setting_get / setting_set 直接存取数组(无 JSON 中转)

手续费仅从目标端扣除(无双重收费)

所有消息使用 lang() 多语言

direction_label 使用 lang()(非硬编码)

credits_log.reason 写入中文文本(credits_event_name() 兼容)

getUserLogs 使用 CacheHelper::remember() 缓存

兑换成功后 CacheHelper::pluginDeletePrefix() 清除缓存

CacheHelper::remember()$plugin 参数与 pluginDeletePrefix() 一致

模板文件

检查项

结果

setting.htm 首尾 include ADMIN_PATH header/footer

my_navg_exchange.htm 首尾 include APP_PATH header/footer

表单有 CsrfService::input()

Card 使用 x-card class

前端 JS 使用 XN.toast() / XN.confirm() / XN.post()(非 jQuery)

无 Alpine.js / htmx 冲突

使用 Tabler Icons(ti ti-xxx

url() 使用路由表键名(非硬编码 URL 模式)

APP_PATH 生成 <script src> / <link href>

static/*.js 文件中写 PHP 代码

所有 UI 文本使用 lang() 多语言(无硬编码中文)

border-bottom / border-top,改用 <hr> 分隔

JS 预览/确认文本通过 lang() 注入

语言包

检查项

结果

所有语言键使用 navg_exchange_ 前缀

覆盖了所有功能场景(前端/后台/JS/日志)的翻译

路由

检查项

结果

自定义路由通过 hook/model_route_table_end.php 注册

{page} 占位符用于分页

分页 URL 使用 route_url('navg_exchange_page', [])

后台路由通过 hook/admin_index_route_case_end.php 注册

Hook 文件规范

检查项

结果

PHP hook 文件以 <?php exit; 开头

.htm hook 文件以 <?php 开头(非 <?php exit;

return; 在 hook 顶层作用域中

my_end.phpexit;// ponytail: 注释说明

hook 文件名(含扩展名)与 conf.json 一致

其他

检查项

结果

htmlspecialchars 裸写

无 jQuery

表名/变量/语言键/设置键均带插件前缀(navg_exchange

插件缓存使用 CacheHelper 统一管理

CacheHelper::registerKeys() 已注册缓存键



版本:v1.0.0
适用版本:1.1
开发者:段先生

请登录后查看此内容
最新回复
  • AI Lv1

    段先生,你好!感谢分享 navgcn_exchange 货币兑换插件。

    该插件功能设计完整,覆盖了双向兑换、手续费、权限控制及交易记录等核心场景,且自检报告各项指标均符合 XIUNOX 插件开发规范,代码结构清晰,体现了较高的开发质量。特别是使用了 CacheHelper 进行缓存管理以及完善的 Hook 机制,值得推荐。

    补充建议:

    1. 并发安全:在 NavgExchangeService.php 中处理余额扣减时,建议确保数据库事务中的 SELECT ... FOR UPDATE 或原子更新操作,防止高并发下的竞态条件导致余额异常。
    2. 精度问题:PHP 浮点数计算可能存在精度丢失,建议在涉及金额(人民币)的计算中使用 bcmath 扩展或统一以“分”为单位进行整数运算,确保财务数据绝对准确。
    3. 日志审计:除用户可见的交易记录外,建议后台增加管理员视角的汇总统计报表,便于运营监控资金流向。

    期待该插件在更多社区中的应用,如有技术细节讨论欢迎继续交流。【以上由 AI 自动回复,仅供参考】

    6天前
  • yaoys 内测用户站长 Lv2
    看看,支持一下
    6天前

请先登录后再回复 登录