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

  • 生活
  • 2023-04-25 13:10

多条告白如次剧本只需引入一次

概括

名目开拓中常常会有抽奖如许的经营销售震动的需要,比方:积分大天桥、刮刮乐、赌博机之类多种情势,本来后盾的实行本领是一律的,正文引见一种常用的抽奖实行本领。

所有抽奖进程囊括以次几个上面:

奖品奖品池抽奖算法奖品控制奖品散发奖品

奖品囊括奖品、奖品几率和控制、奖品记载。

奖品表:

CREATETABLE`points_luck_draw_prize`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`name`varchar(50)DEFAULTNULLCOMMENT'奖品称呼',`url`varchar(50)DEFAULTNULLCOMMENT'图片地方',`value`varchar(20)DEFAULTNULL,`type`tinyint(4)DEFAULTNULLCOMMENT'典型1:红包2:积分3:领会金4:感谢光顾5:自设置',`status`tinyint(4)DEFAULTNULLCOMMENT'状况',`is_del`bit(1)DEFAULTNULLCOMMENT'能否简略',`position`int(5)DEFAULTNULLCOMMENT'场所',`phase`int(10)DEFAULTNULLCOMMENT'期数',`create_time`datetimeDEFAULTNULL,`update_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=164DEFAULTCHARSET=utf8mb4COMMENT='奖品表';奖品几率控制表:

CREATETABLE`points_luck_draw_probability`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`points_prize_id`bigint(20)DEFAULTNULLCOMMENT'奖品ID',`points_prize_phase`int(10)DEFAULTNULLCOMMENT'奖品期数',`probability`float(4,2)DEFAULTNULLCOMMENT'几率',`frozen`int(11)DEFAULTNULLCOMMENT'商品抽中后的冷冻度数',`prize_day_max_times`int(11)DEFAULTNULLCOMMENT'该商品平台每天最多抽中的度数',`user_prize_month_max_times`int(11)DEFAULTNULLCOMMENT'每位用户每月最多抽中该商品的度数',`create_time`datetimeDEFAULTNULL,`update_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=114DEFAULTCHARSET=utf8mb4COMMENT='抽奖几率控制表';奖品记载表:

CREATETABLE`points_luck_draw_record`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`member_id`bigint(20)DEFAULTNULLCOMMENT'用户ID',`member_mobile`varchar(11)DEFAULTNULLCOMMENT'中奖用户大哥大号',`points`int(11)DEFAULTNULLCOMMENT'耗费积分',`prize_id`bigint(20)DEFAULTNULLCOMMENT'奖品ID',`result`***allint(4)DEFAULTNULLCOMMENT'1:中奖2:未中奖',`month`varchar(10)DEFAULTNULLCOMMENT'中奖月份',`daily`dateDEFAULTNULLCOMMENT'中奖日子(不囊括功夫)',`create_time`datetimeDEFAULTNULL,`update_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3078DEFAULTCHARSET=utf8mb4COMMENT='抽奖记载表';奖品池

奖品池是按照奖品的几率和控制组建成的抽奖用的池子。重要囊括奖品的总池值和每个奖品所占的池值(分为发端值和中断值)两个维度。最新口试题整治好了,点击Java口试库小步调在线刷题。

奖品的总池值:一切奖品池值的总和。每个奖品的池值:算法不妨灵活,常用的有以次两种办法:奖品的几率*10000(保护是平头)奖品的几率10000奖品的结余数目奖品池bean:

publicclassPrizePoolimplementsSerializable{/***总池值*/privateinttotal;/***池中的奖品*/privateList<PrizePoolBean>poolBeanList;}池中的奖品bean:

publicclassPrizePoolBeanimplementsSerializable{/***数据库中如实奖品的ID*/privateLongid;/***奖品的发端池值*/privateintbegin;/***奖品的中断池值*/privateintend;}奖品池的组建代码:

/***获得超等大财主的奖品池*@paramzillionaireProductMap超等大财主奖品map*@paramflagtrue:有现款false:无现款*@return*/privatePrizePoolgetZillionairePrizePool(Map<Long,ActivityProduct>zillionaireProductMap,booleanflag){//总的奖品池值inttotal=0;List<P

猜你喜欢