Skip to content

Latest commit

 

History

History
289 lines (191 loc) · 6.49 KB

File metadata and controls

289 lines (191 loc) · 6.49 KB

JsirGalaxyBase 银行系统一期需求

日期:2026-03-30

目标

银行系统不是一个单独的小功能,而是 JsirGalaxyBase 一期制度核心的金融底座。

它当前必须先支撑下面这些能力:

  • 星光币 统一账户体系
  • 任务书硬币兑换后的入账结算
  • 玩家之间转账
  • 系统运营账户与兑换储备等公共资金独立记账
  • 后续贡献度、声望和订单结算的价值真源
  • 群组服阶段的共享制度数据真源

当前一期优先级已经明确:

  1. 先完成完整银行系统
  2. 再继续做跨服传送与角色主状态同步

一期基础决策

1. 存储与架构

  • 一期唯一中心化存储为 PostgreSQL
  • 一期不引入 Redis
  • 一期采用:Forge 后端中的 CustomMod 直接连接 PostgreSQL
  • 代码内部仍必须保留仓储抽象层,不能把 SQL 直接散落到领域规则中

2. 货币范围

  • 一期银行账户内只保存一种正式货币:星光币
  • 任务书硬币不是账户余额的一部分
  • 任务书硬币只作为兑换输入物,不直接作为银行账户中的第二货币存在

3. 玩家初始状态

  • 新玩家银行账户初始余额为 0
  • 第一桶金不通过默认账户预存发放
  • 后续资金来源应来自:
    • LV0 职业奖金
    • 任务书硬币兑换
    • 活动或制度内正式奖励

4. 共享背包当前定义

  • 当前“共享背包”不额外定义新容器
  • 直接等同于玩家按 E 打开的主背包数据

5. 一期明确不做

  • 单独的硬币交易市场
  • 汇率系统
  • 动态汇率浮动
  • 贷款、利息、定存等扩展金融能力
  • 多币种银行账户

其中:

  • “单独的硬币交易市场 / 汇率系统”属于后续阶段能力
  • 一期银行系统只需要支持固定规则下的兑换结算,不承担市场化定价功能

银行系统的核心角色

一期银行系统至少承担下面四个角色:

1. 账户系统

  • 负责维护玩家账户、公共资金账户、兑换所储备账户等所有正式账户

2. 账本系统

  • 负责记录所有余额变化的流水
  • 后续统计、审计、补偿、结算都必须依赖账本而不是临时变量

3. 结算系统

  • 负责任务书硬币兑换
  • 负责玩家转账
  • 负责系统运营账户入账与支出
  • 负责系统奖励与系统扣款

4. 制度价值真源

  • 贡献度、声望、订单、福利、公会资金等后续制度能力都必须复用这套账本基础

一期必须具备的功能

1. 账户开户与查询

必须支持:

  • 为每个玩家建立唯一银行账户
  • 查询玩家当前可用余额
  • 查询公共账户当前余额
  • 查询最近流水

2. 独立账户体系

以下对象必须是独立账户,而不是简单的一个 int 变量:

  • 玩家个人账户
  • 系统运营账户
  • 兑换所启动储备账户
  • 后续公会账户
  • 后续其他公共资金账户

这一点意味着:

  • 所有资金池都要遵守统一的账户到账户记账逻辑
  • 不能因为是“公共资金”就绕开账本系统直接改数值

3. 账本流水

每一次余额变化都必须生成正式流水。

流水至少应记录:

  • 涉及的账户
  • 业务类型
  • 变动金额
  • 变动方向
  • 变动前余额
  • 变动后余额
  • 操作时间
  • 来源服务器
  • 发起方或操作者
  • 关联业务主键

4. 玩家转账

必须支持:

  • 玩家对玩家转账
  • 余额不足拦截
  • 非法金额拦截
  • 幂等保护
  • 转账备注或业务原因

一期默认:

  • 玩家转账不收手续费

5. 系统入账与系统扣款

银行系统必须支持系统账户参与记账,而不只是玩家之间互转。

一期至少包括:

  • 职业奖金发放
  • 活动奖励发放
  • 任务书硬币兑换入账
  • 交易手续费、捐赠、地皮购买等运营账户入账
  • 管理员补偿或修正

6. 固定规则兑换结算

一期虽然不做单独的硬币交易市场,但必须支持“任务书硬币 -> 星光币”的正式结算逻辑。

它必须能够记录:

  • 玩家提交了什么硬币
  • 硬币面值与有效兑换价值
  • 最终入账多少星光币
  • 资金从哪个账户流出
  • 是否同步产生贡献度依据

这里的兑换逻辑属于:

  • 银行系统中的正式结算能力

而不是:

  • 后续市场化汇率系统

7. 公共资金记账

一期必须把公共资金显式纳入银行系统。

当前至少包括:

  • 系统运营账户
  • 兑换所启动储备账户

当前明确:

  • 运营账户与兑换所必须分账
  • 运营账户统一承接支出、手续费收入、捐赠与地皮购买等流入

8. 审计与人工修正

一期必须允许:

  • 管理员修正余额
  • 管理员补偿
  • 管理员扣款

但修正方式必须是:

  • 新增一条修正流水

而不是:

  • 直接修改旧流水

一期实现原则

1. 账本优先

  • 银行系统以账本流水为真源
  • 余额是当前状态结果,不是唯一可信历史

2. 账户到账户

所有资金移动统一建模为:

  • 一个账户减少
  • 一个账户增加

包括:

  • 玩家到账户
  • 系统到账户
  • 公共账户到账户

3. 单币种优先

  • 一期不做多币种账户
  • 一期只做 星光币 正式账户余额

4. 业务类型强约束

每笔流水都必须有明确业务类型,例如:

  • 职业奖金
  • 玩家转账
  • 硬币兑换
  • 税收
  • 管理修正
  • 订单结算

一期明确不做的内容

下面这些内容不进入银行系统一期承诺:

  • 单独的硬币交易市场
  • 汇率系统
  • 玩家自由挂单市场完整体
  • 动态汇率浮动与兜底
  • 公会金融扩展玩法
  • 利息、贷款、定存等扩展金融能力
  • 任意第三方模组物品作为法定账户资产

一期最小业务动作清单

银行系统一期至少要支持下面这些业务动作:

  1. 开户
  2. 查询余额
  3. 查询流水
  4. 玩家转账
  5. 系统发钱
  6. 系统扣钱
  7. 任务书硬币兑换结算
  8. 运营账户入账
  9. 管理员修正
  10. 为周结算提供账本依据

后续阶段预留

这些内容属于后续阶段,可在一期稳定后再设计:

  • 单独的硬币交易市场
  • 汇率系统
  • 公会正式账户体系
  • 公共资金多子池拆分
  • 市场订单冻结资金
  • 托管资金与订单撮合

当前结论

一期银行系统的正确定位是:

  • 一个以 星光币 为唯一正式账户货币
  • 以账本流水为真源
  • 支持玩家转账、固定规则兑换、运营账户收支和系统修正
  • 并为后续跨服同步、贡献度结算、声望沉淀和公共资金体系提供统一底座的制度账本系统