大转盘抽奖活动的设计
需求是这样的,后台可以配置大转盘活动的要素,主要的是空奖个数,空奖概率,各奖项的总数量,每日数量,中奖概率。除此之外还有参加的城市、客群、每人中奖上限等等,这个做好校验就行。
里面有两个需要注意的地方:一是如何按照概率中奖,二是各个奖项不能超中或少中。
如何按照概率中奖
后台有校验,奖项概率加起来满足100%。这里把奖项包括空奖合并起来,不必考虑顺序,给一个0到100的刻度,按照每个奖项的中奖概率,分配一个范围,然后才0到100中取随机数,落在哪个刻度段上,就是哪个奖。
如果概率是0.1%或者0.01%,可以把刻度上限给到1000或10000。如果概率加起来满足100%,那就把各奖项的概率除以概率的总和,根据这个概率进行抽奖。
各个奖项不能超中或少中
尤其在活动刚开始,用户都在抽奖,高并发的场景下,如何保证奖项不能超中或者少中。
- (防止频繁查库)前端加限制,防重复点击,N秒才能触发一次。
- (防止频繁查库)加redis分布式锁,key为用户id+活动id,N秒才能触发一次,没抢到锁,给用户返回操作太频繁。
- (防止频繁查库,超中)redis预热,每天首次查活动详情时,要给用户返回奖品信息,以活动id+奖品id+当天日期为key,每日数量为value,存到redis中,抽中奖项后,使用redis的原子操作decr减去数量,当返回的值小于0时,代表每日库存不足,返回空奖。
- (防止超中)扣减总库存时,增加乐观锁,update条件增加中奖数量小于等于总数量,返回条数小于1时,代表更新失败,返回空奖。
- (防止少中)用户中奖后,会优先在redis中减一,后面的更新总库存操作,插入抽奖记录操作等等,如有报错,或者业务校验等问题不能中奖时,需要把redis中的每日中奖数量incr加回来。
大转盘抽奖活动的设计相关推荐
- 微信公众号大转盘抽奖活动链接怎么添加
很多微信公众号都会有抽奖活动,想要给自己的公众号添加大转盘抽奖活动的链接,希望可以帮助大家在微信公众号中举办起抽奖活动,活跃起自己的粉丝,该怎么添加呢?下面我们就来看看详细的教程. 微信公众号大转盘抽 ...
- qq开放平台之站内应用-php抽奖大转盘,jQuery实现大转盘抽奖活动仿QQ音乐代码分享...
jQuery实现大转盘抽奖活动仿QQ音乐抽奖特效源码是一款基于jQuery,点击大转盘开始抽奖可抽到绿钻的仿qq音乐抽奖转盘的代码. 运行效果图:--------------------------- ...
- 测试用例设计思路一则----大转盘活动测试用例设计
大转盘活动测试用例设计 题目:2019年双11公司内部员可参与抽奖,每人每天可参与一次抽奖,好友助力,最多额外获得3次机会. 思路: **一.功能验证,**所有的功能点是否符合需求设计,比如 1)身份 ...
- vue加js实现大转盘抽奖活动
1.写大转盘的页面,这里是我的整个页面的代码 }, created() { this.ais = localStorage.getItem('ais') }, computed: { classOpt ...
- js实现大转盘抽奖活动
一.建立html页面 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...
- 大转盘抽奖活动免费创建
1. 微信搜索小程序"多盈抽奖助手". 2.点击立即创建 3.选择标准版免费创建 4.填写活动相关参数,支持实名抽奖,口令抽奖,限制地域抽奖,自定义主题,门店核销等. 5.创建好之 ...
- python 写一个幸运大转盘抽奖脚本
大转盘抽奖活动 def get_value(): import random list1 = {"id": 1, "name": "1000元&quo ...
- uni-app开发经验分享二十二: uni-app大转盘思路解析
最近在研究uni-app,制作了一个很有意思的集合项目demo,这里给大家分享下大转盘的前端设计思路需求案例:大转盘抽奖 线上demo查看: 案例效果: 制作思路: 前端大转盘使用css3动画来做,在 ...
- 小程序的大转盘活动怎么做?
日常生活中最常见的抽奖活动莫过于大转盘抽奖了吧,无论线上线下.大转盘抽奖活动具有多样性.并可开展基于粘性维护的活动:跨界营销.会员积分.互动抽奖.红包.优惠等线上线下活动,并能通过连续扫码.会员积分. ...
- 产品经理的金字塔之旅---抽奖大转盘产品逻辑
抽奖大转盘产品逻辑 作为一个好的活动推广,抽奖大转盘这一活动往往是必不可少的.但是之前作为一个用户角度单纯的只是希望自己可以中奖,根本不会从产品的角度去思考这一产品逻辑,现作为一名产品经理才明白并不是 ...
最新文章
- 一夜间,中英同时发布新冠疫苗临床试验结果:均可引起免疫反应,同时登上《柳叶刀》...
- 【网址收藏】Centos7.3离线(rpm方式)安装mysql服务
- Cpp 对象模型探索 / placement new 实现原理
- CyanogenMod源码编译模拟器
- 微信小程序开发学习记录01
- OPENNMS的后台并行管理任务
- 贷款利润最大化——利用随机森林和逻辑回归
- Hibernate3的jar包
- AI 开发者不容错过的 20 个机器学习和数据科学网站
- python读取手机通讯录_python爬取通讯录
- python使用cookie登陆新浪微博用户信息
- 高通WLAN框架学习(3)- -WLAN FTM 模式
- 计算机原理与体系结构王海瑞答案,袁梅
- 其实我(微笑哥)是个正经男人!
- 新浪云、腾讯云、阿里云、百度云、谷歌云、亚马逊云的区别是什么,哪个更适合国内创业者使用?
- android camera使用ISO值录制视频
- 从两万亿医疗市场中寻找IT商机
- java在线答题系统,上岸蚂蚁金服!
- 基于ITIL的医院信息化服务管理实践(客户说)
- C#问题——CS1591 缺少对公共可见类型或成员的 XML 注释