如何设计一个抽奖系统

抽奖在我儿时的印象里,是一个非常神秘、非常刺激、也非常有意思的事儿。小时候妈妈带我去商场里,当购物金额达到一定门槛时,可以获得抽奖机会。

抽奖的形式也非常简单,在一个不透明的箱子里放着很多小纸条或者小球,抽奖盒子上有一个仅一拳大小的入口,手伸进去随机摸一张纸条或小圆球,上面写着所抽到的奖品,妈妈总会让我去抽。虽然我抽到基本上都是最普通的奖品,但是整个抽奖过程中充满期待又未知的体验还是令人着迷。

后来逐步演化出了更多的抽奖方式,比如很常见的转盘抽奖。转盘抽奖的规则也很简单,转盘上被划分了 n 个全等的扇形,每个扇形上都分别标注了奖品。转动转盘后,当指针落在某一个扇形区间时,你就获得了扇形上对应的奖品。

这个是某平台的抽奖活动:

随着互联网的普及,抽奖也逐步推广为线上化,那么从产品角度看,如何设计一个抽奖系统呢?

一、系统设计思路

首先要确定设计思路,设计思路围绕【谁】【在什么场景】【做什么】进行分析。

套用这个逻辑分析:用户在活动下进行抽奖。

所以角色有两方:【用户】【活动发起方】(这里用运营指代)。

  • 场景:抽奖活动,即运营在后台配置活动。
  • 行为:抽奖,即用户基于活动在c端进行抽奖。

二、抽奖系统模块

一套抽奖系统主要是分为两个大模块:

  1. c 端面向用户的活动页;
  2. b 端创建活动的后台。

c 端活动页一般都是 h5 的配置页面,主要的逻辑通过某个标识和后台配置的活动关联。h5 页面上承接了规则介绍、交互形式的说明,通过调用抽奖系统的 api,将返回结果渲染在页面上,这里不多赘述。

b 端后台主要是定义活动时间、奖品、以及奖品概率、设置抽奖活动状态等。

奖池:奖品归属于某个奖池、一个活动也可以有不同的奖池。本身奖品是有库存的概念,多奖池从底层设计上可以理解为主要是为了区分库存池。

奖品类型:常见的奖品类型主要是包含实物、虚拟商品如权益、优惠券以及现金这几种类型。不同类型的奖品本质最大的区别是履约方式的不同。

1)实物:实物需要物流履约,所以在设计上需要考虑发货流程、单号信息的回传与通知。

2)虚拟商品(如优惠券、虚拟权益):虚拟物权一般都是由系统触发,设计上需要考虑和履约系统的交互,触发履约的时间点,以及下发履约后的信息的通知。

3)现金:不同面额的现金可以看作一个单独的奖品。这些奖品都在一个现金池中,现金池可以理解为奖池。由于直接发放现金的操作比较敏感,常规流程中,需要关联预算,而且现金奖池也区分于其他奖池。在奖池、奖品设置时,需要联动内部付款系统指定现金发放方式。

奖品概率:想象一下我们使用大转盘来抽奖时,每个奖品会占用一定角度的扇区,设角度为「α」,起初所有奖品占的扇区角度之和为 360 度,该奖品的中奖概率是「α / 360」。在系统设计上,为了便于理解,我们通常用百分比来进行设置概率,所有奖品的概率加起来要满足 100% 。在技术实现上,用到了随机数算法,结合所配置奖品的中奖概率,完成抽奖的逻辑。

抽奖活动:抽奖活动顾名思义,其实就是围绕抽奖的一个配置,主要的信息是活动名称、奖品名称、奖品库存、奖品图片、中奖文案以及一些自动回复的设置,每个活动都有唯一一个标识。

三、个人思考

在常见的设计中,抽奖机会也是可以通过积分兑换这种形式获取。用户如果想要抽奖,一般会有一个门槛,比如需要连续签到、或者通过其他各种活动的获得积分来兑换抽奖机会等等,规则简单的可能当天登陆即可获得抽奖机会。

抽奖时,每个扇形都有不同的奖品、每个用户有剩余可抽奖次数。虽然扇形都是全等的,但是每个奖品的概率可以是自定义的。比如90%用户都会抽到谢谢参与,只有10%用户才会抽到奖品。

从这个场景看,抽奖和兑换的实现逻辑其实非常相似,本质上都是一种兑换逻辑,但是抽奖和兑换的关键区分在于抽奖有很多随机定性,而兑换是百分百命中获得的。

作者

闫秀儿,微信公众号:闫秀儿。持续沉淀、持续成长的交易产品。

本文

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部