外观
VIP · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/PlayerController(/api/player/info) | VIP 等级/累计充值返回 |
| Service | service/VipExperienceService | VIP 经验入账(increaseVipExperience)与等级提升 |
| Service | service/InventoryService | 充值元宝消耗时触发 VIP 经验(VipExperienceSource.VIP_ITEM_USE) |
| domain | domain/ShopBalanceRules | VIP 阈值与权益常量 |
| domain | domain/VipExperienceSource | 经验来源枚举:PAID_RECHARGE/ADMIN_GRANT/VIP_ITEM_USE/REFERRAL_COMMISSION/DATA_FIX/ROLLBACK_RESTORE |
| domain | domain/PlayerPrivilege | 玩家特权模型(vipLevel/totalRecharge/月卡/终身卡/冠名) |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
player_privilege | player_id、vip_level、total_recharge、monthly_card_expire_at、lifetime_card_expire_at、naming_expire_at | 玩家特权(V8,V10/V26/V57 扩展) |
vip_experience_change | player_id、delta、source、create_time | VIP 经验流水(V58) |
3. 配置与常量
- VIP 阈值与神石额度:
名称 数值 说明 welfareTicketIdWELFARE_TICKET_ID 4001L — rainbowStoneIdRAINBOW_STONE_ID 4002L — monthlyCardIdMONTHLY_CARD_ID 4003L — namingCardIdNAMING_CARD_ID 4004L — lifetimeCardIdLIFETIME_CARD_ID 4005L — welfareTicketNameWELFARE_TICKET_NAME "福利点券" — dailySignInRewardTicketsDAILY_SIGN_IN_REWARD_TICKETS 1_000 — rainbowStoneNameRAINBOW_STONE_NAME "五彩神石" — monthlyCardNameMONTHLY_CARD_NAME "月卡" — namingCardNameNAMING_CARD_NAME "冠名卡" — lifetimeCardNameLIFETIME_CARD_NAME "终身卡" — namingNameNAMING_NAME "冠名" — dailyWelfareChallengeLimitDAILY_WELFARE_CHALLENGE_LIMIT 100 — rainbowStonePriceRAINBOW_STONE_PRICE 100 — baseDailyStoneLimitBASE_DAILY_STONE_LIMIT 50 — monthlyCardExtraStoneLimitMONTHLY_CARD_EXTRA_STONE_LIMIT 50 — namingExtraStoneLimitNAMING_EXTRA_STONE_LIMIT 400 — lifetimeCardSweepQuotaBonusLIFETIME_CARD_SWEEP_QUOTA_BONUS 10 — serverDailyStoneLimitSERVER_DAILY_STONE_LIMIT 600 — worldHornLimitIdWORLD_HORN_LIMIT_ID 9501L 世界喇叭福利点券兑换(对齐 docs/33 §4.2) worldHornLimitNameWORLD_HORN_LIMIT_NAME "世界喇叭日限购" — worldHornPriceWORLD_HORN_PRICE 100 — dailyWorldHornLimitDAILY_WORLD_HORN_LIMIT 10 — rainbowStoneResonanceRatePerStoneRAINBOW_STONE_RESONANCE_RATE_PER_STONE 0.0004D VIP7 最终 ×1.5、VIP8 基础 +1 / 最终 ×1.5;VIP9/10 数值权益并入 VIP8。 vip5GrowthThresholdVIP5_GROWTH_THRESHOLD 5 — vip6GrowthThresholdVIP6_GROWTH_THRESHOLD 6 — vip7GrowthThresholdVIP7_GROWTH_THRESHOLD 7 — vip8GrowthThresholdVIP8_GROWTH_THRESHOLD 8 — monthlyCardGrowthBaseContributionMONTHLY_CARD_GROWTH_BASE_CONTRIBUTION 1 — vip5GrowthBaseContributionVIP5_GROWTH_BASE_CONTRIBUTION 1 — vip6GrowthBaseContributionVIP6_GROWTH_BASE_CONTRIBUTION 1 — vip8GrowthBaseContributionVIP8_GROWTH_BASE_CONTRIBUTION 1 — namingGrowthBaseContributionNAMING_GROWTH_BASE_CONTRIBUTION 1 — lifetimeCardGrowthBaseContributionLIFETIME_CARD_GROWTH_BASE_CONTRIBUTION 1 — monthlyCardFinalMultiplierMONTHLY_CARD_FINAL_MULTIPLIER 1.2D — lifetimeCardFinalMultiplierLIFETIME_CARD_FINAL_MULTIPLIER 1.2D — vip5FinalMultiplierVIP5_FINAL_MULTIPLIER 1.2D — vip7FinalMultiplierVIP7_FINAL_MULTIPLIER 1.5D — vip8FinalMultiplierVIP8_FINAL_MULTIPLIER 1.5D — namingFinalMultiplierNAMING_FINAL_MULTIPLIER 2.0D — baseGrowthRateBASE_GROWTH_RATE 5.0D — monthlyCardAttackSpeedBonusMONTHLY_CARD_ATTACK_SPEED_BONUS 2.0D — lifetimeCardAttackSpeedBonusLIFETIME_CARD_ATTACK_SPEED_BONUS 2.0D — namingAttackSpeedBonusNAMING_ATTACK_SPEED_BONUS 3.0D — namingExtraTicketsNAMING_EXTRA_TICKETS 500 — mountDropRateMOUNT_DROP_RATE 0.001D 坐骑掉率,对齐进阶石 mountMaterialQtyEasyMOUNT_MATERIAL_QTY_EASY 50 坐骑/翅膀副本升级材料按怪物分级掉落(百次模型,NORMAL 100 颗/次) mountMaterialQtyNormalMOUNT_MATERIAL_QTY_NORMAL 100 — mountMaterialQtyHardMOUNT_MATERIAL_QTY_HARD 150 — mountMaterialQtyEliteMOUNT_MATERIAL_QTY_ELITE 200 — mountMaterialQtyBossMOUNT_MATERIAL_QTY_BOSS 250 — entryDungeonMaterialMultiplierENTRY_DUNGEON_MATERIAL_MULTIPLIER 0.40D — wingDropRateWING_DROP_RATE 0.001D 翅膀副本掉落与升级消耗(对齐 docs/翅膀玩法设计文档.md §5),数值镜像坐骑。 petDropRatePET_DROP_RATE 0.001D — materialDungeonVipBonusPerRunMATERIAL_DUNGEON_VIP_BONUS_PER_RUN 0.5D VIP5+ 每场 +50% materialDungeonMonthlyBonusPerRunMATERIAL_DUNGEON_MONTHLY_BONUS_PER_RUN 0.5D 月卡 每场 +50% materialDungeonNamingBonusPerRunMATERIAL_DUNGEON_NAMING_BONUS_PER_RUN 1.0D 冠名 每场 +100% materialDungeonMaxRewardMultiplierMATERIAL_DUNGEON_MAX_REWARD_MULTIPLIER 3.0D — materialDungeonTierEasyFactorMATERIAL_DUNGEON_TIER_EASY_FACTOR 0.25D 更高难度(BOSS)有真实溢价,更低难度(EASY/NORMAL/HARD)产出下降,纠正"所有难度一样"的体验。 materialDungeonTierNormalFactorMATERIAL_DUNGEON_TIER_NORMAL_FACTOR 0.5D — materialDungeonTierHardFactorMATERIAL_DUNGEON_TIER_HARD_FACTOR 0.75D — materialDungeonTierEliteFactorMATERIAL_DUNGEON_TIER_ELITE_FACTOR 1.0D — materialDungeonTierBossFactorMATERIAL_DUNGEON_TIER_BOSS_FACTOR 1.25D — welfareBaseTicketsWELFARE_BASE_TICKETS 10 福利怪掉落规则(加法模型,可叠加) monthlyCardExtraTicketsMONTHLY_CARD_EXTRA_TICKETS 100 — maxVipLevelMAX_VIP_LEVEL 10 — maxVipBenefitLevelMAX_VIP_BENEFIT_LEVEL 8 承载数值权益的最高 VIP 等级(docs/64 §1.3):VIP1-8 承载全部成长、战斗、材料、 额度、次数与便利加成,VIP9/10 是荣誉等级、不再提供任何数值权益。 所有依赖 VIP 等级的数值权益一律用 {@link #effectiveVipLevel(int)} 取等级。 vipThresholdsVIP_THRESHOLDS { 0, 600, 3_000, 6_800, 12_800, 25_800, 64_800, 150_000, 300_000, 500_000, 1_000_000 } VIP0 vipWelfareTicketBonusVIP_WELFARE_TICKET_BONUS {0, 10, 10, 35, 35, 75, 110, 150, 200} VIP1-8 固定档位加成(docs/64 §1.3):索引即 VIP 等级,VIP2/VIP4 不重复加成, 累计值 = 本级数组值(VIP8 封顶 +200)。 vipStoneLimitBonusVIP_STONE_LIMIT_BONUS {0, 10, 10, 35, 35, 75, 110, 150, 200} — vipAttackSpeedBonusVIP_ATTACK_SPEED_BONUS {0.0D, 0.10D, 0.10D, 0.35D, 0.35D, 0.75D, 1.10D, 1.50D, 2.00D} — 来源:emberfall-server/src/main/java/com/emberfall/domain/ShopBalanceRules.java· commit22d062aff99fabdc373f3b1c82b2a6eff4a034d3 - 关键常量:
VIP_THRESHOLDS = {0,600,3000,6800,12800,25800,64800,150000,300000,500000,1000000}(累计充值经验,1 元 = 100 经验,10 档)、MAX_VIP_LEVEL=10、MAX_VIP_BENEFIT_LEVEL=8(数值权益封顶档,VIP9/10 为荣誉等级);每日神石额度 = 基础 50 + 月卡 50 + VIP 固定档位(VIP8 封顶 +200)+ 冠名 400,封顶 600(SERVER_DAILY_STONE_LIMIT);VIP 攻速为 VIP1-8 固定档位表VIP_ATTACK_SPEED_BONUS(VIP1 +0.10 … VIP8 +2.00 封顶) - 成长档位(docs/64 §1.6,
growthBaseMultiplier/growthFinalMultiplier逐级累加):VIP5_GROWTH_BASE_CONTRIBUTION=1、VIP5_FINAL_MULTIPLIER=1.2、VIP6_GROWTH_BASE_CONTRIBUTION=1、VIP7_FINAL_MULTIPLIER=1.5、VIP8_GROWTH_BASE_CONTRIBUTION=1、VIP8_FINAL_MULTIPLIER=1.5;VIP5/6/7/8 累计基础倍率 +1/+2/+2/+3,累计最终倍率 ×1.2/×1.2/×1.8/×2.7,VIP9/10 并入 VIP8 不追加 - 有效等级口径(docs/64 §1.3):固定档位表用
effectiveVipLevel(封顶 VIP8);线性次要权益(试炼额度/掉落/副本次数/灵金上限等)用mergedVipLevel(VIP8 吸收原 VIP9/10 增量,取等级 10 计算,保证单项满额不缩水);VIP9/10 不追加任何数值权益 - 迁移:
V149__vip_curve_rebalance.sql按新阈值重算存量账号vip_level(只降不升,不重触发达成礼) - yml 键:无(阈值与权益为常量类;试炼侧档位在
application.yml的emberfall.trial.v2.entry.*,其中vip10-bonus现按 VIP8 生效)
4. 数据流简述
充值券使用 → InventoryService 调用 VipExperienceService.increaseVipExperience(playerId, rechargeAmount, source),经验写 vip_experience_change、累计进 player_privilege.total_recharge,按 VIP_THRESHOLDS 提升 vip_level。VIP 权益(每日神石额度、福利点券固定档位、成长倍率、余烬试炼场入场 vip5-bonus/vip10-bonus(现并入 VIP8)、交易手续费 5% 档)由各系统读取 PlayerPrivilege 生效。
5. 已知差异
无
6. 相关代码
- 商城(
ShopService:权益展示与神石兑换) - 月卡/终身卡(
ShopBalanceRules.MONTHLY_CARD_FINAL_MULTIPLIER) - 余烬试炼场(
trial.v2.entry.vip5-bonus/vip10-bonus,VIP10 档现按 VIP8 生效) - 推荐返利(
ReferralRules.VIP5_REWARD)