抽奖系统代码教程展示 java抽奖程序代码

多条告白如次剧本只需引入一次
概括
名目开拓中常常会有抽奖如许的经营销售震动的需要,比方:积分大天桥、刮刮乐、赌博机之类多种情势,本来后盾的实行本领是一律的,正文引见一种常用的抽奖实行本领 。
所有抽奖进程囊括以次几个上面:
奖品奖品池抽奖算法奖品控制奖品散发奖品
奖品囊括奖品、奖品几率和控制、奖品记载 。
奖品表:
CREATE TABLE `points_luck_draw_prize` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL COMMENT '奖品称呼',`url` varchar(50) DEFAULT NULL COMMENT '图片地方',`value` varchar(20) DEFAULT NULL,`type` tinyint(4) DEFAULT NULL COMMENT '典型1:红包2:积分3:领会金4:感谢光顾5:自设置',`status` tinyint(4) DEFAULT NULL COMMENT '状况',`is_del` bit(1) DEFAULT NULL COMMENT '能否简略',`position` int(5) DEFAULT NULL COMMENT '场所',`phase` int(10) DEFAULT NULL COMMENT '期数',`create_time` datetime DEFAULT NULL,`update_time` datetime DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8mb4 COMMENT='奖品表';奖品几率控制表:
CREATE TABLE `points_luck_draw_probability` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`points_prize_id` bigint(20) DEFAULT NULL COMMENT '奖品ID',`points_prize_phase` int(10) DEFAULT NULL COMMENT '奖品期数',`probability` float(4,2) DEFAULT NULL COMMENT '几率',`frozen` int(11) DEFAULT NULL COMMENT '商品抽中后的冷冻度数',`prize_day_max_times` int(11) DEFAULT NULL COMMENT '该商品平台每天最多抽中的度数',`user_prize_month_max_times` int(11) DEFAULT NULL COMMENT '每位用户每月最多抽中该商品的度数',`create_time` datetime DEFAULT NULL,`update_time` datetime DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=114 DEFAULT CHARSET=utf8mb4 COMMENT='抽奖几率控制表';奖品记载表:
CREATE TABLE `points_luck_draw_record` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`member_id` bigint(20) DEFAULT NULL COMMENT '用户ID',`member_mobile` varchar(11) DEFAULT NULL COMMENT '中奖用户大哥大号',`points` int(11) DEFAULT NULL COMMENT '耗费积分',`prize_id` bigint(20) DEFAULT NULL COMMENT '奖品ID',`result`*** allint(4) DEFAULT NULL COMMENT '1:中奖 2:未中奖',`month` varchar(10) DEFAULT NULL COMMENT '中奖月份',`daily` date DEFAULT NULL COMMENT '中奖日子(不囊括功夫)',`create_time` datetime DEFAULT NULL,`update_time` datetime DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3078 DEFAULT CHARSET=utf8mb4 COMMENT='抽奖记载表';奖品池
奖品池是按照奖品的几率和控制组建成的抽奖用的池子 。重要囊括奖品的总池值和每个奖品所占的池值(分为发端值和中断值)两个维度 。最新口试题整治好了,点击Java口试库小步调在线刷题 。
奖品的总池值:一切奖品池值的总和 。每个奖品的池值:算法不妨灵活,常用的有以次两种办法 :奖品的几率*10000(保护是平头)奖品的几率10000奖品的结余数目奖品池bean:
public class PrizePool implements Serializable{/*** 总池值*/private int total;/*** 池中的奖品*/private List<PrizePoolBean> poolBeanList;}池中的奖品bean:
public class PrizePoolBean implements Serializable{/*** 数据库中如实奖品的ID*/private Long id;/*** 奖品的发端池值*/private int begin;/*** 奖品的中断池值*/private int end;}奖品池的组建代码:
【抽奖系统代码教程展示java抽奖程序代码】/*** 获得超等大财主的奖品池* @param zillionaireProductMap 超等大财主奖品map* @param flag true:有现款false:无现款* @return*/private PrizePool getZillionairePrizePool(Map<Long, ActivityProduct> zillionaireProductMap, boolean flag) {//总的奖品池值int total = 0;List<P

    推荐阅读