外观
交易行 · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/TradeController(/api/trade) | 上架/下架/购买/成交记录 |
| Service | service/TradeService | 交易校验、手续费、成交结算 |
| domain | domain/TradeRules | 规则:注册 7 天后解锁(UNLOCK_AFTER_DAYS=7);手续费按权益 8/6/5/4%;可交易物 = 可交易五彩神石(9204)、货币 = 福利点券(4001) |
| domain | domain/TradeListing、domain/TradeTransaction、domain/TradeListingStatus | 挂单/成交/状态模型 |
| repository | repository/GameRepository(PlayerTradePrivilege) | 注册时间与交易解锁判定 |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
trade_listing | listing_id、player_id、item_id、quantity、total_price、status、create_time | 挂单(V36) |
trade_transaction | transaction_id、listing_id、buyer_id、seller_id、fee、amount、create_time | 成交流水(V36) |
3. 配置与常量
- 交易规则:
名称 数值 说明 unlockAfterDaysUNLOCK_AFTER_DAYS 7 — tradeItemIdTRADE_ITEM_ID GameRepositoryGoldItems.TRADEABLE_RAINBOW_STONE_ID — currencyItemIdCURRENCY_ITEM_ID ShopBalanceRules.WELFARE_TICKET_ID — 来源:emberfall-server/src/main/java/com/emberfall/domain/TradeRules.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 手续费档位:(NAMING 4% < VIP5 5% < 月卡 6% < 默认 8%)emberfall-server/src/main/java/com/emberfall/domain/TradeRules.java:14源码读取失败,片段不可用
- 可交易物常量:
GameRepositoryGoldItems.TRADEABLE_RAINBOW_STONE_ID=9204(可交易五彩神石) - yml 键:无
4. 数据流简述
POST /api/trade/list 校验注册满 7 天(PlayerTradePrivilege.tradeUnlocked)与物品(仅 9204),挂单写 trade_listing。POST /api/trade/buy 买方以福利点券(4001)支付 total_price,TradeService 按 feeRate(privilege) 从成交额扣手续费(feeAmount 向上取整、至少 1)入系统,卖方实收扣除手续费,写 trade_transaction 并置挂单成交。
5. 已知差异
无
6. 相关代码
- 商城与点券(
ShopBalanceRules:福利点券 4001 发行) - 打金(
GoldExchangeRules:可交易五彩神石产出与额度 5203) - 特权档位(
PlayerPrivilege:手续费档位判定)