WEB通用抽奖程序设计(一)基础架构以及程序目标

现在计划开发一套线抽奖程序,这套程序是一种通用的抽奖程序,基于H5技术开发,要能覆盖大部分线上、线下的抽奖场景。

程序目的

通过此程序,可以让用户通过注册开通的方式,构建符合自己要求和适用场景的抽奖活动页面。
最终达到的要求是此程序要能适用于市场上 80% 的抽奖场景。

特别要注意的是,抽奖开奖的概念。
抽奖 是指用户自己主动参与抽取奖品,系统实时的根据概率反馈给用户对应的奖品。
开奖 则是将用户名单或编号放入抽奖池中,然后从抽奖池中抽取的用户。
简单的说就是:抽奖抽的是奖品,开奖抽的是人。
本方案计划开发的是抽奖平台,不含开奖功能,开奖功能的平台将在另外一套方案中整理。

初步要实现的功能:

  • 要能支持多端设备,包括手机、电脑、平板。
  • 要有丰富的,可不断增加的抽奖模式库,可以让用户*切换。例如像大转盘、砸金蛋、刮刮卡、摇一摇等等。并且除了可以切换不同的抽奖模式外,还要能在指定奖模式的情况下,切换不同的页面风格。
  • 要能支持多种应用场景,比如接入微信公众号(使用微信身份参与抽奖)、接入网址/APP、或是不做任何接入(使用登记游客资料的方式参与抽奖)、还有就是例如线下门店消费抽奖、零售产品扫码抽奖等。
  • 要能支持多样化的奖品,例如:实物奖品、微信红包、手机话费、礼品兑换券、卡密奖品等,还有就是通过API发放的第三方奖品,例如用户积分、优惠券等。
  • 要有完善的抽奖概率设置机制,可以设置每个奖品的中奖概率,同时也要能限制奖品发放数量。可以让某些用户指定抽中某奖品等等。
  • 抽奖资格的发放要多样化,比如可以指定用户可抽奖的次数,或者通过签到来获得抽奖机会。还有通过扫码抽奖码来获得抽奖机会。另外也要支持通过API来实现动态给用户增加抽奖机会,比如某商城要求满XX元获得一次抽奖机会的情况。
  • 要有有一个商户平台(抽奖活动的第三方参与者),商户登录平台可以查询用户的兑奖券是否有效并进行核销。同时还要要给设置项来设置商户是否可以生成活动抽奖券。
  • 要有白名单机制,能设置只有指定条件的用户才能参与抽奖活动。
  • 必须支持多用户,用户开通后可以使用账号密码登录平台。配置自己的抽奖活动。特别要注意的是,同时用户要能绑定自己的域名,或者将抽奖程序前端放入到自己的平台中。
  • 必须要有开放 API,要能让第三方平台简单快速的接入到抽奖系统,实现与第三方平台用户同步登录状态,并且能将第三方的虚拟物品作为抽奖的奖品。

暂时就想到这么多,后面的篇幅可能还会对细节进行不同程度的扩展和补充。
此处的功能设计,部分参考自乐智抽奖插件(http://www.lezhi99.com/)。并在其基础上做了大量提升。

程序架构

整个系统采用前后端分离的模式开发,说明如下:

  • 后端引擎:采用 php + mysql 开发,提供一切前端需要的数据交互接口支持。
  • 管理平台:找一些现成的后台框架,使用 API 方式和后端引擎通讯。用于对活动进行配置。
  • 活动平台:供用户访问的活动页面,基于H5技术,通过API与后端引擎进行通讯,完成活动情境的交互。

架构图示例

WEB通用抽奖程序设计(一)基础架构以及程序目标

采用前后端分离的方式,可以使将前端文件放到用户服务器*问。从而实现一些特殊需求。例如用户要把抽奖嵌入微信小程序里面是需要域名授权的。这样用户可以放到自己现有域下面进行访问。

一些相关技术链接,仅供参考和选用:

后台模版考虑选用 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

WEB通用抽奖程序设计(一)基础架构以及程序目标

上一篇:从零开始使用 Webpack 搭建 Vue3 开发环境


下一篇:Java RandomAccessFile与MappedByteBuffer