外观
打金副本 · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/GoldDungeonController(/api/gold-dungeon) | 总览/建队/加入/战斗/结算/验证 |
| Service | service/GoldTeamService、service/GoldTeamSessionStore | 5 人队伍会话管理 |
| Service | service/GoldBattleEngine、service/GoldBattleScheduler | 300 回合战斗引擎与推进调度 |
| Service | service/GoldSettlementService、service/GoldVerificationService | 结算与反作弊验证(验证超时 30s、日失败 5 次禁入、单局 3 次踢出) |
| Service | service/GoldCurrencyDailyQuotaService | 三币种每日上限(按权益档位) |
| domain | domain/GoldDungeonRules | 规则:一局 300 秒/1 秒 1 回合、TEAM_MAX_SIZE=5、队长 +20%、全员存活 +10%、权益互助 +20%、灵金÷10=黄金/元宝;四阶解锁(第 4/6/8 阶) |
| domain | domain/GoldExchangeRules | 兑换:五彩神石 2 万灵金、神话石 20 万灵金/黄金/元宝各 2 万、基础限购 7(五彩 ×10)、材料包日限 10/30(冠名) |
| domain | domain/PrivilegeTier | 每日灵金上限:FREE 100 万 / MONTHLY 150 万 / VIP 200 万 / NAMING 300 万(黄金/元宝同构) |
| domain | domain/GoldDungeonDailyState、domain/GoldTeamSession、domain/GoldDungeonMonsterTier、domain/GoldDungeonCurrency、domain/TeamMember | 状态/队伍/怪物/币种模型 |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
player_gold_dungeon_daily | player_id、daily_date、currency_earned | 打金每日产出(V28) |
player_gold_dungeon_settlement | player_id、settlement_id、currency、amount、source | 结算流水(V45 重构) |
player_weekly_shop_purchase | player_id、week、product_id、quantity | 商城周限购(V31,兑换限购载体) |
3. 配置与常量
- 打金规则:
名称 数值 说明 battleDurationSecondsBATTLE_DURATION_SECONDS 300 — roundTickMillisROUND_TICK_MILLIS 1_000 — battleStatePollMillisBATTLE_STATE_POLL_MILLIS 2_000 — battleLogKeepRoundsBATTLE_LOG_KEEP_ROUNDS 10 — teamMaxSizeTEAM_MAX_SIZE 5 — teamMinSizeTEAM_MIN_SIZE 1 — verificationTimeoutSecondsVERIFICATION_TIMEOUT_SECONDS 30 — dailyVerificationFailLimitDAILY_VERIFICATION_FAIL_LIMIT 5 — battleVerificationKickFailuresBATTLE_VERIFICATION_KICK_FAILURES 3 — tier4UnlockStageTIER4_UNLOCK_STAGE 8 — tier2UnlockStageTIER2_UNLOCK_STAGE 4 — tier3UnlockStageTIER3_UNLOCK_STAGE 6 — leaderBonusLEADER_BONUS 0.20D — allAliveBonusALL_ALIVE_BONUS 0.10D — privilegeHelpBonusPRIVILEGE_HELP_BONUS 0.20D — currencyDivisorCURRENCY_DIVISOR 10L — idleSessionTtlMillisIDLE_SESSION_TTL_MILLIS 5 * 60 * 1000L — goldDungeonRainbowStoneLimitIdGOLD_DUNGEON_RAINBOW_STONE_LIMIT_ID 5202L — goldDungeonRainbowStoneLimitNameGOLD_DUNGEON_RAINBOW_STONE_LIMIT_NAME "打金神石兑换额度" — goldDungeonTradeableRainbowStoneLimitIdGOLD_DUNGEON_TRADEABLE_RAINBOW_STONE_LIMIT_ID 5203L — goldDungeonTradeableRainbowStoneLimitNameGOLD_DUNGEON_TRADEABLE_RAINBOW_STONE_LIMIT_NAME "打金可交易神石额度" — 来源:emberfall-server/src/main/java/com/emberfall/domain/GoldDungeonRules.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 兑换规则:
名称 数值 说明 mythicStonePointPriceMYTHIC_STONE_POINT_PRICE 500 — spiritRainbowStoneProductIdSPIRIT_RAINBOW_STONE_PRODUCT_ID "spirit-rainbow-stone" — pointMythicStoneDailyLimitIdPOINT_MYTHIC_STONE_DAILY_LIMIT_ID 5210L — pointMythicStoneDailyLimitNamePOINT_MYTHIC_STONE_DAILY_LIMIT_NAME "点券神话石每日额度" — pointMythicStoneDailyLimitPOINT_MYTHIC_STONE_DAILY_LIMIT 10 — spiritGoldRainbowStoneDailyLimitIdSPIRIT_GOLD_RAINBOW_STONE_DAILY_LIMIT_ID 5213L — spiritGoldRainbowStoneDailyLimitNameSPIRIT_GOLD_RAINBOW_STONE_DAILY_LIMIT_NAME "打金五彩神石每日额度" — spiritGoldRainbowStonePriceSPIRIT_GOLD_RAINBOW_STONE_PRICE 20_000L — spiritGoldStonePriceSPIRIT_GOLD_STONE_PRICE 200_000L — goldStonePriceGOLD_STONE_PRICE 20_000L — yuanbaoStonePriceYUANBAO_STONE_PRICE 20_000L — stoneBaseLimitSTONE_BASE_LIMIT 7 — rainbowStoneLimitMultiplierRAINBOW_STONE_LIMIT_MULTIPLIER 10 — monthlyExtraMONTHLY_EXTRA 0 — vipExtraVIP_EXTRA 0 — namingExtraNAMING_EXTRA 0 — materialPackBaseDailyLimitMATERIAL_PACK_BASE_DAILY_LIMIT 10 — materialPackNamingDailyLimitMATERIAL_PACK_NAMING_DAILY_LIMIT 30 — spiritGoldMaterialPackLimitIdSPIRIT_GOLD_MATERIAL_PACK_LIMIT_ID 5211L — spiritGoldMaterialPackLimitNameSPIRIT_GOLD_MATERIAL_PACK_LIMIT_NAME "进化材料包每日额度" — yuanbaoMaterialPackLimitIdYUANBAO_MATERIAL_PACK_LIMIT_ID 5212L — yuanbaoMaterialPackLimitNameYUANBAO_MATERIAL_PACK_LIMIT_NAME "功法材料包每日额度" — 来源:emberfall-server/src/main/java/com/emberfall/domain/GoldExchangeRules.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 权益档位(每日上限/割血/结算加成):emberfall-server/src/main/java/com/emberfall/domain/PrivilegeTier.java:10源码读取失败,片段不可用
- yml 键:无(全量常量类)
4. 数据流简述
POST /api/gold-dungeon/team/create|join 组 5 人队(GoldTeamSessionStore 内存会话),开战后 GoldBattleEngine 每秒 1 回合推进 300 秒,怪物按 GoldDungeonMonsterTier 生成、血量受 PrivilegeTier.cutRate 割血。结算按队长 +20%、全员存活 +10%、权益互助 +20% 叠加,灵金 ÷10 折算黄金/元宝,三币种按 GoldCurrencyDailyQuotaService 限额(档位上限)写 player_gold_dungeon_daily/settlement。GoldVerificationService 反作弊校验,失败达阈值踢出/禁入。兑换走商城 /api/shop/gold-exchange/*(限购池 5210/5213/5211/5212)。
5. 已知差异
无
6. 相关代码
- 商城兑换(
ShopController /gold-exchange、GoldExchangeRules) - VIP/月卡/冠名(
PrivilegeTier:权益档位) - 余烬试炼场(
trial.v2.reward-limit.gold-dungeon-shared-currencies:三币种共享打金池) - 每日限额池(
DailyLimitPool)