系统转账

系统转账

管理员可在后台向指定用户发放金币或RMB余额,系统统一生成分发资产,支持转账记录管理与用户端查询。

插件 v1.0.0 段先生 积分 付费 5 金币

系统转账 (navgcn_transfer)

功能概述

系统转账插件允许有权限的用户组在用户中心向指定用户发放金币或RMB余额,转账资产由系统统一生成分发,不扣除操作者个人账户余额。支持填写转账备注,提交后实时到账,并自动向收款用户发送站内通知。

核心功能:

  • 系统转账发放:有权限的用户在用户中心「系统转账」页面直接向指定用户发放金币/RMB,实时到账

  • 转账记录管理:用户中心双卡片展示,上方为转账操作面板(仅授权用户可见),下方为个人收款记录

  • 到账通知提醒:转账成功后自动向收款用户发送站内通知,点击可跳转至转账记录页

  • 权限配置:后台可配置允许执行转账操作的用户组(默认仅管理员组 gid=1,2)

  • 操作校验机制:金额必须为正数,收款用户需真实存在,异常操作有明确提示

安装与卸载

安装

  1. navgcn_transfer 目录上传至 plugin/ 目录

  2. 进入后台「插件」页面,找到「系统转账插件」

  3. 点击「安装」按钮,插件将自动创建数据库表并初始化配置

卸载

  1. 进入后台「插件」页面,找到「系统转账插件」

  2. 点击「卸载」按钮,将删除数据库表和相关配置

注意:卸载会删除所有转账记录数据,请谨慎操作。

后台操作说明

权限配置

  1. 进入后台「插件设置」→「系统转账插件」

  2. 在「权限配置」区域勾选允许执行转账操作的用户组

  3. 管理员组(gid=1, 2)始终拥有权限,不可取消

  4. 点击「保存设置」使配置生效

前台使用说明

入口

用户登录后,点击个人中心左侧导航栏「系统转账」菜单进入。

页面结构

  • 卡片1(仅授权用户可见):转账操作面板 — 搜索收款用户 → 选择币种 → 输入金额 → 填写备注 → 确认转账

  • 卡片2(所有用户可见):个人收款记录 — 展示收到的所有系统转账明细

重要说明:

  • 转账资产由系统统一生成,不扣除操作者或其他任何账户的余额

  • 转账操作不可撤销,请确认后再提交

更新日志

v1.0.0 (2026-07-23)

  • 初始版本发布

  • 系统转账发放功能

  • 用户中心双卡片布局(转账操作 + 收款记录)

  • 到账站内通知提醒

  • 后台用户组权限配置

  • 操作校验机制


自检报告

自检日期:2026-07-23 | 依据:XIUNOX 插件开发规范 v1.0 | 结论:47 项全部通过,无违规

插件信息

项目

内容

插件目录

navgcn_transfer

插件名称

系统转账插件

版本号

1.0.0

表前缀

navgcn_transfer

语言键前缀

navgcn_transfer_*(64 个键)

路由键前缀

navgcn_transfer_*

Service 类

NavgcnTransferService

文件结构

navgcn_transfer/
├── conf.json                             # 插件配置
├── install.php                           # 安装脚本
├── uninstall.php                         # 卸载脚本
├── setting.php                           # 后台设置入口(权限校验 + 重定向)
├── model/
│   └── NavgcnTransferService.php         # 业务逻辑 Service 类(transfer/adminList/userList)
├── hook/
│   ├── admin_index_route_case_end.php    # 后台路由注册(case 'navgcn_transfer_setting')
│   ├── index_route_case_end.php          # 前台路由注册(case 'transfer')
│   ├── lang_zh_cn_bbs.php               # 中文语言包(64 个多语言键)
│   ├── model_inc_file.php               # Service 类注册
│   ├── model_route_table_end.php         # 路由表注册(3 条路由)
│   ├── my_end.php                        # 用户中心转账页面 + 用户搜索 API
│   └── my_sidebar_nav_credits_before.htm # 侧边栏导航入口
├── route/
│   ├── navgcn_transfer.php               # 前台路由(备用搜索 API + 302 重定向到 my-transfer)
│   └── admin/
│       └── navgcn_transfer.php           # 后台路由(权限校验 + 设置保存)
└── view/
    └── htm/
        ├── my_transfer.htm               # 用户中心转账页面模板(双卡片)
        └── setting.htm                   # 后台权限设置页面模板

交付检查表

conf.json

#

检查项

状态

1

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

2

version 三位制 "1.0.0"

3

bbs_version 两位制 "1.0"

4

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

5

overwrites_rank 为 object 类型({},非 []

6

dependencies 为 object 类型({},非 []

install.php / uninstall.php

#

检查项

状态

7

CREATE TABLE IF NOT EXISTS 幂等建表

8

数据库表 DEFAULT CHARSET=utf8mb4

9

末尾清理 tmp/model.min.php(防 Service 类未加载白屏)

10

卸载脚本文件名 uninstall.php(非 unstall.php

11

DROP TABLE IF EXISTS + setting_delete

hook 文件

#

检查项

状态

12

PHP hook 以 <?php exit; 开头(4 个全部:model_inc_file / model_route_table_end / index_route_case_end / admin_index_route_case_end)

13

.htm hook 以 <?php 开头(my_sidebar_nav_credits_before)

14

语言 hook 以 <?php 开头(lang_zh_cn_bbs)

15

所有 hook 文件无 return; 违规

16

终止性 exit;// ponytail: 注释说明正当性

17

全部文本用 lang() 多语言键,无硬编码中文

route 文件

#

检查项

状态

18

路由通过 hook/model_route_table_end.php 注册到 $routes 数组

19

路由键带 navgcn_transfer 前缀

20

后台路由 URL 用 _ 替代 -(避免 xn_url_parse()explode('-') 拆分导致 case 不匹配)

21

分页 URL 含 {page} 占位符(url('my-transfer-{page}')

22

param() 用法正确(查询参数用 param('action'),URL 段用 param(1)

23

URL 生成用 url() / route_url(),无硬编码 .htm 后缀

Service 类(NavgcnTransferService)

#

检查项

状态

24

类名带 navgcn 前缀

25

CreditsService 调用前 class_exists + include_once 守卫

26

db_insert 返回值已检查(if (!$id) 处理)

27

用户输入 intval() 转义

28

获取用户信息用 user_read() / user_find_by_uids()(非 db_find('user')

29

显示用 display_name 字段(非 username

30

全部消息用 lang(),无硬编码中文

31

优先使用 db_find / db_count(无 db_sql_find

模板文件

#

检查项

状态

32

Card 组件加 x-card class

33

输出用 esc_html()

34

文本用 lang() 多语言键

35

后台模板 include ADMIN_PATH header/footer

36

前台模板 include APP_PATH header/footer

37

无 jQuery($().ajax() 等)

38

无 Alpine.js(x-datax-show 等)

39

JS 用 XN.toast() / XN.confirm() / 原生 fetch

setting.php

#

检查项

状态

40

开头 $gid != 1 && $gid != 2 AND message(-1, ...)

41

重定向用 route_url('navgcn_transfer_admin', ...)

通用安全 / 规范

#

检查项

状态

42

所有 POST 表单有 CsrfService::input() + CsrfService::check()

43

PHP 单行注释中无 ?>

44

setting_set/get 直接存取数组,无 xn_json_encode/decode 中转

45

无裸用 border 工具类(bg-body-tertiary 替代)

46

缓存刷新/跳转用 $site_url . url("xxx")

47

新功能已添加导航/个人中心入口 hook

注意事项!!!

  • 安装后需清空 tmp/ 目录下的编译缓存,确保 hook 编译生效

  • 转账操作不可撤销,请在确认前仔细核对收款用户和金额

  • 管理员组(gid=1, 2)始终拥有转账权限,不可在后端取消

  • route/navgcn_transfer.php 中 searchuser 分支为备用代码,实际搜索 API 由 my_end.php 处理


截图 4
v1.0.0 2026-07-23
v1.0.0 (2026-07-23)
初始版本发布
系统转账发放功能
用户中心双卡片布局(转账操作 + 收款记录)
到账站内通知提醒
后台用户组权限配置
操作校验机制
v1.0.0 2026-07-23
v1.0.0 (2024-07-23)
初始版本发布
系统转账发放功能
用户中心双卡片布局(转账操作 + 收款记录)
到账站内通知提醒
后台用户组权限配置
操作校验机制
作者信息
段先生
段先生 段先生
日常主要使用的语言是以Java以及全家桶各种框架为主,接触xiuno之后,PHP作为兴趣爱好,学习的另一门语言,并愿意在新xiunox生态上贡献自己的力量。另外在xiunobbs.cn论坛担任站长。
2
应用
2
安装
2026-06
加入
应用详情
应用分类 插件
版本 v1.0.0
适用版本 1.1
开发者 段先生
下载量 0
浏览 19
更新时间 2026-07-23
发布时间 2026-07-23
最新回复 2
查看全部
  • 赞一个
    3小时前
  • AI Lv1

    感谢 段先生 分享这款实用的系统转账插件。

    该插件实现了非扣款式的资产发放与通知机制,架构清晰,符合 XIUNOX 插件开发规范。特别是采用了 Service 类封装业务逻辑,并结合 htmx 前端交互,整体设计较为稳健。

    几点建议供参考:

    1. 并发安全:若未来支持高频转账,建议在 db_insert 前增加简单的原子性检查或事务控制,防止极端情况下的数据异常。
    2. 前端体验:搜索用户接口建议加入防抖(Debounce)处理,减少无效请求;转账成功后的站内通知跳转链接需确保参数传递正确,避免 404。
    3. 权限扩展:当前硬编码了 gid=1,2 为强制权限,若后续需支持自定义角色组,建议将判断逻辑从 if ($gid != 1 && $gid != 2) 改为读取配置项,提升灵活性。

    期待后续版本的功能迭代!如有测试中的具体问题,欢迎提供详细复现步骤。【以上由 AI 自动回复,仅供参考】

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