程序目的
通过此程序,可以让用户通过注册开通的方式,构建符合自己要求和适用场景的抽奖活动页面。
最终达到的要求是此程序要能适用于市场上 80% 的抽奖场景。
特别要注意的是,抽奖和开奖的概念。
抽奖 是指用户自己主动参与抽取奖品,系统实时的根据概率反馈给用户对应的奖品。
开奖 则是将用户名单或编号放入抽奖池中,然后从抽奖池中抽取的用户。
简单的说就是:抽奖抽的是奖品,开奖抽的是人。
本方案计划开发的是抽奖平台,不含开奖功能,开奖功能的平台将在另外一套方案中整理。
初步要实现的功能:
- 要能支持多端设备,包括手机、电脑、平板。
- 要有丰富的,可不断增加的抽奖模式库,可以让用户*切换。例如像大转盘、砸金蛋、刮刮卡、摇一摇等等。并且除了可以切换不同的抽奖模式外,还要能在指定奖模式的情况下,切换不同的页面风格。
- 要能支持多种应用场景,比如接入微信公众号(使用微信身份参与抽奖)、接入网址/APP、或是不做任何接入(使用登记游客资料的方式参与抽奖)、还有就是例如线下门店消费抽奖、零售产品扫码抽奖等。
- 要能支持多样化的奖品,例如:实物奖品、微信红包、手机话费、礼品兑换券、卡密奖品等,还有就是通过API发放的第三方奖品,例如用户积分、优惠券等。
- 要有完善的抽奖概率设置机制,可以设置每个奖品的中奖概率,同时也要能限制奖品发放数量。可以让某些用户指定抽中某奖品等等。
- 抽奖资格的发放要多样化,比如可以指定用户可抽奖的次数,或者通过签到来获得抽奖机会。还有通过扫码抽奖码来获得抽奖机会。另外也要支持通过API来实现动态给用户增加抽奖机会,比如某商城要求满XX元获得一次抽奖机会的情况。
- 要有有一个商户平台(抽奖活动的第三方参与者),商户登录平台可以查询用户的兑奖券是否有效并进行核销。同时还要要给设置项来设置商户是否可以生成活动抽奖券。
- 要有白名单机制,能设置只有指定条件的用户才能参与抽奖活动。
- 必须支持多用户,用户开通后可以使用账号密码登录平台。配置自己的抽奖活动。特别要注意的是,同时用户要能绑定自己的域名,或者将抽奖程序前端放入到自己的平台中。
- 必须要有开放 API,要能让第三方平台简单快速的接入到抽奖系统,实现与第三方平台用户同步登录状态,并且能将第三方的虚拟物品作为抽奖的奖品。
暂时就想到这么多,后面的篇幅可能还会对细节进行不同程度的扩展和补充。
此处的功能设计,部分参考自乐智抽奖插件(http://www.lezhi99.com/)。并在其基础上做了大量提升。
程序架构
整个系统采用前后端分离的模式开发,说明如下:
- 后端引擎:采用 php + mysql 开发,提供一切前端需要的数据交互接口支持。
- 管理平台:找一些现成的后台框架,使用 API 方式和后端引擎通讯。用于对活动进行配置。
- 活动平台:供用户访问的活动页面,基于H5技术,通过API与后端引擎进行通讯,完成活动情境的交互。
架构图示例
采用前后端分离的方式,可以使将前端文件放到用户服务器*问。从而实现一些特殊需求。例如用户要把抽奖嵌入微信小程序里面是需要域名授权的。这样用户可以放到自己现有域下面进行访问。
一些相关技术链接,仅供参考和选用:
后台模版考虑选用 layuiAdmin:https://www.layui.com/admin/
RESTfull 接口规范:https://www.jianshu.com/p/5659e6e16115
AJAX 跨域问题:https://segmentfault.com/a/1190000012469713
JWT 接口认证机制:https://www.jianshu.com/p/85fbe649a239