tourze/lottery-bundle

抽奖模块

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:symfony-bundle

0.0.2 2025-06-03 18:39 UTC

This package is auto-updated.

Last update: 2025-06-03 19:03:42 UTC


README

中奖概率参考设计: https://zhuanlan.zhihu.com/p/375142427

目前的设计是每个机会都落库,后面的抽奖其实就是取一个记录然后去更新。 这种方式好处是机会管理简单了,坏处不容易适配定制的机会次数管理。 例如 Loyalty 的机会是根据积分数来计算得来的,那么就不太适合了。

一次完整的抽奖,大概流程是:

  1. 检查活动状态;
  2. 确定一个有效的Chance;
  3. 预扣Chance;
  4. 确定奖池;
  5. 从奖池中选中一个奖品;
  6. 实扣Chance;

实现思路,参考一些已有的活动,我们思考我们系统怎么去满足:

  1. https://wuxia.qq.com/webplat/info/news_version3/5012/5013/5014/5016/m3486/202204/913177.shtml 2022年04月18日青龙秘宝活动规则
  2. https://www.woshipm.com/pd/4962252.html 中奖不易,抽奖活动设计更不易 里面关于抽奖模型的设计还不错
  3. https://zhuanlan.zhihu.com/p/139769916 关于抽奖的逻辑
  4. https://zhuanlan.zhihu.com/p/534645684 【游戏数值策划】抽奖模型的设计与分析 这个值得认真看

TODO:

  1. 活动规则;
    1. 开放日期限制;
    2. 开放时间限制;
    3. 每人每日赠送次数;
    4. 每人每日中奖次数限制;
    5. 每人总赠送次数;
    6. 每人总中奖次数限制;
    7. 随机分配奖池;
    8. 抽满次数奖池进阶;
    9. 连抽赠送新机会;
    10. 连抽必中指定奖品;
    11. 全服礼包(整个活动有N人参与后,则前面参与的用户直接发放指定奖品);
  2. 奖池规则;
  3. 奖品规则;
  4. 奖品的设计问题:我们到底是维护单独的奖品呢,还是做到SPU/SKU管理去;
  5. 实物奖的发奖:我们是直接同步到订单模块去,还是自己单独维护?
  6. 支持扣积分的方式来参与活动