first commit

This commit is contained in:
2026-09-21 19:21:35 +08:00
commit 6c944c4ffd
2733 changed files with 296956 additions and 0 deletions
@@ -0,0 +1,100 @@
package com.ruoyi.admin.config;
public class RedisConstants {
// 整个应用的通用uid锁
public static final String COMMON_LOCK = "ruoyi:common:lock_";
// 游戏下注防重锁:控制层按 userId 加锁,tryLock wait=0 立即失败,锁包裹整个事务、解锁晚于提交;
// 锁粒度=单用户,仅串行同一用户的重复/并发下注,不影响其他用户,避免弱网重复提交导致重复扣款
// 注:幸运升级不在此列——其锁按 upgradeId+userType(保护跨用户共享概率计数器,属底层RTP机制),不能改为userId
public static final String OPEN_BOX_LOCK = "open_box:lock_"; // 经典开箱/盲盒
public static final String EXPONENT_JOIN_LOCK = "exponent_join:lock_"; // 指数盲盒
public static final String SUGAR_GAME_CACHE = "ruoyi:sugar:";
public static final String SUGAR_GAME_MOCK_QUEUE = "ruoyi:sugar:mock:";
public static final String SUGAR_GAME_USER_RECORD_CACHE = "ruoyi:sugar:user:record:";
public static final String SUGAR_GAME_CONFIG_CACHE = "ruoyi:sugar:config";
public static final String SUGAR_GAME_REWARD_POOL_CACHE = "ruoyi:sugar:reward:pool";
public static final String WHEEL_GAME_REWARD_POOL_CACHE = "ruoyi:wheel:reward:pool";
public static final String BULLET_GAME_REWARD_POOL_CACHE = "ruoyi:bullet:reward:pool";
// ========== Olympus 电子游戏 ==========
// 单局进行中缓存:ruoyi:olympus:{userId},存整局步骤,TTL 30 分钟
public static final String OLYMPUS_GAME_CACHE = "ruoyi:olympus:";
// 按箱奖池(水位):ruoyi:olympus:reward:pool:box:{boxId}:bet/:win/:adjust,仅统计真实玩家(白号隔离)
public static final String OLYMPUS_GAME_REWARD_POOL_CACHE = "ruoyi:olympus:reward:pool";
// 一轮内RTP动态收敛账本:Hash ruoyi:olympus:cycle:{boxId}:{audience},字段 drawn/mulSum/conv:{ornamentId}
public static final String OLYMPUS_GAME_CYCLE = "ruoyi:olympus:cycle:";
/**
* 开箱奖池
* 奖池key: baseKey:boxId:poolType
*
* @see com.ruoyi.admin.enums.BoxPoolType
*/
public static final String BASE_POOL_KEY = "prize_pool:";
// 对战模式
public static final String JOIN_FIGHT_LOCK = "join_fight:lock_";
public static final String JOIN_FIGHT_BEGIN_LOCK = "join_fight:lock_begin_";
public static final String JOIN_FIGHT_SEAT_READY_LOCK = "join_fight:lock_seat_ready_";
public static final String JOIN_FIGHT_END_LOCK = "join_fight:lock_end_";
// roll房间
public static final String JOIN_ROLL_LOCK = "join_roll:lock_";
public static final String RECEIVE_RED_PACKET_LOCK = "receive_red_packet:lock_";
public static final String CARD_PAY_LOCK = "CARD_PAY:lock_";
// 卡商生成卡密:控制层按卡商 userId 加锁(锁粒度=单卡商,不影响其他卡商),
// 锁包裹整个 @Transactional 生成过程,解锁晚于事务提交,
// 防弱网超时重试/多端重复提交导致同一批卡密生成两次、卡商余额扣两次
public static final String CARD_KEY_GENERATE_LOCK = "card_key_generate:lock_";
// 管理员变更卡商余额(充值/修改):控制层按卡商 userId 加锁(锁粒度=单卡商,不影响其他卡商),
// 防双击/弱网重试导致同一笔变动被应用两次(充值是多加一次钱,修改余额是并发下算出错误的差额)
public static final String CARD_MERCHANT_BALANCE_LOCK = "card_merchant_balance:lock_";
// 主播生成红包卡:控制层按主播 userId 加锁,防双击/弱网重试导致扣两次主播积分 + 生成两批卡
public static final String PROMO_RED_PACKET_GENERATE_LOCK = "promo_red_packet_generate:lock_";
// 主播生成 CDKEY:控制层按创建者 userId 加锁,防重复提交导致预扣两次主播余额(金额×次数×生成数量)
public static final String PROMO_CDKEY_GENERATE_LOCK = "promo_cdkey_generate:lock_";
// 管理后台生成卡密/空白卡密:控制层按管理员 userId 加锁,防重复提交生成两批卡密
public static final String RECHARGE_CARD_GENERATE_LOCK = "recharge_card_generate:lock_";
// 商城兑换 / 背包转赠:控制层按用户 userId 加锁(锁粒度=单用户,仅串行同一用户的并发请求,不影响其他用户),
// 锁包裹整个 @Transactional Service 调用,确保解锁发生在事务提交之后,杜绝弱网重复提交导致的重复扣费/重复发放
public static final String SHOPPING_EXCHANGE_LOCK = "shopping_exchange:lock_";
public static final String SHOPPING_INTEGRATING_CONVERSION_LOCK = "shopping_integrating_conversion:lock_";
public static final String TRANSFER_LOCK = "user_transfer:lock_";
// 幸运升级
public static final String UPGRADE_RANGE = "upgrade_range:"; // 概率区间 '业务key:饰品id:用户类型'
public static final String UPGRADE_RANGE_FIXED = "upgrade_range_fixed:"; // 固定概率 '业务key:饰品id:用户类型'
/**
* 抽奖box的奖品空间
* open_box_goods_apace:
* box_id:
* odds_key:
* valua
*/
public static final String OPEN_BOX_GOODS_SPACE = "open_box_goods_apace:";
public static final String OPEN_BOX_LOTTERY = "open_box_lottery:";
// 支付拉单频控:x分钟内y次拉单未支付则封禁z分钟(当前 x=5,y=3,z=10)
// 次数缓存:key=前缀+uid,值=累计未支付拉单次数,TTL=x分钟
public static final String PAY_PULL_UNPAID_COUNT = "pay:pull:unpaid:count_";
// 封禁缓存:key=前缀+uid,值=z,TTL=z分钟
public static final String PAY_PULL_BAN = "pay:pull:ban_";
// 流水抽奖:按 userId 加锁,防止并发重复消耗流水/重复发奖
public static final String TURNOVER_LOTTERY_DRAW_LOCK = "turnover_lottery:draw:lock_";
// 流水抽奖:按宝箱 lotteryId 加锁,防止不同用户并发导致奖品超发
public static final String TURNOVER_LOTTERY_DRAW_BOX_LOCK = "turnover_lottery:draw:box:lock_";
}