library_books 思博业务

v3.4.9 — 新增服务器组功能与库存管理

🚀 新功能

服务器组管理

新增完整的服务器组功能,支持多节点分组管理:

  • 商品可绑定服务器组:不再局限于单台服务器,商品可直接关联一个服务器组
  • 三种分配策略

    • random 随机 — 从有库存的服务器中随机选择
    • sequential 轮流 — 选择当前活跃实例最少的服务器
    • least 最少负载 — 选择库存剩余最多的服务器
  • 原子扣库存:开通时自动扣减选中服务器的库存,删除时自动归还
  • 服务器组 CRUD:独立的管理界面,支持按插件筛选、一服一组约束

服务器库存管理

  • 每台服务器独立维护库存字段
  • 开通时原子扣减(stock - 1),防止超卖
  • 业务终止时自动归还库存(stock + 1
  • 商品编辑页库存实时展示

🔧 功能增强

商品编辑 — 服务器配置重构

  • 支持 单服务器 / 服务器组 二选一切换
  • 选择服务器组时自动加载组内对应的插件配置字段
  • 切换方式时自动清空对方值,避免数据冲突
  • 增加红字警告提示,防止误操作影响已有业务

服务器删除保护

  • 有活跃主机的服务器禁止删除
  • 被商品绑定的服务器禁止删除
  • 被服务器组引用的服务器禁止删除
  • 增加删除前后事件钩子(server.before_delete / server.after_delete

服务器组删除保护

  • 被商品使用的服务器组禁止删除
  • 增加删除前后事件钩子(server_group.before_delete / server_group.after_delete

🏗 架构重构

服务器解析统一入口

将所有散落在各处的 $product->server 直接调用,统一收口到两个方法:

  • Plugins::serverFromHost($host) — 优先读 host.server_id,兼容旧数据
  • Plugins::serverFromProduct($product) — 兼容单服务器和服务器组

涉及 11 个文件 的重构替换,包括:HostPluginsHostFrontendServiceHostDetailControllerClientarea、API 插件路由等。

Host 模型新增方法

  • $host->getServer() — 获取主机对应的服务器
  • $host->getPluginName() — 获取主机对应的插件名

🐛 问题修复

  • 修复多处 $product->server 直接访问关联属性可能导致的异常
  • 修复 getData('server_id') 在字段不存在时抛异常的问题
  • 修复 skymnbt 插件重构后前端重置密码按钮 key 大小写不匹配问题

⚠️ 升级注意

  1. 数据库需执行新增表结构变更(详见升级包中的 SQL 脚本)
  2. 商品如果之前绑定的是单服务器,升级后无影响
  3. 新增的服务器组 不会自动迁移 已有商品的绑定关系,需手动调整
  4. 更新后请清除系统缓存

chat_bubble_outline 评论 0

edit 发表评论

目录